時系列データ解析による予測と最適化 ~エネルギー需要、発電、 … ·...
TRANSCRIPT
1© 2015 The MathWorks, Inc.
時系列データ解析による予測と最適化~エネルギー需要、発電、価格のモデリング~
MathWorks Japan
アプリケーションエンジニアリング部 テクニカルコンピューティング
中川慶子
2
アジェンダ
需要予測:時系列データモデリング1. 機械学習 ニューラルネットワーク
データの取得
生データの前処理
ニューラルネットワークによるモデリング
2. 回帰多変量自己回帰VARモデル
非線形回帰
ARIMAモデル
VARモデル
その後の応用– リスク計量
– エクセルへの実装
3
データ解析ワークフロー
アルゴリズムの探求
データ解析
数理モデリング
x yE=V2
R
アルゴリズム開発
アプリケーション開発
結果の共有/IP化
ドキュメント生成
アプリケーション配布
組み込み開発
ファイル
コードやアプリケーション
ソフトウェア
ハードウェア
ウェブサービス
XML
JSON
HTML
データへのアクセス
4
目的:
– 過去データから未来の電力需要を予測する
変数:
1. 温度
2. 湿度
3. 時刻
4. 曜日
5. 休日・祝日フラグ
6. 前週の同時刻負荷
7. 前日の同時刻負荷
8. 前日の平均負荷
需要予測 機械学習
5
前処理構造化データをまとめる
CSV
気象データ
データベース電力
エクセル祝日情報
6
ニューラルネットワークの学習
0
0
1
0
出力層隠れ層入力層
1520.4
1251.2
1731.6
0.0057
0.1022
0.8516
0.0230
誤差逆伝搬
7
Database ToolboxODBC/JDBC 準拠の RDBMS へのアクセス
主なサポート対象データベース– IBM® DB2®
– IBM Informix®
– Ingres
– Microsoft® Access®
– Microsoft SQL Server®
– MySQL®
– Oracle®
– PostgreSQL
– Sybase®
GUIによる対話的なアクセスとSQL生成– Database Explore
8
本体の便利機能
Table 配列 変数名付データ
– 変数名を使ったデータアクセス
– innerjoin関数
ふたつのTable配列の結合:指定された変数の中で共通する値のあるデータのみを抽出し結合
例)観測時刻が同じデータのみを抽出
– セル配列や構造体に比べてサイズがコンパクト
Datetime型 演算可能な日付時刻データ
Name Size Bytes Class Attributes
Data 1495x18 3336530 cell
Name Size Bytes Class Attributes
Data 1495x18 663370 table
>> datetime('today')
ans =
2015/10/13
>> datetime('today') - calweeks(1)
ans =
2015/10/06
9
データ抽出に便利な機能
ismember関数 論理値0/1を返す
論理演算子
>> ismember([1 2 3 4],[1 3])
ans =
1 0 1 0
>> X = [1 2 3 4 5]
X =
1 2 3 4 5
>> idx = X>3
idx =
0 0 0 1 1
>> X(idx)
ans =
4 5
A>B BよりAが大きい
A>=B BがA以上
A==B AとBが等しい
A~=B AとBが等しくない
& かつ
| または
>> X = [1 2 3 4 5]
X =
1 2 3 4 5
>> idx = X>3 & X<=5
idx =
0 0 0 1 1
>> X(idx)
ans =
4 5
10
予測のステップ
ニューラルネットワーク:net = fitnet(trainX', trainY', 20);net = train(net, trainX', trainY');forecastLoad = sim(net, testX')';
決定木:Trees = TreeBagger(100, trainX, trainY);
forecastLoad = predict(trees, testX);
0.前処理1.モデルの設定2.データによる学習・フィッティング3.予測4.検証
11
MATLAB における機械学習
機械学習
教師なし学習 教師あり学習
クラスタリング 回帰 分類
線形回帰モデル
一般化線形回帰モデル
非線形回帰モデル
回帰木
アンサンブル学習
ニューラルネット
線形判別器・2次判別器
K-最近傍識別
単純ベイズ分類
決定木
アンサンブル学習
ニューラルネット
サポートベクターマシン
K-平均法
階層的クラスタリング
ニューラルネット
混合ガウス分布
自己組織化マップ
訓練データあり訓練データなし
12
アジェンダ
需要予測:時系列データモデリング1. 機械学習 ニューラルネットワーク
データの取得
生データの前処理
ニューラルネットワークによるモデリング
2. 回帰多変量自己回帰VARモデル
非線形回帰
ARIMAモデル
VARモデル
その後の応用– リスク計量
– エクセルへの実装
13
需要予測 自己回帰
目的:
新しい予測モデルの開発:
– 動的モデル
長期的な増加と減少も予測可能
時刻とともにデータを追加して予測
をアップデート
– 経済指標も考慮する
エネルギー価格、GDP、失業率など
14
時系列解析Curve Fitting Toolbox
課題:
– 長期的なエネルギー需要に変化が生じた
– 歴史的に増加をしていたエネルギー需要が減少に転じた
– 既存のモデルでは予想が困難になった
15
モデルの選択1
単変量モデル– ARIMA – Autoregressive Integrated
Moving Average
自らの過去データと移動平均に依存するモデル
– GARCH – Generalized
Autoregressive conditional
heteroskedasticity
時系列のボラティリテも含んだモデル
– 定常な時系列データに対して使える
16
Box Jenkins 法
時系列モデルによる予測の手順
1. 定常性のあるデータにする
2. ARMA(p,q)過程のpとqを決める
3. 係数パラメーターを推定する
4. 観測データを使った検証
17
概念
「定常」なデータとは?
定常: 平均と標準偏差などが時間によらず一定
非定常であるが単位根を持つとは?
– N回微分をすると定常過程になる
0 100 200 300 400 500 600 700 800 900 1000-50
0
50
100
150
200
250
300
Trend Stationary
Difference Stationary
Trend Line
18
ARIMA モデル
AR(1) with constant term
𝑦𝑡 = 𝛿 + 𝑎1𝑦𝑡−1 + 𝜖𝑡
MA(1) = moving average
𝑦𝑡 = 𝜖𝑡 + 𝑏1𝜖𝑡−1
ARMA(1,1) with constant term
𝑦𝑡 = 𝛿 + 𝑎1𝑦𝑡−1 + 𝜖𝑡 + 𝑏1𝜖𝑡−1
ARIMA(1,1,1)
– I (integrated)は微分の階数
𝑦𝑡 = 𝛿 + 𝒚𝒕−𝟏 + 𝑎1𝑦𝑡−1 + 𝜖𝑡 + 𝑏1𝜖𝑡−1
19
GARCH Model
Default model: GARCH(1,1)
12
1
2
11
2
ttt
tt
AG
Cy
標準偏差も含めた時系列モデル
),0(~
1
2
1
22
11
tt
Q
j
jtj
P
i
itit
t
M
j
jtj
R
i
itit
N
AG
byay
Generalized ARCH
MAAR
20
GARCH 効果の検証
定常性はありますか? 単位根検定 unit root test
• Augmented Dickey-Fuller 検定
• adftest
• Phillips-Perron 検定
• pptest
• KPSS 検定 (トレンド定常性)
• kpsstest
ARCH/GARCH 効果はありますか?
• Engle 検定
• archtest
• Ljung-Box Q-test
• lbqtest
21
モデルの選択
0 5 10 15 20-0.5
0
0.5
1
Lag
Sam
ple
Part
ial A
uto
corr
ela
tions PACF: Returns
0 5 10 15 20-0.5
0
0.5
1
Lag
Sam
ple
Auto
corr
ela
tion
ACF: Returns
0 5 10 15 20-0.5
0
0.5
1
Lag
Sam
ple
Part
ial A
uto
corr
ela
tions PACF: Returns2
0 5 10 15 20-0.5
0
0.5
1
Lag
Sam
ple
Auto
corr
ela
tion
ACF: Returns2
偏自己相関係数→AR項のラグ
二乗データの偏自己相関係数→ボラティリティの
MR項のラグ
二乗データの偏自己相関係数→ボラティリティの
AR項のラグ
自己相関係数→MA項のラグ
22
モデルの選択3
Vector Autoregressive (VAR)
– 多変量の時系列 (ベクトル)のモデル
1. 電力需要量
2. 月次平均最高気温
3. 月次平均最低気温
4. 人口
5. 失業率
6. GDP
– 時系列間の線形な相互依存性を利用する
23
6変量VAR(p)モデル
1. Yt は(縦)ベクトル で与えられた時系列
2. a は定数ベクトル
3. Wt は平均が 0 ベクトルで、共分散行列Q の 6 次元正規分布に従う乱数
t
t
t
t
y
y
y
y
6
5
2
1
24
モデルの選択3
Vector Autoregressive (VAR)
– 複数の時系列 (ベクトル)のモデル
1. 電力需要量
2. 月次平均最高気温
3. 月次平均最低気温
4. 人口
5. 失業率
6. GDP
– 時系列間の線形な相互依存性を利用する
25
予測のステップ
VAR:Model = vgxset('n', numel(YSeries), 'Constant', true, 'nAR', nAR, 'Series', YSeries);Fit = vgxvarx(Model, Y);FY = vgxpred(Fit, Horizon, [], Y, [], NumPaths);
ARIMA:garchMdl = garch(1,1);Model = arima(‘D’, 1, ‘Seasonality’, 12, 'MALags', 1, 'SMALags', 1, 'Variance', garchMdl); Fit = estimate(Model, Fin);FY = forecast(Fit, 12, 'Y0', Fin);
0.前処理1.モデルの設定2.データによる学習・フィッティング3.予測4.検証
26
VARモデルによる解析
Spec = vgxset('n', numel(YSeries), …'Constant', true, 'nAR', nAR, 'Series', YSeries);
Spec = vgxvarx(Spec, Y);FI = vgxproc(Spec, WX, [], Y1)
インパルス応答を見ることもできる。
27
モデルの選択
ARIMA
• Specify
• Test
• Estimate
• Simulate
• Forecast
VAR
• Specify
• Test
• Estimate
• Simulate
• Forecast
GARCH
• Specify
• Test
• Estimate
• Simulate
• Forecast
SDE
• Specify
• Simulate
データの前処理
Financial & Econometrics Toolboxes:
28
その後の応用:
燃料価格モデルの構築
発電計画最適化
リスク計量
29
Excelへの展開
MATLAB Compiler SDKによりエクセルアドインを作成して配布
30
ご紹介したツールボックス
Neural Network Toolbox
ニューラルネットワークの構築、学習
データフィッティング
クラスタリング
パターン認識
深層学習
GPUによる計算の高速化
Database Toolbox
各種データベースへの
アクセス
ODBC
JDBC
GUIを用いた対話的な
アクセスとSQLの作成
31
Financial Toolbox
ポートフォリオ分析
キャッシュフローとイールドカーブ
オプションの価格付け
確定利付証券分析
テクニカル指標
Econometric Toolbox
時系列モデル GARCH
ARIMAX
VAR
状態空間モデル
パラメータ推定
モデルの検証
Datafeed Toolbox
データサービス配信会社へのアクセス
Bloomberg, Thomson Reuters, etc.
GUIを用いた対話的なアクセス
ご紹介したツールボックス
MATLAB Compiler SDK
C/C++ 共有ライブラリの作成
.NETアセンブリの作成
Java パッケージの作成
Python パッケージの作成
サーバー向けコンポーネントの作成
インストーラーの作成
32