複数系列モデリング¶
備考
以下の日付/時刻のパーティショニングの追加の注意事項を参照してください。
複数系列モデリングでは、入力特徴量の共通セットに基づいて、複数の時系列を含むデータセットのモデリングを行えます。 これは、各行がどの系列に属するかを示すラベルの1つの列を含み、複数の時系列データベースで構成されると考えることのできるデータセットです。 この列は、系列ID列と呼ばれます。
ヒント
DataRobotが複数の系列を検出した場合は、複数系列またはセグメント化されたモデリングを使用した複数系列のどちらが必要かを検討してください。 セグメント化されたモデリングを選択した場合、DataRobotはセグメントごとにモデルの個別のセットを作成します(その後、セグメントごとに最適なモデルを自動的に組み合わせて単一のデプロイを作成します)。 セグメント化されたモデリングを選択しない場合、DataRobotはデータセットからすべての系列を表す単一のモデルを作成します。
DataRobotでは、選択したプライマリの日付特徴量が単一系列モデリングの条件を満たさない場合に複数系列モデリングの使用が自動的に推奨されます。 たとえば、タイムスタンプが一意でない場合や、タイムスタンプの間隔が均等でない場合などに、この処理が行われます。 系列ID特徴量に基づいて行をグループ化することによって、DataRobotで各グループを個別の時系列として処理できます。
チェーン店の複数の店舗の売り上げを示す次のサンプルでは、列store_id
が複数系列モデリングの共通識別子として使用されます。
store_id, timestamp, target, input1, …
1 2017-01-01, 1.23, AC,
1 2017-01-02, 1.21, AB,
1 2017-01-03, 1.21, BC,
1 2017-01-04, 1.23, B,
...
2 2017-01-03, 1.22, CBC,
2 2017-01-04, 1.23, AAB,
2 2017-01-05, 1.22, CA,
2 2017-01-06, 1.23, BAC,
...
複数系列モデリングに関するDataRobotのいくつかの機能:
-
複数系列が必要な場合がDataRobotで自動的に検出され、以下に説明する複数系列モデリングのワークフローが提供されます。 複数の系列が存在する場合、またはDataRobotで系列が検出されない場合があるので、系列IDを手動で割り当てることができます。
-
連続値プロジェクトでは、複数系列プロジェクトのすべての系列にわたるターゲット値を集計し、集計列のラグおよび統計を自動的に生成できます。 この機能は、高度なオプション > 時系列で有効にします。
-
時間経過に伴う特徴量および時系列の精度による視覚化では、データセット内または複数の系列内の1つの系列に基づくインサイトが1つのビューで提供されます。
複数系列での特徴量派生
DataRobotが複数系列データセットで 特徴量派生プロセスを実行する場合、データセットから最長の系列10個を選択し、これらの系列の最小日付と最大日付を使用して、派生時にグローバルに適用する最小日付と最大日付を決定します。 これらの日付以外の変換対象データは、モデリングプロセスでは使用されません。 これは、適用された日付がパーティショニングの一部として以前に選択されていた場合でも同じです。 その結果、あたかもデータが切り捨てられたかのように見えます。
グローバル履歴全体が特徴量の変換とモデリングに確実に使用されるようにするには、トレーニングデータセットの全日付範囲にわたる日付を含む系列が1つ以上あることを確認してください。
以下に示す複数系列モデリングを使用するサンプルのユースケースを参照してください。 複数系列固有のサンプリングの説明も参照してください。
系列IDを設定する¶
時系列モデリングを使用する場合、DataRobotはヒューリスティックを実行して、データに同じタイムスタンプの行が複数存在するかどうかが検出されます。 複数の系列が検出された場合、複数系列のワークフローが開始されます。
-
DataRobotで識別された系列識別子をクリック(1)するか、既知の系列の有効な列名を手動で入力(2)して、系列識別子を選択します。
-
選択したら、一意のインスタンスの数を確認して系列IDを設定をクリックします。
または、戻るを選択して、時間認識モデルタイプの選択に戻ります。
-
系列IDを変更する場合は、系列IDの鉛筆アイコンをクリックして系列IDの選択画面に戻ります。
または、高度なオプションの時系列タブから識別子を変更します。
-
系列IDが正しい場合:
- 時系列構成の手順に戻って、プロジェクトのセットアップを完了します。
- (オプション)セグメント化されたモデリングを設定します。
モデル構築が完了したら、リーダーボードから使用できる時系列固有の視覚化機能でモデルを評価します。 複数系列モデリングの場合、これらの機能は、データセット内または複数系列内の個々の系列に基づくインサイトを単一ビューで提供します。
高度なオプションから系列IDを設定する¶
DataRobotでデータ内に複数の系列が検出されない場合、手動で系列IDを設定することができます。系列IDが有効な場合は、複数系列モデリングを使用できます。 系列IDを手動で設定するには:
-
時系列モデリングを選択した後、高度なオプションを表示リンクを展開して、時系列タブを選択します。
-
複数の時系列を使用を促すセグメントで、系列IDを設定をクリックします。
-
有効な系列識別子を手動で入力します。
-
検定されたら後、時系列設定ステップに戻ってプロジェクトのセットアップを完了します。
系列IDの検定条件¶
系列IDに使用する特徴量は、以下の条件を満たす必要があります。
- ターゲットまたはプライマリーの日付/時刻特徴量ではない。
- 特徴量の型は、数値、カテゴリー、またはテキストである必要がある。
- 小数を含む複雑なfloat値は許可されていない。
- 各系列グループ内のタイムスタンプは一意である。
- 各グループ内のタイムスタンプに規則的な時間ステップがある。
複数系列カレンダー¶
カレンダーファイルには、DataRobotで時系列特徴量を派生させるために使用するデータセットに関連するイベントのリストが含まれます。 時系列の精度チャートでは、タイムラインと共にカレンダーイベントが視覚化されます。カーソルを上に置くとホバーヘルプが表示され、系列固有のイベントが識別されます。
複数系列プロジェクトの場合、カレンダーファイルの3番目の列はイベントが適用される系列を識別します。 空白の場合はデータセットのすべての系列に適用されます。 たとえば、次のカレンダーファイルには、米国の休日がリストされています。いくつかの休日は特定の州に適用され、その他の休日はすべての州に適用されます。
date,holiday,state
2019-01-01,New Year's Day
2019-01-18,Lee-Jackson Day,Virginia
2019-01-21,Martin Luther King, Jr. Day
2019-02-18,Washington's Birthday
2019-03-17,Evacuation Day,Massachusetts
2019-03-18,Evacuation Day (Observed),Massachusetts
2019-05-27,Memorial Day
2019-07-04,Independence Day
2019-09-02,Labor Day
.
.
.
ID列(3番目の列)のエントリはデータセットの系列識別子列に一致する必要があります。 データセットの系列IDを変更する場合、カレンダーファイルを再度アップロードする必要があります。 カレンダーの条件の完全なリストについては、こちらを参照してください。
複数系列プロジェクトでのサンプリング¶
時系列はサンプリングを使用して、管理可能で最適化されたモデリングデータセットを確保します。 ただし、複数系列プロジェクトでは、系列評価に十分なデータを確保するために、多少異なるアプローチが必要です。 その結果、サンプルデータはモデリングとモデル評価に使用されますが、複数系列プロジェクトのインサイト(系列のインサイト、時系列の精度、および 予測値と実測値)はサンプリングされません。
下記を例に説明します。
- 基本データセットは約420万行です。
- 160の異なる系列があります。
- 系列は非常に長い日付範囲をカバーしています。
OTVプロジェクトとして実行する場合、行の100%がモデリングプロセスで使用されます。 時系列プロジェクトとして実行すると、データセットは約62倍の2億6000万行に増加します。 この理由は、各系列が個別に扱われ、指定されたトレーニングウィンドウにすべての予測距離(予測ウィンドウ内)を含める必要があるためです。 その結果、(予測距離に基づいて)次の数値が得られます。
予測距離 | 派生した行 | 使用される行 | 全体の% |
---|---|---|---|
OTV(FDはN/A) | 4,184,841 | 4,184,841 | 100% |
1-5 | 13,030,580 | 3,498,680 | 26.85% |
1-10 | 26,061,160 | 3,493,940 | 13.41% |
1-100 | 260,611,600 | 3,010,900 | 1.16% |
最終的に、(サンプリングのが適用後)OTVプロジェクトと複数系列プロジェクトに使用されるデータの量はほとんど同じでした。 つまり、複数系列はOTVの約70~80%の合計行で開始されましたが、派生プロセスによって多くの新しい列が追加され、サイズ制限がトリガーされました。
複数系列の場合、最終的には各系列のデータのサンプルが非常に少なくなる可能性があります。 その割合のデータが各系列からランダムに選択され、ブループリントではモデルを構築する各系列のほんの一部だけが参照されます。 対照的に、OTVは系列を区別しません。系列ID列は、モデルが学習するもう1つの機能です。 その結果、OTVモデルは、各系列のすべてのデータから学習できます。
データセットとプロジェクトの設定が過剰なサンプリングレベルにつながる場合は、プロジェクトまたはモデリングアプローチを再設定してみてください。 たとえば、非常に長い予測ウィンドウを小さなセグメントに分割し、セグメントごとにDataRobotプロジェクトを作成できます。 さらに、データは複数系列プロジェクトで、多くの系列を持つデータセットの同様のクラスターにセグメント化できます。
あるいは、派生から除外することで、使用する列の数や、ラグ特徴量として役立つ可能性が低い列の数を減らすこともできます。 最後に、トレーニングセットの長さを検討してください。 最も古いデータを除外するためにトレーニングデータの期間を短縮すると、モデリングの精度が向上し、データセットのサンプリングが減少することがあります。
複数系列のユースケース¶
販売の予測と店舗の比較:
大手チェーン店が、在庫を正しく把握し、予測された在庫量に必要な人員を店舗に配置するために予測を作成することを検討している場合を考えてみます。店舗を管理するアナリストは、DataRobotを使用して、毎日の販売量を予測する時系列モデルを構築します。最初に、アナリストは時系列における販売の分布に注目してトレンドを把握します。データの量は膨大なので、モデル構築の前にデータが正しいことをレビューして確認するために、データ範囲スライダーを使用して、過去数週間のデータだけにズームインします。
ターゲットと時系列オプションを設定した後、「開始」をクリックして時系列特徴量を生成し、オートパイロットを実行します。1~7日先の予測ウィンドウでオートパイロットを実行した後、リーダーボードでパフォーマンスが最も優れたモデルの時系列の精度チャートを確認して、メインの検定セットでのモデルのパフォーマンスをチェックします(バックテスト1)。全体的なビューを確認し、系列識別子を切り替えて各店舗の情報を参照します。次に、直近の履歴をアップロードして、翌週の各系列の売上を予測します。その後、予測をダウンロードし、それを使って翌週分の適切な在庫量を発注します。