matlab による時系列データ解析と予測...2 アジェンダ...
TRANSCRIPT
1© 2015 The MathWorks, Inc.
MATLAB®による時系列データ解析と予測
MathWorks Japan
アプリケーションエンジニアリング部 テクニカルコンピューティング
中川慶子
2
アジェンダ
需要予測:時系列データモデリング1. データの準備
データの取得
生データの前処理
2. 機械学習
非線形重回帰
ニューラルネットワーク
RNN
3. 自己回帰系モデル
ARIMA/GARCHモデル
VARモデル
3
目的:
– 過去データから未来の電力需要を予測する
変数:
1. 温度
2. 湿度
3. 時刻
4. 曜日
5. 休日・祝日フラグ
6. 前週の同時刻電力需要
7. 前日の同時刻電力需要
8. 前日の平均電力需要
需要予測
4
1.データの準備構造化データをまとめる
CSV
気象データ
データベース電力
エクセル祝日情報
5
便利ツール
Time Table– 時系列データ用テーブル
– リサンプリングと自動補完
Tall配列– メモリに入り切らないデータを逐次読み込みにより処理
– 並列分散処理対応
Signal Processing Toolbox™– 信号生成と前処理(ノイズ除去など)
– 測定と特徴抽出(ピーク検出など)
– たたみ込みと相関計算
– スペクトル解析(パワースペクトル、コヒーレンス)
フィルタ設計環境
FDATool
信号解析環境
SPTool
R2016b
R2016b
6
アジェンダ
需要予測:時系列データモデリング1. データの準備
データの取得
生データの前処理
2. 機械学習
非線形重回帰
ニューラルネットワーク
RNN
3. 自己回帰系モデル
ARIMA/GARCHモデル
VARモデル
7
目的:
– 過去データから未来の電力需要を予測する
変数:
1. 温度
2. 湿度
3. 時刻
4. 曜日
5. 休日・祝日フラグ
6. 前週の同時刻電力需要
7. 前日の同時刻電力需要
8. 前日の平均電力需要
需要予測
8
需要予測 重回帰分析
非線形重回帰分析𝑦 = 𝑏1 sin Σ𝑖𝑏𝑖𝑥𝑖 + 𝑏2sin(Σ𝑖𝑏𝑖𝑥𝑖) + 𝑏3sin(Σ𝑖𝑏𝑖𝑥𝑖)
最小二乗法を使いましたがエラーが正規分布していますか?
正規分布の検定 ttest
相関のプロット corrplot
多重共線性の検定 colintest
Statistics and Machine Learning Toolbox
Econometrics Toolbox
9
需要予測 ニューラルネットワーク
誤差逆伝搬法:ターゲット(応答)とのズレの分だけウエイトをずらす
ニューラルネットワーク:net = fitnet(20);net = train(net, trainX', trainY');forecastLoad = sim(net, testX')';
(参考)決定木:Trees = TreeBagger(100, trainX, trainY);
forecastLoad = predict(trees, testX);
Neural Network Toolbox
Statistics and Machine Learning Toolbox
10
フィードバック– 過去データも基底(変数)に含めて係数を推定する
需要予測 リカレントニューラルネットワーク
リカレントニューラルネットワーク:net = layrecnet(1:2, 10);[Xs,Xi,Ai,Ts] = preparets(net,trainXc,trainYc);net = train(net,Xs,Ts,Xi,Ai);forecastLoad = sim(net, testX', Xf, Af);
Neural Network Toolbox
11
MATLAB における機械学習
機械学習
教師なし学習 教師あり学習
クラスタリング 回帰 分類
線形回帰モデル
一般化線形回帰モデル
非線形回帰モデル
回帰木
アンサンブル学習
ニューラルネット
線形判別器・2次判別器
K-最近傍識別
単純ベイズ分類
決定木
アンサンブル学習
ニューラルネット
サポートベクターマシン
K-平均法
階層的クラスタリング
ニューラルネット
混合ガウス分布
自己組織化マップ
訓練データあり訓練データなし
12
アジェンダ
需要予測:時系列データモデリング1. データの準備
データの取得
生データの前処理
2. 機械学習
非線形重回帰
ニューラルネットワーク
RNN
3. 自己回帰系モデル
ARIMA/GARCHモデル
VARモデル
13
モデルの選択1
単変量モデル– ARIMA – Autoregressive Integrated
Moving Average
自らの過去データと移動平均に依存するモデル
– GARCH – Generalized
Autoregressive conditional
heteroskedasticity
時系列のボラティリテも含んだモデル
– 定常な時系列データに対して使える
14
「定常性」のあ
るデータにする
ARとMA過程
ラグを決める
係数パラメータ
を推定する
観測データを
使った検証
Box Jenkins 法
時系列モデルによる予測の手順
15
1. 定常性などの検証
定常性はありますか? 単位根検定 unit root test
• Augmented Dickey-Fuller 検定
• adftest
• Phillips-Perron 検定
• pptest
• KPSS 検定 (トレンド定常性)
• kpsstest
ARCH/GARCH 効果はありますか?
• Engle 検定
• archtest
• Ljung-Box Q-test
• lbqtest
「定常性」のあるデータにする
Econometrics Toolbox
16
概念
「定常」なデータとは?
定常: 平均と標準偏差などが時間によらず一定
非定常であるが単位根を持つとは?
– 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
「定常性」のあるデータにする
17
2. ラグ次数を決める
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項のラグ
ARとMA過程ラグを決める
Econometrics Toolbox
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 − 𝑦𝑡−2) + 𝜖𝑡 + 𝑏1𝜖𝑡−1
ARとMA過程ラグを決める
19
GARCH Model
Default model: GARCH(1,1)
12
1
2
11
2
ttt
tt
AG
Cy
標準偏差も含めた時系列モデル
),0(~ 2
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
ARとMA過程ラグを決める
20
アジェンダ
需要予測:時系列データモデリング1. データの準備
データの取得
生データの前処理
2. 機械学習
非線形重回帰
ニューラルネットワーク
RNN
3. 自己回帰系モデル
ARIMA/GARCHモデル
VARモデル
21
モデルの選択3
Vector Autoregressive (VAR)
– 複数の時系列 (ベクトル)のモデル
1. 電力需要量
2. 月次平均最高気温
3. 月次平均最低気温
4. 人口
5. 失業率
6. GDP
– 時系列間の線形な相互依存性を利用する
22
6変量VAR(p)モデル
1. Yt は(縦)ベクトル で与えられた時系列
2. a は定数ベクトル
3. Wt は平均が 0 ベクトルで、共分散行列Q の 6 次元正規分布に従う乱数
t
t
t
t
y
y
y
y
6
5
2
1
23
モデルの選択3
Vector Autoregressive (VAR)
– 複数の時系列 (ベクトル)のモデル
1. 電力需要量
2. 月次平均最高気温
3. 月次平均最低気温
4. 人口
5. 失業率
6. GDP
– 時系列間の線形な相互依存性を利用する
– 多重共線性に注意
– スケーリングに注意
24
予測のステップ
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.検証
Econometrics Toolbox
25
VARモデルによる解析
Spec = vgxset('n', numel(YSeries), …'Constant', true, 'nAR', nAR, 'Series', YSeries);
Spec = vgxvarx(Spec, Y);FI = vgxproc(Spec, WX, [], Y1)
各時系列の標準偏差を設定することでインパルス応答を見ることもできる。
Econometrics Toolbox
26
まとめ 時系列データ解析
一変量 多変量
非定常 確率微分方程式回帰分析※NARX
機械学習決定木などニューラルネットワーク
RNN
重回帰分析※
定常 ARIMA
GARCH
VAR
※エラーが正規分布している場合
黒:Financial Toolbox
青:Statistics and Machine Learning Toolbox
茶:Neural Network Toolbox
紫:Econometrics Toolbox
27
ご紹介したツールボックス
Neural Network Toolbox
ニューラルネットワークの構築、学習
データフィッティング
クラスタリング
パターン認識
深層学習
GPUによる計算の高速化
Database Toolbox
各種データベースへの
アクセス
ODBC
JDBC
GUIを用いた対話的な
アクセスとSQLの作成
Econometric Toolbox
時系列モデル GARCH
ARIMAX
VAR
状態空間モデル
パラメータ推定
モデルの検証