Skip to content

アプリケーション内で をクリックすると、お使いのDataRobotバージョンに関する全プラットフォームドキュメントにアクセスできます。

精度のモニタリングを設定

精度タブを使ってデプロイの精度監視が可能になり、標準的な統計測定値とエクスポート可能な可視化情報によって、モデルデプロイのパフォーマンスを経時的に分析することができます。 精度監視は、精度 > 設定タブで有効にすることができます。 精度監視を設定するには、次のことが必要です。

デプロイの精度の設定ページでは、関連付けIDおよび実測値アップロードの設定と、精度監視の定義および通知の設定を行うことができます。

フィールド 説明
関連付けID
関連付けID モデルの予測データセットで関連付けIDを含む列の名前を定義します。 関連付けIDはデプロイの精度追跡の設定で必要となります。 関連付けIDは予測データセットの識別子として機能するので、後で出力データ(「実測値」)を予測に紐づけることができます。
予測リクエストで関連付けIDを要求 関連付けIDフィールドに入力した列名に一致する列名が予測データセットに存在する必要があります。 有効化したときに、列がない場合はエラーが表示されます。
時系列モデルで自動実測値フィードバックを有効にする 関連付けIDが示された時系列デプロイでは、この設定によって実測値の自動送信が可能になり、UIやAPIから手動で送信する必要がなくなります。 有効にした場合、予測の生成に使用されるデータから実測値を抽出できます。 各予測リクエストが送信されると、DataRobotは特定の日付の実測値を抽出できます。 これは、予測行を予測に送信すると、履歴データが含まれるためです。 この履歴データは、前の予測リクエストの実測値として機能します。
実測値をアップロード
ここにファイルをドロップするか、ファイルを選択する モデルの予測値を実測値と照合して精度を監視するために、実測値を含むファイルをアップロードします。 実測値は、精度タブを有効にするために必要です。
割り当てられた特徴量 実測値をアップロードしたら、割り当てられた特徴量の設定を行います。
定義
定義を設定 精度監視の指標、測定、しきい値の定義を行います。
通知
通知を送信 精度監視の通知チェックのスケジュールを設定します。

ターゲット監視の有効化

精度監視を有効にするには、データドリフト設定タブのデータドリフトセクションでターゲット監視の有効化も必要です。

ターゲット監視がオフになっている場合、ターゲット監視を有効にするよう精度タブにメッセージが表示されます。

関連付けIDを選択

デプロイの精度タブを有効にするには、まず予測データセットの関連付けIDを指定します。 関連付けIDは外部キーで、予測と将来の結果(つまり実測値)をリンクさせます。 このIDは、結果を追跡するイベントに対応します。たとえば、一連のローンのうちに債務不履行があるかどうかを追跡することが考えられます。

重要

予測を精度追跡に含めるには、予測を行うに関連付けIDを設定する必要があります。 エージェントが監視する、チャレンジャーを含む外部モデルデプロイの場合、関連付けIDは、 モデル そのチャレンジャーの精度をレポートするために__DataRobot_Internal_Association_ID__である必要があります。

デプロイの精度 > 設定タブの関連付けIDセクションには、関連付けIDを含む列名を入力するフィールドがあります。 関連性IDフィールドに入力した列名は、モデルの予測データセットの関連性IDを含む列名に一致する必要があります。 予測データセット内のこの列の各セルには、一意のIDを含める必要があります。このIDは、実測値のペイロードで発生する、対応する一意のIDと対になります。

また、予測リクエストで関連付けIDを要求を有効にすると、予測リクエストを行う際に、予測データセットから列が欠落している場合はエラーをスローすることができます。

そのデプロイに対して予測が作成されているかどうかに関係なく、デプロイでは関連付けIDを含む列名をいつでも設定できます。 関連付けIDは、そのIDを含む予測をまだ作成していない場合にのみ更新できます。 そのIDを使用して予測が作成された後は、IDを変更することはできません。

関連付けID(指定した列名の各行の内容)は128文字以下である必要があります。128文字以上の場合、128文字の長さに切り詰められます。 切り詰められた場合、アップロードされた実測値には、精度統計を適切に生成するために、実測値に対する切り捨てられた関連付けIDが必要になります。

関連付けIDの仕組み

関連付けIDの例として、次のトランザクションのサンプルデータセットを見てみましょう。

