4
3

More than 1 year has passed since last update.

時系列分析Prophetのテスト(Cross validation)設定方法

Last updated at Posted at 2023-01-23

時系列分析ライブラリProphetのCross validationでの、各関数パラメータ設定方法👇がちょっと難しかったので、まとめておく。

cross_validationのパラメータ

テストパターンを制御するパラメータは以下。

パラメータ 意味 指定フォーマット
initial テストパターン(第1ターム)のトレーニング期間 pandas.Timedelta
period テストパターンとテストパターンのズレ pandas.Timedelta
horizon 各テストパターンの長さ pandas.Timedelta
cutoffs 各テストパターンの開始日時の直前 pandas.Timestampのリスト

イメージ👇
Image from Gyazo

重要なのはhorizonとcutoffs

この中で特に重要なパラメータは、horizoncutoffs
cutoffsで指定した各日時からhorizon分の期間をpredictしている。

Image from Gyazo

horizon

指定必須のパラメータ

cutoffs

cutoffsを指定すれば、そのまま利用される。
cutoffsを指定しなければ、initialperiodhorizonから算出される。

Image from Gyazo

cutoffsの算出方法は、

  1. 手持ちデータの最終日時からhorizonを引いた値
  2. 1からperiodを引いた値
  3. 2からperiodを引いた値
  4. 3からperiodを引いた値・・・

※手持ちデータの初日時 + initialより小さくならないところまで続く

Image from Gyazo

period

periodを指定すれば、そのまま利用される。
periodを指定しなければ、horizon × 0.5がセットされる。

Image from Gyazo

initial

cutoffsが指定されておらず、initialを指定すれば、そのまま利用される。
cutoffsが指定されておらず、initialを指定しなければ、horizon × 3がセットされる。
※ただし、horizon × 3がseasonality_dtより小さい場合、seasonality_dtがセットされる。seasonality_dtはseasonalitiesから取得され、手持ちデータから周期性を計測できる1年、1週、1日の中の最大のものを指す。例えば、5日間毎時計測した温度の時系列データであれば1日となる。

cutoffsが指定されている場合、initialには、手持ちデータの初日時からcutoffsの最初の日時までの期間がセットされる。

Image from Gyazo

performance_metricsのパラメータ

評価指標の算出単位を制御するパラメータは以下。

パラメータ 意味 指定フォーマット
rolling_window 移動平均(中央値)のターム 0から1
monthly 月単位で集計するか否か True/False

rolling_window

0.1(デフォルト)の場合、前方10%のデータから、各指標(MSE/RMSE/MAE/MAPE/MDAPE/SMAPE/COVERAGE)が算出される。

イメージ👇
Image from Gyazo

引用:Diagnostics | Prophet

horizon列でソートして、rolling_window指定値の割合分のデータでrolling meanもしくはrolling medianを算出している。

Image from Gyazo

monthly

montly = Trueとした場合、日付を月単位に変換してhorizon列に投入される。

Image from Gyazo

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3