このセクションでは時系列モデリングに関する補足情報やチップスについて解説します。
時系列モデリングの要件
DataRobotの時系列モデリングは以下のデータ・機能に対応しています。
- モデリングデータ
- 時系列回帰・分類・異常検知に対応
- トレーニングデータは1GBまで
- 単一の時系列データで重複する値には非対応
- データの頻度はミリセカンドまで対応
- 日付型・時刻型の時間軸の特徴量が必要
- 最低35行以上のデータから対応
- モデリング
- 予測距離(予測ポイントの最初と最後までの長さ)は1000まで対応
- 平均、中央値アンサンブルに対応
- 複数時系列は10万時系列まで対応
- インサイト
- 予測の説明には非対応
- 系列の精度のインサイトは1000時系列にまで対応
- 予測
- Prime, Codegen非対応
- GUIからのバッチ予測は10MBまで対応
特徴量ごとに特徴量派生ウィンドウが異なる場合のデータセット
例えば以下のように、リアルタイムで取得できる来店数と、サーバ処理で1日遅れで利用が可能になる割引商品売上比率といった異なった特徴量派生ウィンドウを使う必要がある場合、どのような設定を行えばよいでしょうか。
図1. 派生ウィンドウが異なる特徴量
今回の例のように特徴量ごとに予測に利用できる期間が異なる場合、図2のように1日分のラグを取った特徴量を利用することで派生ウィンドウを統一でき、すべての特徴量が利用できる期間が同じデータセットへ変換します。
図2. 「割引商品売上比率」の1日分のラグをとり「昨日の割引商品売上比率」を作成
高度な時系列設定
時系列パーティショニング
オートパイロットを開始する前に高度なオプションから時系列パーティショニングを設定できます。検定の長さ、バックテスト、ホールドアウトの有無を設定できます。ギャップの長さはトレーニング期間の終了日から検定期間の開始日までの期間です。
予測したい期間に現れるであろうトレンドと同じトレンドを持つ期間をバックテストの検証期間に設定し、一番精度が良いモデルを使うといったことができます。
図3. 時系列パーティショニングの設定
その他の系列から計算された特徴量と階層モデリング
複数時系列モデリングではその他の系列から派生した特徴量をモデリングに使うことができます。例えば、店舗ごとの売上を予測する際に、平均ターゲット値で集計すると、全店舗の売上の平均が特徴量として追加されます。ターゲットの値が小さくノイズが大きいときに、その他の系列の総和を特徴量として作ることで、よりノイズの小さいシグナルを生成できます。
図4. その他の系列から計算された特徴量の生成を有効化
その他の高度な時系列設定
DataRobotではデフォルトで「指数トレンド」「差異」の処理が必要か判断し、必要に応じて自動で行いますが明示的に指定することもできます。
指数トレンド:時系列データに指数トレンドがあるとしてlog変換などの処理を行うか明示的に選択可能です。
差異:時系列データが定常でないとして明示的に差異をとると設定可能です。
図5. 指数トレンドと差異の設定
リポジトリからのブループリント実行
リポジトリタブからはオートパイロットで自動で試される以外の様々なブループリントを選択してモデルを生成することが可能です。FacebookのProphetもリポジトリから実行できます。
図6. リポジトリからのブループリント実行
図7. リポジトリの「オープンソース」タブ
APIを利用した操作
以上のモデリングの操作や予測をすべてAPIよりおこなうことが可能です。手順が決まったデータの前処理からDataRobotの操作をスクリプトによって実行することで効率的に作業を行うことができます。仕様については以下のページから確認することができます。
https://datarobot-public-api-client.readthedocs-hosted.com/en/v2.21.1/entities/time_series.html
図8. 時系列モデリングのAPIマニュアル