第3の列(transaction_num)は、関連性IDを含む列です。 行の一意のID(この例ではtransaction_num)は、その行の他の特徴量(この例ではtransaction_amntannual_inc)をグループ化し、関連する特徴量値の間に「関連」を作成します。 関連付けIDを含む列としてtransaction_numを定義すると、DataRobotはこれらの一意のIDを使って、予測データおよび予測結果の各行と実際の結果を後で関連付けることができます。 したがって、精度を設定する際、関連付けIDフィールドにはtransaction_numを入力します。

時系列デプロイの関連付けID

時系列デプロイの場合、予測リクエストには、個々の予測を一意に識別するために必要なデータがすでに含まれています。 したがって、関連付けIDとして使用される特徴量を考慮することが重要です。デプロイタイプに応じて、以下のガイドラインを参照してください。

  • 単一系列のデプロイ:DataRobotでは、予測日は予測を行う日付であるため、関連付けIDとしてこの列を使用することを推奨しています。 たとえば、今日が2022年6月15日で、店舗の1日の総売上高を予測している場合、2022年7月15日の売上高を確認する必要が生じたとします。この日付の実際の総売上高は1つになるため、「2022-07-15」を関連付けID(予測日付)として使用します。

  • 複数系列のデプロイ:DataRobotでは、予測日 + 系列IDを含むカスタム列を関連付けIDとして使用することを推奨しています。 単一のモデルで複数の店舗の1日の総売上を予測できる場合は、店舗#1234の2022年7月15日の販売用に関連付けID「2022-07-15 1234」などを使用できます。

  • すべての時系列デプロイ:同じ日付を、その日付が迫っているときに、何度も予測したい場合があります。 たとえば、1日の売り上げを、30日前、14日前、7日前にそれぞれ予測するとします。 これらの予測の予測日は同じなので、関連付けIDは同じです。

重要

予測日に近づく予測を行う場合、モデルによって異なる予測が生成される可能性があることに注意してください。 複数の予測距離の予測はそれぞれ個別に追跡されるため、予測距離ごとに精度を適切に計算できます。

関連付けIDを指定したら、時系列モデルで自動実測値フィードバックを有効にするをオンに切り替えることができます。 この設定によって実測値が自動送信され、UIやAPIから手動で送信する必要がなくなります。 有効にした場合、予測の生成に使用されるデータから実測値を抽出できます。 各予測リクエストが送信されると、DataRobotは特定の日付の実測値を抽出できます。 これは、予測行を予測に送信すると、履歴データが含まれるためです。 この履歴データは、前の予測リクエストの実測値として機能します。

実測値の追加

実測値を含むデータセットを、精度 > 設定タブ(ここで説明)またはAPI からデプロイに直接アップロードすることができます。 デプロイに対する予測データは、アップロードした実測値に対応する必要があります。 続行する前に、行制限を確認し、実測値をアップロードしてください。

  1. デプロイで実測値を使用するには、実測値をアップロードセクションでファイルを選択をクリックします。 ファイルを直接アップロードするか、AIカタログからファイルを選択します。 ローカルファイルをアップロードすると、アップロード後にAIカタログに追加されます。 実測値をデプロイで使用するには、AIカタログでスナップショットを作成する必要があります。

  2. アップロードした後、実測値セクションのフィールドに入力します。 割り当てられた特徴量では、各フィールドにドロップダウンメニューがあり、データセットの任意の列を選択できます。

    フィールド 説明
    実際のレスポンス データセット内で実測値を含む列を定義します。
    関連付けID 関連付けIDを含む列を定義します。
    タイムスタンプ(オプション) 実測値が取得された日時を含む列を、RFC 3339に従ってフォーマットして定義します(例:2018-04-12T23:20:50.52Z)。
    列名の一致

    予測値データセットと実測値データセットの関連付けIDの列名は一致する必要はありません。 唯一の要件は、各データセットに、他のデータセットと一致する識別子を含む列が含まれていることです。 たとえば、store_id列に行を識別して実際の結果と照合するために使用する予測データセットの関連付けIDが含まれている場合は、store_idを関連付けIDとして関連付けIDセクションに入力します。 実測値をアップロードセクションの割り当てられたフィールドの下の関連付けIDフィールドに、予測データセット内の識別子に関連付けられた識別子を含む実測値データセット内の列の名前を入力します。

  3. 割り当てられたフィールドを設定したら、保存をクリックします。

    この設定プロセスを完了し、定義された関連付けIDを含むデータセットで予測を行うと、デプロイで精度ページが有効になります。

