Skip to content

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

精度監視を有効化

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

精度監視を有効にするには、次のものが必要です。

デプロイの精度タブをアクティブ化するには、最初に、予測を将来の結果(予測値)にリンクする関連付けID(外部キー)を選択する必要があります。

関連付けIDを選択

デプロイの設定 > データタブの推論セクションには、関連付けIDを含む列名を入力するフィールドがあります。

関連付けIDは予測データセットの外部キーとして機能するので、実測値とそれに対応する予測値を後で紐づけることができます。 このIDは、結果を追跡するイベントに対応します。 たとえば、一連のローンのうちに債務不履行があるかどうかを追跡することが考えられます。

関連性IDフィールドに入力した列名は、モデルの予測データセットの関連性IDを含む列名に一致する必要があります。 予測データセット内のこの列の各セルには、一意のIDが含まれます。このIDは実際のペイロードの対応する一意のID(関連性ID)と対になります。

たとえば、このトランザクションのサンプルデータベースを例に説明します。

第3の列(transaction_num)は、関連性IDを含む列です。 各行の一意のIDは、その行のその他の特徴量に関連付けられています(この例ではtransaction_amntannual_inc)。 関連性IDを含む列としてtransaction_numを入力すると、DataRobotでは、これらの一意のIDを使用して、後で予測データの各行と予測出力を実際の結果に関連付けることができます。 したがって、transaction_num関連性IDフィールド(設定タブ)に入力する内容です。

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

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

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

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

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

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

すべての時系列デプロイで、日付が近づくにつれて同じ日付を複数回予測することができます。 たとえば、1日の売り上げを、30日前、14日前、7日前にそれぞれ予測するとします。 これらの予測の予測日は同じなので、関連付けIDは同じです。

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

ターゲット監視の有効化

精度監視を有効化するには、データタブの推論セクションでターゲット監視を有効化する必要があります。

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

実績の追加

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

  1. デプロイで実測値を使用するには、ファイルを選択します(実測値ヘッダーの下)。 ファイルを直接アップロードするか、AIカタログからファイルを選択します。 ローカルファイルをアップロードすると、アップロード後にAIカタログに追加されます。

    デプロイで使用するには、実測値のスナップショットを取得する必要があります。 続行する前に、スナップショット操作が成功したことを確認してください。 (正常に完了していない場合は、黄色い「スナップショットなし」という注意が表示されます。)

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

    フィールド 説明
    実際のレスポンス 実測値を含むデータセット内の列。
    関連付けID 関連付けIDを含む列。
    対応済み(オプション) 実際の出力に影響する可能性のある方法で予測が追加されたかどうかを示す列(この列の行の値は「yes」または「no」です)。 たとえば、病院の患者が30日以内に再入院することが予想される場合、追加の手順または新しい薬を使用して、この問題を緩和しますが、予測の実際の結果に影響が生じます。 この場合、「Was acted on」フィールドは、データセットの「Mitigation」列(「yes」または「no」の値)を使用します。
    タイムスタンプ(オプション) 実測値を追加したときの日付/時刻を含む列。形式はRFC 3339に従います(2018-04-12T23:20:50.52Zなど)。

備考

予測データセットと実測値のデータセットの関連付けIDの列名は一致する必要はありません。 唯一の要件は、各データセットに、他のデータセットと一致する識別子を含む列が含まれていることです。 たとえば、「イベントID」列に行を識別して実際の結果と照合するために使用する予測データセットの関連付けIDが含まれている場合は、「イベントID」を関連付けIDとして推論セクションに入力します。 実測値 セクションで、[関連付けID]フィールドに予測識別子(上記の例では "associationId")と一致する識別子を含む列名を入力します。

完了したら、ページの上部にある1つの変更を保存をクリックします。 その後、推論セクションに入力した関連付けIDを含むデータセットで予測を作成すると、デプロイで精度ページが有効になります。

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

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

  1. 設定 > データタブから推論セクションにアクセスします。

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

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

    備考

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

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

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

    実測値ペイロードには列名associationIdactualValueが含まれている必要があります。 オプションの列wasActedOnを使用して、実際の結果に影響する可能性のある形で予測に対してアクションが実行されたかどうかを示します。 複数の実測値を同じ関連性ID値で送信した場合、同じリクエストまたは後続のリクエストで、最新の実測値が使用されます。 続行する前に、行制限を確認し、実測値をアップロードしてください。

    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
                    'wasActedOn': False,  # optional bool
                },
                {
                    'actualValue': 0,
                    'associationId': '5d8138fb9600000000000001',
                    'wasActedOn': False,
                },
            ]
        }
        submit_actuals(payload, deployment_id)
        print('Done')
    
    if __name__ == "__main__":
        main()
    

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

実際のアップロード制限

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

fromJSONエンドポイント:

  • リクエストごとに10,000行
  • 1時間あたり10,000,000行

fromDatasetエンドポイント:

  • リクエストごとに5,000,000行
  • 1時間あたり10,000,000行

更新しました December 21, 2022
Back to top