はじめに
よくNNや各種機械学習の手法で時系列解析をやってみたという記事をよく見かけますが、そのほとんどが予測値の算出方法を誤っているように感じます。
学習したモデルに対して元データのたった1ステップ先しか予測していないことが多いのです。
タイムステップが極めて大きい解析対象であればかまいませんが、わずか1ステップの出来事を予測してうれしい場面が果たしてあるのでしょうか。
当然、数十ステップ先を予測することに時系列予測の意義があります。
モデルの出力を加えた入力データを次の予測に利用する再帰的な計算過程を意識する必要があります。
データを時系列としてとらえることの意義は
明示的に得られていないデータの特徴をデータの並び順から見出す
この一言に尽きます。
ARIMA系
Random Forest
RNN系
Deconposable TS Model (Harvey+ ’90)
y(t) = g(t) + s(t) + h(t) + ε(t)
g(t): 成⻑関数 (growth)
s(t): 周期性 (seasonality)
h(t): 祝⽇効果 (holiday)
ε(t): 誤差 (正規分布を仮定)
実装
fbprophetというfacebook社が提供しているAPIが便利です
1.Generate Quick and Accurate Time Series Forecasts using Facebook’s Prophet (with Python & R codes) - fbprophetを利用
2.Prophet入門【Python編】Facebookの時系列予測ツール