MATLAB による時系列データ解析と予測 MahWorks Japan アプリケーションエンジニアリング部テクニカルコンピューティング 中川慶子 2015 The MahWorks, Inc. 1
アジェンダ 需要予測 : 時系列データモデリング 1. データの準備 データの取得 生データの前処理 2. 機械学習 非線形重回帰 ニューラルネットワーク RNN 3. 自己回帰系モデル ARIMA/GARCHモデル VARモデル 2
需要予測 目的 : 過去データから未来の電力需要を予測する 変数 : 1. 温度 2. 湿度 3. 時刻 4. 曜日 5. 休日 祝日フラグ 6. 前週の同時刻電力需要 7. 前日の同時刻電力需要 8. 前日の平均電力需要 3
1. データの準備構造化データをまとめる CSV 気象データ エクセル祝日情報 データベース電力 4
便利ツール Time Table 時系列データ用テーブル リサンプリングと自動補完 Tall 配列 R2016b R2016b メモリに入り切らないデータを逐次読み込みにより処理 並列分散処理対応 Signal Processing Toolbox 信号生成と前処理 ( ノイズ除去など ) 測定と特徴抽出 ( ピーク検出など ) たたみ込みと相関計算 スペクトル解析 ( パワースペクトル コヒーレンス ) 信号解析環境 SPTool フィルタ設計環境 FDATool 5
アジェンダ 需要予測 : 時系列データモデリング 1. データの準備 データの取得 生データの前処理 2. 機械学習 非線形重回帰 ニューラルネットワーク RNN 3. 自己回帰系モデル ARIMA/GARCHモデル VARモデル 6
需要予測 目的 : 過去データから未来の電力需要を予測する 変数 : 1. 温度 2. 湿度 3. 時刻 4. 曜日 5. 休日 祝日フラグ 6. 前週の同時刻電力需要 7. 前日の同時刻電力需要 8. 前日の平均電力需要 7
需要予測重回帰分析 非線形重回帰分析 y = b 1 sin Σ i b i x i + b 2 sin(σ i b i x i ) + b 3 sin(σ i b i x i ) 相関のプロット corrplo 多重共線性の検定 colines Economerics Toolbox 最小二乗法を使いましたがエラーが正規分布していますか? 正規分布の検定 es Saisics and Machine Learning Toolbox 8
需要予測ニューラルネットワーク 誤差逆伝搬法 : ターゲット ( 応答 ) とのズレの分だけウエイトをずらす ニューラルネットワーク : ne = fine(20); ne = rain(ne, rainx', rainy'); forecasload = sim(ne, esx')'; Neural Nework Toolbox ( 参考 ) 決定木 : Trees = TreeBagger(100, rainx, rainy); forecasload = predic(rees, esx); Saisics and Machine Learning Toolbox 9
需要予測リカレントニューラルネットワーク フィードバック 過去データも基底 ( 変数 ) に含めて係数を推定する リカレントニューラルネットワーク : ne = layrecne(1:2, 10); [Xs,Xi,Ai,Ts] = prepares(ne,rainxc,rainyc); ne = rain(ne,xs,ts,xi,ai); forecasload = sim(ne, esx', Xf, Af); Neural Nework Toolbox 10
MATLAB における機械学習 訓練データなし 教師なし学習 機械学習 訓練データあり 教師あり学習 クラスタリング回帰分類 K- 平均法階層的クラスタリングニューラルネット混合ガウス分布自己組織化マップ 線形回帰モデル一般化線形回帰モデル非線形回帰モデル回帰木アンサンブル学習ニューラルネット 線形判別器 2 次判別器 K- 最近傍識別単純ベイズ分類決定木アンサンブル学習ニューラルネットサポートベクターマシン 11
アジェンダ 需要予測 : 時系列データモデリング 1. データの準備 データの取得 生データの前処理 2. 機械学習 非線形重回帰 ニューラルネットワーク RNN 3. 自己回帰系モデル ARIMA/GARCHモデル VARモデル 12
モデルの選択 1 単変量モデル ARIMA Auoregressive Inegraed Moving Average 自らの過去データと移動平均に依存するモデル GARCH Generalized Auoregressive condiional heeroskedasiciy 時系列のボラティリテも含んだモデル 定常な時系列データに対して使える 13
Box Jenkins 法 時系列モデルによる予測の手順 定常性 のあ AR と MA 過程 係数パラメータ 観測データを るデータにする ラグを決める を推定する 使った検証 14
1. 定常性などの検証 Economerics Toolbox 定常性はありますか? 単位根検定 uni roo es Augmened Dickey-Fuller 検定 adfes Phillips-Perron 検定 ppes KPSS 検定 ( トレンド定常性 ) kpsses 定常性 のあるデータにする ARCH/GARCH 効果はありますか? Engle 検定 arches Ljung-Box Q-es lbqes 15
概念 定常性 のあるデータにする 定常 なデータとは? 定常 : 平均と標準偏差などが時間によらず一定 非定常であるが単位根を持つとは? N 回微分をすると定常過程になる 300 250 Trend Saionary Difference Saionary Trend Line 200 150 100 50 0-50 0 100 200 300 400 500 600 700 800 900 1000 16
Sample Parial Auocorrelaions Sample Auocorrelaion Sample Parial Auocorrelaions Sample Auocorrelaion 2. ラグ次数を決める Economerics Toolbox AR と MA 過程ラグを決める 偏自己相関係数 AR 項のラグ 1 0.5 PACF: Reurns 1 0.5 ACF: Reurns 自己相関係数 MA 項のラグ 0 0-0.5 0 5 10 15 20 Lag PACF: Reurns 2 1-0.5 0 5 10 15 20 Lag ACF: Reurns 2 1 二乗データの偏自己相関係数 分散の AR 項のラグ 0.5 0-0.5 0 5 10 15 20 Lag 0.5 0-0.5 0 5 10 15 20 Lag 二乗データの自己相関係数 分散の MR 項のラグ 17
ARIMA モデル AR と MA 過程ラグを決める AR(1) wih consan erm y = δ + a 1 y 1 + ε ARIMA(1,1,1) I (inegraed) は微分の階数 y y 1 = δ +a 1 (y 1 y 2 ) + ε + b 1 ε 1 MA(1) = moving average y = ε + b 1 ε 1 ARMA(1,1) wih consan erm y = δ + a 1 y 1 + ε + b 1 ε 1 18
19 GARCH Model Defaul model: GARCH(1,1) 1 2 1 2 1 1 2 A G C y 標準偏差も含めた時系列モデル ) (0, ~ 2 1 2 1 2 2 1 1 Q j j j P i i i M j j j R i i i N A G b y a y Generalized ARCH MA AR AR と MA 過程ラグを決める
アジェンダ 需要予測 : 時系列データモデリング 1. データの準備 データの取得 生データの前処理 2. 機械学習 非線形重回帰 ニューラルネットワーク RNN 3. 自己回帰系モデル ARIMA/GARCHモデル VARモデル 20
モデルの選択 3 Vecor Auoregressive (VAR) 複数の時系列 ( ベクトル ) のモデル 1. 電力需要量 2. 月次平均最高気温 3. 月次平均最低気温 4. 人口 5. 失業率 6. GDP 時系列間の線形な相互依存性を利用する 21
22 6 変量 VAR(p) モデル 1. Y は ( 縦 ) ベクトルで与えられた時系列 2. a は定数ベクトル 3. W は平均が 0 ベクトルで 共分散行列 Q の 6 次元正規分布に従う乱数 y y y y 6 5 2 1
モデルの選択 3 Vecor Auoregressive (VAR) 複数の時系列 ( ベクトル ) のモデル 1. 電力需要量 2. 月次平均最高気温 3. 月次平均最低気温 4. 人口 5. 失業率 6. GDP 時系列間の線形な相互依存性を利用する 多重共線性に注意 スケーリングに注意 23
予測のステップ Economerics Toolbox 0. 前処理 1. モデルの設定 2. データによる学習 フィッティング 3. 予測 4. 検証 ARIMA: garchmdl = garch(1,1); Model = arima( D, 1, Seasonaliy, 12, 'MALags', 1, 'SMALags', 1, 'Variance', garchmdl); Fi = esimae(model, Fin); FY = forecas(fi, 12, 'Y0', Fin); VAR: Model = vgxse('n', numel(yseries), 'Consan', rue, 'nar', nar, 'Series', YSeries); Fi = vgxvarx(model, Y); FY = vgxpred(fi, Horizon, [], Y, [], NumPahs); 24
VAR モデルによる解析 Economerics Toolbox Spec = vgxse('n', numel(yseries), 'Consan', rue, 'nar', nar, 'Series', YSeries); Spec = vgxvarx(spec, Y); FI = vgxproc(spec, WX, [], Y1) 各時系列の標準偏差を設定することでインパルス応答を見ることもできる 25
まとめ時系列データ解析 非定常 定常 一変量 確率微分方程式回帰分析 NARX ARIMA GARCH 多変量 機械学習決定木などニューラルネットワーク RNN 重回帰分析 VAR エラーが正規分布している場合 黒 :Financial Toolbox 青 :Saisics and Machine Learning Toolbox 茶 :Neural Nework Toolbox 紫 :Economerics Toolbox 26
ご紹介したツールボックス Neural Nework Toolbox ニューラルネットワークの構築 学習 データフィッティング クラスタリング パターン認識 深層学習 GPU による計算の高速化 Daabase Toolbox 各種データベースへのアクセス ODBC JDBC GUI を用いた対話的なアクセスと SQL の作成 Economeric Toolbox 時系列モデル GARCH ARIMAX VAR 状態空間モデル パラメータ推定 モデルの検証 27