APIを使用した実績のアップロード

このワークフローは、DataRobot APIを使用してデプロイの精度タブを有効化する方法を示します。

  1. 精度 > 設定タブから、関連付けIDセクションを見つけます。

  2. 関連付けIDフィールドに、予測データセットの関連IDを含む列名を入力します。

  3. 予測リクエストで関連付けIDを要求を有効にします。 この場合、関連付けIDフィールドに入力した列名に一致する列名が予測データセットに存在する必要があります。 列がない場合はエラーが表示されます。

    備考

    関連付けIDを含まない予測リクエストを送信する際にエラーが発生することを回避する場合、関連付けIDを設定し、この設定をオフにしたままにすることも可能です。しかし、この設定を有効にするまでデプロイの精度を監視することはできません。

  4. 関連付けIDを含むデータセットを使用した予測の作成

  5. DataRobot API経由で実測値を送信します(詳細は、DataRobotにサインインして、右上の疑問符のアイコンをクリックし、APIドキュメントを選択し、APIドキュメントを参照してください。APIドキュメントで、デプロイ > 実測値の送信(JSON)を選択します)。 続行する前に、行制限を確認し、実測値をアップロードしてください。

    備考

    実測値のペイロードには、アップロードプロセス中に定義されたデータセット内の値の列名とともに、associationIdactualValueが含まれている必要があります。 同じ関連付けID値を持つ複数の実測値を、同じリクエストまたは後続のリクエストで送信した場合、DataRobotは実測値を更新します。ただし、この更新では、最初の実測値を使って以前に計算された指標は再計算されません。 指標を再計算するには、デプロイ統計をクリアして、実測値を再アップロードします(または新しいデプロイを作成します)。

    APIで次のスニペットを使用して実測値を送信します。

    import requests
    
    
    API_TOKEN = ''
    USERNAME = 'johndoe@datarobot.com'
    DEPLOYMENT_ID = '5cb314xxxxxxxxxxxa755'
    LOCATION = 'https://app.datarobot.com'
    
    
    def submit_actuals(data, deployment_id):
        headers = {'Content-Type': 'application/json', 'Authorization': 'Token {}'.format(API_TOKEN)}
        url = '{location}/api/v2/deployments/{deployment_id}/actuals/fromJSON/'.format(
            deployment_id=deployment_id, location=LOCATION
        )
        resp = requests.post(url, json=data, headers=headers)
        if resp.status_code >= 400:
            raise RuntimeError(resp.content)
        return resp.content
    
    
    def main():
        deployment_id = DEPLOYMENT_ID
        payload = {
            'data': [
                {
                    'actualValue': 1,
                    'associationId': '5d8138fb9600000000000000',  # str
                },
                {
                    'actualValue': 0,
                    'associationId': '5d8138fb9600000000000001',
                },
            ]
        }
        submit_actuals(payload, deployment_id)
        print('Done')
    
    
    if __name__ == "__main__":
        main() 
    

    非時系列デプロイでは100レコード以上(時系列デプロイでは最小レコード数の制限はありません)の実測値を送信した際に、対応する関連付けIDを含む予測を行う場合、デプロイで精度タブが使用可能になります。

実際のアップロード制限

デプロイにアップロードできる実測値の数は、1回のリクエストごとおよび1時間ごとに制限されています。 これらの制限は、使用するエンドポイントによって異なります。

エンドポイント アップロードの上限
fromJSON
  • 1リクエストあたり10,000行
  • 1時間あたり10,000,000行
fromDataset
  • 1リクエストあたり5,000,000行
  • 1時間あたり10,000,000行

精度監視の通知を定義する

精度に関して、通知条件はデプロイの基礎となるモデルのパフォーマンス最適化指標に関連します。 リーダーボードで使用できる、同じ指標セットから選択します。 時系列の精度のグラフ予測と実測のグラフを使用して、精度を視覚化できます。 精度モニタリングは1つの精度ルールによって定義されます。 デプロイの精度はルールによって30秒ごとに評価されます。 このルールに違反すると通知が発行されます。

デプロイの精度通知とモニタリングを設定する前に、関連付けIDを設定します。 関連付けIDが設定されていない場合、精度通知設定を変更しようとすると、DataRobotは次のメッセージを表示します。

