FB Prophetで複数の変数を入力として予測を行う

質問

時系列データ予測ライブラリの「Prophet」で複数の変数を入力として予測を行うには?例えば100を超える変数を持つ過去の波形から未来を予測するなどはできる?

回答

はい,できます.Prophetではadd regressor method(.add_regressor)が提供されており,これを使うと良いです.

例えば,yを予測したい場合に変数add1と変数add2を追加することを考えてみます.先にdataframeのサンプルを作成します.

import pandas as pd
df = pd.DataFrame(pd.date_range(start="2019-09-01", end="2019-09-30", freq='D', name='ds'))
df["y"] = range(1,31)
df["add1"] = range(101,131)
df["add2"] = range(201,231)
df.head()
            ds  y   add1 add2
0   2019-09-01  1   101 201
1   2019-09-02  2   102 202
2   2019-09-03  3   103 203
3   2019-09-04  4   104 204
4   2019-09-05  5   105 205

そして,学習用と検証用に分けます.

df_train = df.loc[df["ds"]<"2019-09-21"]
df_test  = df.loc[df["ds"]>="2019-09-21"]

予測器の学習前に2つの変数を追加します.このとき使う.add_regressorに変数add1と変数add2を指定します.

from fbprophet import Prophet
m = Prophet()
m.add_regressor('add1')
m.add_regressor('add2')
m.fit(df_train)

最後に予測結果を得ます.

追加変数は、将来の(テスト)データに対する値を持っている必要があることに注意してください。もし、それがない場合は、add1 と add2 を一変量時系列で予測することから始めて、add_regressor と予測された add1 と add2 を追加変数の将来の値として、y を予測することができます。

ドキュメントによると、t+1 での y の予測は、t+1 での add1 と add2 の値のみを使用し、y と同様に t, t-1, …, t-n での値は使用しないようです。

自転車利用の予測で天候要因を追加回帰変数として使用する例については、このノートブックも参照してください。

https://stackoverflow.com/questions/54544285/is-it-possible-to-do-multivariate-multi-step-forecasting-using-fb-prophet

Uncategorized

Posted by vastee