時系列分析ライブラリProphetのCross validationでの、各関数パラメータ設定方法👇がちょっと難しかったので、まとめておく。
cross_validationのパラメータ
テストパターンを制御するパラメータは以下。
パラメータ | 意味 | 指定フォーマット |
---|---|---|
initial | テストパターン(第1ターム)のトレーニング期間 | pandas.Timedelta |
period | テストパターンとテストパターンのズレ | pandas.Timedelta |
horizon | 各テストパターンの長さ | pandas.Timedelta |
cutoffs | 各テストパターンの開始日時の直前 | pandas.Timestampのリスト |
重要なのはhorizonとcutoffs
この中で特に重要なパラメータは、horizonとcutoffs
cutoffsで指定した各日時からhorizon分の期間をpredictしている。
horizon
指定必須のパラメータ
cutoffs
cutoffsを指定すれば、そのまま利用される。
cutoffsを指定しなければ、initialとperiodとhorizonから算出される。
cutoffsの算出方法は、
- 手持ちデータの最終日時からhorizonを引いた値
- 1からperiodを引いた値
- 2からperiodを引いた値
- 3からperiodを引いた値・・・
※手持ちデータの初日時 + initialより小さくならないところまで続く
period
periodを指定すれば、そのまま利用される。
periodを指定しなければ、horizon × 0.5がセットされる。
initial
cutoffsが指定されておらず、initialを指定すれば、そのまま利用される。
cutoffsが指定されておらず、initialを指定しなければ、horizon × 3がセットされる。
※ただし、horizon × 3がseasonality_dtより小さい場合、seasonality_dtがセットされる。seasonality_dtはseasonalitiesから取得され、手持ちデータから周期性を計測できる1年、1週、1日の中の最大のものを指す。例えば、5日間毎時計測した温度の時系列データであれば1日となる。
cutoffsが指定されている場合、initialには、手持ちデータの初日時からcutoffsの最初の日時までの期間がセットされる。
performance_metricsのパラメータ
評価指標の算出単位を制御するパラメータは以下。
パラメータ | 意味 | 指定フォーマット |
---|---|---|
rolling_window | 移動平均(中央値)のターム | 0から1 |
monthly | 月単位で集計するか否か | True/False |
rolling_window
0.1(デフォルト)の場合、前方10%のデータから、各指標(MSE/RMSE/MAE/MAPE/MDAPE/SMAPE/COVERAGE)が算出される。
horizon列でソートして、rolling_window指定値の割合分のデータでrolling meanもしくはrolling medianを算出している。
monthly
montly = Trueとした場合、日付を月単位に変換してhorizon列に投入される。