ゆるオタクの生活改善メモ帳

仕事メモとライフハック。あらゆるものを効率化してダラダラする時間を増やしたい。

Prophet利用方法

お手軽に時系列分析出来るProphtについての導入記事です。

前提

ver0.2 (2017/9/22時点)で記事を書いています。

参考資料

Prophetってなに?

  • Facebook社製のFacebookビジネス予測に最適化されたパッケージ。
    • 容易に時系列分析ができる
    • 年周期成分、週周期成分の要素分解ができる
    • 不規則な間隔で発生する休日の考慮ができる

導入方法

conda install -c conda-forge fbprophet

※2017/9/26現在ではAnacondaのfbprohetがver0.1.1なのでpip install推奨 一回エラー出るかもしれないけど、pystanが入ればインストール成功します。

pip install fbprophet

利用方法

【例】

DS Y
2007-12-10 250
2007-12-11 128

パラメタ調整

ver0.2に上がって色々パラメタが増えてるヤッタネ!!!

季節性調整

https://facebookincubator.github.io/prophet/docs/seasonality_and_holiday_effects.html →Specifying Seasonalities参照

  • 年周期がある場合、yearly_seasonalityを設定(defaultでTrue)
m = Prophet(yearly_seasonality=True)
forecast = m.fit(df).predict(future)
  • 週周期がある場合、weekly_seasonalityを設定(defaultでTrue)
m = Prophet(weekly_seasonality=True)
forecast = m.fit(df).predict(future)
  • 月周期とか隔週周期とか入れたい場合はadd_seasonalityを利用
m = Prophet(weekly_seasonality=False)
m.add_seasonality(name='monthly', period=30.5, fourier_order=5)
forecast = m.fit(df).predict(future)

祝日・イベント調整

https://facebookincubator.github.io/prophet/docs/seasonality_and_holiday_effects.html →Modeling Holidays and Special Events参照

  • holidaysパラメタにデータを渡す。
m = Prophet(holidays=holidays)
forecast = m.fit(df).predict(future)
  • 注意点
    • モデルに食わせるデータ形式は以下の通り。カラム名のヘッダ変えないこと。
    • 特定の祝日(みどりの日敬老の日等)によらない全般的な祝日効果を考慮したい場合はholidayを全部同じ名前にしてあげるといいです。
    • lower_window、upper_windowは影響する前後の日付
      • 下記の例だとクリスマスはクリスマスイブでもクリスマスの影響があるとしてlower_windowを-1としています。

【例】

holiday ds lower_window upper_window
キャンペーン 2017-12-23 -7 7
クリスマス 2017-12-25 -1 0

prior_scaleとかadd_regressor は時間ができたら調べる…

検証