複数系列のセグメント化されたモデリング¶
通常、複雑で精度の高い需要予測を行うためには、統計に関する深いノウハウと長期にわたるビッグデータ・アーキテクチャに関する開発プロジェクトが必要となります。 セグメント化されたモデリングがあるDataRobotの複数系列は、複数のプロジェクトを「内部で」作成することでこの要件を自動化します。セグメントが識別および構築されると、それらはマージされて単一オブジェクト(結合モデル)を作成します。 これにより、モデルのパフォーマンスが向上し、デプロイまでの時間が短縮されます。
セグメント化されたモデリングを使用すると、DataRobotは、各セグメントに完全なプロジェクトを作成します。フルパイロットまたはクイックパイロットを実行してから、デプロイに推奨されるモデルを選択(および準備)します。 ( 手動モードでセグメント化されたモデリングを使用する場合の備考を参照してください。) DataRobotは、推奨されたモデルを「セグメントチャンピオン」としてマークしますが、いつでも チャンピオンを再割り当てできます。
備考
DataRobotは、各セグメントにプロジェクトを作成しますが、これらのプロジェクトはプロジェクト管理センターから使用できません。 代わりに、それらはプロジェクト管理センターで使用可能な結合モデル内から調査および管理されます。
DataRobotは、各セグメントチャンピオンを組み込んで結合モデル(すべてのセグメントの収集ポイントとして機能するメインアンブレラプロジェクト)を作成します。 結果として、「ワンモデル」デプロイ(セグメントプロジェクト)が得られます。各セグメントには、バックグラウンドのデプロイで実行される独自のモデルがあります。
セグメント化されたモデリングはいくつかの問題(モデルファクトリー、複数のデプロイ)を解決しますが、最も注意するセグメントまたは最もROIが高いものを認識できません。 成功するためには、バリュートラッカーを正しく定義して、データセットを設定し、セグメントを定義する必要があります。
詳細については、セグメントモデリングに関してよくある質問を参照してください。 セグメント化されたモデリングを使用する理由の迅速な表現については、視覚的な概要を参照してください。
複数系列連続値プロジェクトではセグメンテーション付きのモデリングが使用できます。
セグメント化されたモデリングのワークフロー¶
時系列セグメントモデリングでは、まずデータセットを分割するセグメント定義を行う必要があります。 セグメントを定義するには、DataRobotで次のことを実行します。
- データ内の クラスターを検出し、それらのクラスターをセグメントとして使用します。
- 設定されたセグメントIDに基づいてセグメントを割り当てます。
セグメント化されたモデリングプロジェクトを構築するには:
-
標準時系列ワークフローに従って、ターゲットを設定し、時間認識モデリングをオンにします。 モデリング方法として自動時系列予測を選択します。
-
系列識別子を設定することにより、複数系列モデリングを有効にします。
-
鉛筆をクリックして、セグメンテーション方法を設定します。
-
セグメント化されたモデリングを有効にするかどうかを設定します。
- セグメント化されたモデリングを有効にするには、はい、セグメントごとにモデルを構築しますを選択します。 選択すると、セグメントがどのように定義されるかも設定する必要があります。
- 前の時系列予測ウィンドウに戻るには、いいえ、セグメント化せずにモデルを構築するを選択します。 セグメント化されたモデリングを行なわない場合、DataRobotは、検出されたすべての系列(通常の複数系列)向けに1つのモデルを構築します。
-
セグメントの定義方法を設定します。 以下の表では、各オプションについて説明します。
オプション 説明 ID列 DataRobotがセグメントIDとして使用するトレーニングデータセットから列を選択します。 列名の入力を開始して、一致する自動補完選択を表示するか、DataRobotが識別した識別子から選択します。 セグメントIDは系列IDとは異なる必要があります(以下の備考を参照)。 既存のクラスタリングモデル モデルレジストリに 以前に保存したクラスタリングモデルを使用します。 新しいクラスタリングモデル ヘルプテキストの時系列クラスタリングのリンクをクリックして、後で結果を既存のクラスタリングモデルオプションを介して適用し、新しいクラスタリングプロジェクトを開始します。 セグメントごとに1つの系列が必要な場合
セグメントIDと系列IDに指定する列を同じにすることはできませんが、系列IDの列を複製して、新しい名前を付けることはできます。 したがって、セグメントIDを新しい列名に設定します(セグメントはどのように定義されていますかセクションを使用)。 DataRobotは系列IDを使用してセグメントを生成します。
-
方法を選択したら、IDを設定するか、既存のクラスタリングモデルを選択して、セグメンテーション方法を設定をクリックします。 時系列予測ウィンドウは、選択された系列とセグメントの変更など、設定(トレーニングウィンドウ、期間、KA、カレンダー選択)を続けることができます。
クラスタリングが使用された場合、トレーニング期間はどのように決定されますか?
検出済みクラスターを使用してセグメント化されたモデルを構築し、データセットを子プロジェクト(セグメント)に分割する場合、DataRobotは、トレーニングウィンドウの設定をクラスタリングプロジェクトからセグメント化されたモデリングプロジェクトに適用します。 これにより、セグメント化されたモデリングのホールドアウトが保護され、セグメント化されたデータセットを子プロジェクトに分割するときにクラスタリングモデルからのデータリーケージが防止されます。 各系列の開始日と終了日を使用して、方法に影響を与える一般的なシナリオを見てみましょう。
- 系列データに(クラスタリングプロジェクトで定義されているように) 必要な時間ウィンドウが含まれている場合、DataRobotは単に系列データを渡します。
- クラスタリングトレーニング終了前の系列データ:フルトレーニングウィンドウよりも短く、ホールドアウトを超える系列がある場合、DataRobotは、トレーニング期間のサイズ(トレーニング境界内に存在する部分のみ)であるクラスタリング終了前のデータポイントのみを使用します。
- 系列データには、クラスタリングトレーニング終了時よりも古い時点のデータのみが含まれます:トレーニングウィンドウに収まらないレガシー系列のデータがある場合、DataRobotは「スライドバック」し、トレーニングウィンドウの 期間中 のデータを再度収集して、使用できるようにセグメント化して失われないようにします。
- 系列データは、クラスタリングトレーニングの終了時よりも「新しい」時点でのみ存在します:系列がホールドアウトにのみ存在する場合、DataRobotはウィンドウを前方にスライドさせ、トレーニングで使用したデータは選択しません。 このように、データは削除されませんが、子プロジェクトのホールドアウトを調べるためにのみ使用します。
-
設定が準備ができれば、クイックオートパイロットまたはフルオートパイロット、または 手動モードを選択して、開始をクリックします。 DataRobotは、各セグメントに完全なオートパイロットプロジェクトを構築するため、モデリングの完了に必要な時間が非常に長くなる場合があることを通知します。 モデリングを開始をクリックして、続けることを確認します。 (今後のセグメントプロジェクトでは承認なしで続けられるように、DataRobotを設定できます。)
-
EDA2が完了すると、DataRobotでは結合されたモデルがすぐに作成されます。 「子」モデル(独立したセグメントモデル)が構築中であるため、結合モデルは完成しません。 ただし、結合モデルから構築とワーカーの割り当てを制御できます。
-
モデリングが完了すると、結合モデルを使用してセグメントを探すことができます。
結果を調べる¶
モデリングが終了すると、モデルタブは、1つのモデルが構築されていることを示します。 (手動モードを使用した場合の結果については、 備考を参照してください。) これは、完成した結合モデルです。
セグメント化されたモデリングで使用できるチャートとグラフは、モデルタイプに依存します。
-
結合モデルの場合、セグメンテーション、モデルのブループリント、モデリングログ、予測の作成、およびコメントにアクセスできます。
-
個別のセグメントで使用可能なモデルについては、複数系列連続値プロジェクトに適合するビジュアライゼーションおよびモデリングタブ(リポジトリ、モデルを比較など)が使用できます。
セグメンテーションタブ¶
クリックして結合モデルを展開し、セグメンテーションタブを表示します。
以下の表は、セグメンテーションタブのコンポーネントを示します。
コンポーネント | 説明 |
---|---|
検索 | 検索を使用して、入力した文字列に一致するセグメントだけが含まれるように表示を変更します。 |
CSVのダウンロード | 指標スコア、チャンピオン履歴、ID、プロジェクト履歴など、統合モデルに関連付けられたメタデータを含むスプレッドシートをダウンロードします。 |
セグメント | DataRobotによるトレーニングデータで見つかったセグメント値を指定されたセグメントIDにリストします。 |
行 | トレーニングデータからのセグメント統計(生の行の数とそれらの行が表すデータセットの割合)を表示します。 |
総モデル数 | オートパイロットプロセス中にそのセグメントに対してDataRobotが構築したモデルの数を示します。 |
チャンピオンの最終更新 | 最後にセグメントチャンピオンを割り当てた際の時間と担当者を示します。 ここでは、チャンピオンモデルタイプを示すアイコンも表示されます。 最初に、すべての行がDataRobotによってリスト表示されます。 セグメントは、「すべてのバックテスト」スコア別にリスト表示されます。並び替える場合は、列ヘッダーをクリックします。 |
バックテスト1 | 選択した指標のチャンピオンモデルのバックテスト1スコアを示します。 |
すべてのバックテスト | チャンピオンモデルに対して実行されるすべてのバックテストの平均スコアを示します。 |
ホールドアウト | ホールドアウトがロック解除されているかどうかを示すアイコンを提供します。 |
セグメントの探索¶
結合モデルは、セグメントあたり1つのモデル(セグメントチャンピオン)で構成されます。 一方、個別のセグメントは、完全なプロジェクトで構成されます。 セグメントのリーダーボードからプロジェクトを調査したり、結合モデルから独立してセグメントモデルをデプロイすることもできます。
セグメントリーダーボードへのアクセス¶
リーダーボードにアクセスする方法は複数あります。
結合モデルから¶
結合モデルを展開して、セグメンテーションタブリストでセグメント名をクリックします。
クリックすると、セグメントのリーダーボードが開きます。 以下の点に注意してください。
インジケーター | 説明 |
---|---|
1 | モデルの完全なセットが構築されます。 |
2 | DataRobotは、デプロイにモデルを推奨し、チャンピオンとしてマークします。 |
3 | 通常のワーカーキューコントロールを使用できます。 |
セグメントドロップダウンから¶
セグメントドロップダウンを使用して、ビューを変更します。
- セグメントから:
- 別のセグメントを選択します。 セグメントのリーダーボードが表示されます。
- すべてのセグメントを表示を選択して、結合モデルに戻ります。
- 結合モデルから、セグメントを選択してセグメントのリーダーボードを開きます。
チャンピオンモデルの再割り当て¶
DataRobotは最初にセグメントチャンピオンを割り当てますが、指定を変更することもできます。 これは、たとえば、すべてのセグメントが結合モデルに同じモデルタイプを提供することが重要な場合などに当てはまります。 セグメントのリーダーボードからセグメントチャンピオンを識別します。セグメントのリーダーボードでは、セグメントチャンピオンがチャンピオンバッジでマークされています。
セグメントリーダーボードからチャンピオンを再割り当てするには、チャンピオンとして任意のモデルを選択します。 次に、メニューからリーダーボードオプション > モデルをチャンピオンにするを選択します。
バッジは新しいモデルに移動します。
また、結合モデルのセグメンテーションタブには、チャンピオンが最終更新された日時と新しいチャンピオンを割り当てた担当者が表示されます。
プロジェクト全体の管理¶
DataRobotは、各セグメントを個別オートパイロットプロジェクトとして扱うため、結合モデルの作成にかかる時間は通常の複数系列プロジェクトよりも長くなる場合があります。 かかる正確な時間は、セグメントの数とデータセットとサイズによって異なります。 以下のコントロールを使用して、ワーカーを設定し(1)、モデリングを停止および開始(2)することができます。 すべてのアクションは、結合モデルのワーカーキューから実行され、すべてのセグメントプロジェクトに適用されます。 ホールドアウトのロックを解除(3)も使用できます。
ワーカーの制御¶
結合モデルから、すべてのセグメントプロジェクトのモデリングワーカーの数を制御できます。 各セグメントがモデリングを完了するため、DataRobotは、セグメント間のワーカーを自動的にバランス調整し、実行中のセグメント間で使用可能なワーカーを分散します。 ワーカー数を変更すると、DataRobotはモデリングステージでないプロジェクトを無効にします。
子モデリングの一時停止/開始/停止¶
親セグメントプロジェクトのワーカーキューから、子プロジェクトのモデリングアクションを制御できます。 サイドバーで停止/開始/キャンセルボタンを使用し、選択したアクションはすべての子プロジェクトに適用されます。 以下に具体例を示します。
-
セグメントプロジェクトの開始時に、キューアクションは使用できません。
-
すべてのセグメントがEDA2ステージに達すると、休止および開始ボタンが使用可能になります。
-
子プロジェクトがモデリングステージで使用可能になり、少なくとも1つのジョブが実行中である場合、キャンセルボタンが使用可能になります。
ホールドアウトのロックを解除¶
プロジェクト全体または各セグメントのホールドアウトのロックを解除できます。
-
プロジェクト全体(すべてのセグメント内のすべてのモデル)をロック解除するには、結合モデルのワーカーキューからホールドアウトのロックを解除を選択します。
-
セグメント内のすべてのモデルのホールドアウトをロック解除するには、(セグメントのリーダーボードを開き)ワーカーキュー内のすべてのモデルのプロジェクトでホールドアウトのロックを解除を選択します。
リーダーボードモデルのスコア¶
統合モデルのスコアは、モデルの構築が完了すると更新されます(チャンピオンはすべてのセグメントに割り当てられる)。 セグメントのチャンピオンが置換されるたびにスコアが再計算されます。 効率については、個別のチャンピオンスコアを集計して計算されます。 この計算方法をサポートする指標は、MAD、MAE、MAPE、MASE、RMSE、RMSLE、SMAPE、Theil's Uです。
1つ以上のチャンピオンをデプロイする準備ができると、表示されるスコアには親スコアが反映されます。 (チャンピオン/推奨モデルの親はチャンピオンのトレーニング元のモデルです。)
系列の数に基づく指標スコアの加重方法
統合モデルの評価指標は、特定のパーティション(トレーニング、検定、ホールドアウト)の行数に基づく平均です。 予測する系列の数はセグメントごとに異なるため、DataRobotでは、各系列のモデルカウントを考慮に入れて値が加重されます。 MAE/MAD/MAPE/SMAPEの場合、次のように計算されます。
MAE_X = MAE1 * w_1 + MAE2 * w2 + ...
RMSE/RMSLEの場合:
RMSE_X = sqrt(RMSE_1**2 * w1 + RMSE_2**2 * w2 + ...)
MASE/Theil’s Uは、チャンピオン指標とチャンピオンベース指標を使用して、すべてのセグメントでナイーブモデルスコアを計算してから、最終的に統合モデルスコアを計算するという、2つのステップで計算されます。
naive_X = base_X / score_X
SCORE = (base_1 + base_2 + ... ) / (naive_1 + naive_2 + ...)
セグメントのスコア加重は、本質的に、すべてのセグメントのホールドアウト行の総数に対する、セグメントの特定パーティションの行数です。 スコアの一貫性を計算するための明示的なテストがあります。 スコアは完全なデータセットに対して計算されてから、セグメントに分割されます。そこで、スコアはセグメントごとに個別に計算されてから、結合されて完全なデータセットスコアと比較されます。
リーダーボードで結合モデルに、スコアが表示されていない(N/Aの)ことがあります。これは、次のことを示します。
- モデルはまだ完了していません。
- 1つ以上のセグメントチャンピオンについて、すべてのバックテストがまだ完了していません(すべてのバックテストスコアはN/A)。
-
選択した指標はスコア集計をサポートしていません(たとえば、FVE Poisson、Gamma Devianceなど)。 例:
指標をMAEなどのサポートされている指標に変更すると、統合モデルから集計されたスコアが使用可能になります。
個別のチャンピオンスコアを確認するには、結合モデルを展開して、セグメンテーションタブを表示します。
個別のチャンピオンスコアがレポートされています。 以下の点に注意してください。
- チャンピオンが割り当てられていない場合、バックテスト1とすべてのバックテストのスコアは両方ともN/Aです。
- アスタリスクは、チャンピオンモデルが デプロイ用に準備されている(最新のデータに対して開始 / 終了モデルとして再トレーニングされている)こと、したがってその親モデルのスコアが使用されることを示します。
チャンピオンを変更すると、DataRobotはスコアを新しいチャンピオン(またはその親)から結合モデルに渡します。
セグメント化されたモデリングでの手動モード¶
手動モードでセグメントモデリングを行う場合、DataRobotは、セグメントごとに個別のプロジェクトを作成し、モデリング段階まで準備を完了させます。 ただし、DataRobotはプロジェクト単位のモデルを作成しません。 統合されたモデルを(プレースホルダーとして)作成しますが、チャンピオンは選択しません。 手動モードを使用することで、モデル構築に時間をかけることなく、各セグメントでどのモデルをトレーニングし、チャンピオンとして選択するかを完全に手動でコントロールできます。
統合モデルのデプロイ¶
セグメントモデリングの価値を最大限に活用するために、他の時系列モデルをデプロイする場合と同様に、統合されたモデルをデプロイできます。 含まれているプロジェクトごとにチャンピオンモデルを選択した後、統合モデルをデプロイし、複数のセグメントに対して「1つのモデル」デプロイを作成できます。ただし、デプロイされた統合モデル内の各セグメントでは、引き続きセグメントチャンピオンモデルがデプロイで(バックグラウンドで)実行されています。 デプロイを作成すると、精度監視、予測間隔、チャレンジャーモデル、および再トレーニングにDataRobot MLOpsを使用できます。
セグメント化されたモデリングが完了したら、結果の統合モデルをデプロイできます。
-
オートパイロットが終了すると、モデルタブには1つのモデルがあります。 このモデルが完成した統合モデルです。
-
統合モデルをクリックし、予測 > デプロイの順にクリックします。
-
デプロイタブで、登録してデプロイをクリックします。
-
モデル登録設定を行い、レジストリに追加をクリックします。 モデルレジストリ > 登録済みのモデルタブでモデルが開きます。
-
登録モデルの構築中に、デプロイをクリックして、デプロイ設定を行います。
-
DataRobot MLOpsでデプロイされたモデルを監視、管理、および制御します。 再トレーニングポリシーを設定して、デプロイ後のモデルパフォーマンスを維持します。
統合されたモデルデプロイに関する注意事項¶
セグメントモデリングのデプロイを使用する場合は、次の点に注意してください。
-
時系列セグメントモデリングのデプロイでは、データドリフトの監視には対応していません。
-
クラスタリングモデルを使用するセグメント化されたデプロイでは、自動再トレーニングは無効です。再トレーニングは手動で行う必要があります。
-
再トレーニングは、統合されたモデルの精度ドリフトによってトリガーすることができます。ただし、個々のセグメントでの精度監視や個々のセグメントの再トレーニングはサポートしません。
-
統合されたモデルデプロイには、標準モデルチャレンジャーを含めることができます。
デプロイされた統合モデルの修正とクローン作成¶
統合モデルをデプロイした後、デプロイされた統合モデルのクローンを作成し、クローンが作成されたモデルを修正することで、セグメントのチャンピオンを変更できます。 この処理は自動的に行われ、デプロイされた統合モデル内でセグメントのチャンピオンを変更しようとすると発生します。 クローンが作成され、修正可能なモデルが、アクティブな統合モデルになります。 このプロセスにより、デプロイされたモデルの安定性を確保しながら、同じセグメントプロジェクト内で変更をテストすることが可能になります。
備考
プロジェクトのリーダーボードでアクティブな統合モデル(バッジ付き)になれる統合モデルは1つだけです。
デプロイ済み統合モデルを変更して複製するには、次の手順を実行します。
-
統合されたモデルがデプロイされると、予測APIは有効というラベルが設定されます。
-
アクティブでデプロイされた統合モデルをクリックし、セグメントタブで、変更するセグメントをクリックします。
-
表示されるダイアログボックスで、はい、新しい統合モデルを作成しますをクリックします。
-
プロジェクトのリーダーボードで、アクティブな統合モデルにアクセスして変更できます。
ヒント
統合モデルが更新されましたの通知が表示されている間に、統合モデルに移動をクリックすると、リーダーボードでセグメントの統合モデルに戻ることができます。