備考

精度監視の設定を変更できるのは、デプロイオーナーだけです。 オーナーが設定できるのはデプロイあたり1つの精度ルールだけです。 コンシューマーは監視や通知の設定を変更できません。 ユーザーは通知が送信される条件を設定でき、精度ステータスアイコンにカーソルを合わせると、ステータス情報の説明を参照することができます。

精度のモニタリングを設定するには:

  1. 精度の設定ページの定義セクションで、精度を監視するための設定を行います。

    要素 説明
    1 指標 デプロイの精度を評価するために使用される指標を定義します。 ドロップダウンメニューから利用できる指標は、精度タブでサポートされているものと同じです。
    2 単位 精度指標およびそのしきい値の測定単位を定義します。 ドロップダウンからまたはパーセントを選択できます。 オプションは、特定の値によって指標としきい値を測定します。パーセントオプションは、変化したパーセントによって測定されます。 パーセントオプションは、トレーニングデータのないモデルデプロイでは使用できません。
    3 「注意」/「失敗」のしきい値 値またはパーセントが超過すると通知が発行されるよう設定します。 2つのしきい値は、デプロイの精度が「注意」および「失敗」である場合にサポートされます。DataRobotは、デプロイのトレーニングデータに基づいて提供された最初の精度指標(分類の場合はLogLoss、連続値デプロイの場合はRMSE)のしきい値に関するデフォルト値を提供します。 トレーニングデータのないデプロイでは、それに代えて予測データに基づくデフォルトのしきい値が入力されます。 指標を変更した場合、デフォルト値は提供されません。

    備考

    しきい値の変更は、デプロイの履歴全体にわたって予測が行われる期間に影響します。 これらの更新されたしきい値は、精度タブでのパフォーマンス監視のビジュアライゼーションに反映されます。

  2. 精度監視の設定を更新したら、保存をクリックします。

精度のモニタリングの設定例

指標と測定の各組合せによって、ルールの式が定義されます。 たとえば、値によって測定されたLogLoss指標を使用する場合、精度が10のうち5の値「よりも大きい」ときにルールによって通知が発行されます。

しかし、指標をAUCに変更し、測定をパーセントに変更した場合、しきい値に設定された値によって精度が「減少」したときにルールによって通知が発行されます。

通知チェックのスケジュール

精度監視のEメール通知を送信すべきかどうかを判断するために、定期的なチェックをスケジュールするには:

  1. 精度の設定ページの通知セクションで、通知を送信を有効にします。

  2. 精度通知に関する設定を行います。 次の表にスケジュールオプションを示します。 すべての時間はUTCで表示されます。

    頻度 説明
    毎日 各日の選択した時刻。
    毎週 各選択日の選択した時刻。
    毎月 各月の各選択日の選択した時刻。 月内で選択された日は、コンマ区切りのリストで数値(1から31)として表されます。
    毎四半期 四半期の各月の各選択日の選択した時刻。 各月の選択日は、コンマ区切りのリストで数値(1から31)として表されます。
    毎年 各選択月の、各選択日の選択した時刻。 各月の選択日は、コンマ区切りのリストで数値(1から31)として表されます。
    高度なスケジューラーを使用する
    0から59の範囲の数値のコンマ区切りのリストで定義された各分(1時間全体の場合は*)。
    時間 0から23の範囲の数値のコンマ区切りのリストで定義された各正時(1日全体の場合は*)。
    1から31の範囲の数値のコンマ区切りのリストで定義された各日(1月全体の場合は*)。
    1から12の範囲の数値のコンマ区切りのリストで定義された各月(1年全体の場合は*)。
    曜日 0から6の範囲の数値のコンマ区切りのリストで定義された各曜日(すべての曜日の場合は*)。
  3. スケジュール設定を更新したら、保存をクリックします。

    重要

    通知設定で指定した時間により、監視のタイプに応じたステータスチェックがスケジュールされます。 DataRobotは、 _チェックの間に監視イベントが発生した場合_のみ、サブスクライバーに通知を送信します。たとえば、サービスの正常性について4xxまたは5xxエラーを受信した場合や、指定されたウィンドウでデータドリフトのステータスに変化があった(成功から失敗、または失敗から成功)場合です。


更新しました March 4, 2024