次の方法で共有


Data Science ツールキット - カスタム モデル サービス

カスタム モデル サービスを使用すると、キャンペーンで使用するカスタム予測モデル (デシジョン ツリー) を追加および管理できます。 背景情報については、「 カスタム モデル」を参照してください。

ヒント

カスタム モデルを追加する前に、カスタム モデル パーサー サービスを使用して、デシジョン ツリーの有効性とサイズをチェックします。

REST API

新しいカスタム モデルを追加します。

POST https://api.appnexus.com/custom-model  
(new_model JSON)

カスタム モデルを変更する:

PUT https://api.appnexus.com/custom-model?id=ID
(model_update JSON)

すべてのカスタム モデルを表示する:

GET https://api.appnexus.com/custom-model

特定のカスタム モデルを表示します。

GET https://api.appnexus.com/custom-model?id=ID

カスタム モデルを削除します。

DELETE https://api.appnexus.com/custom-model?id=ID

注:

1 つ以上のキャンペーンで使用されるカスタム モデルは削除できません。

フィルター処理および並べ替えの対象となるフィールドを確認します。

GET https://api.appnexus.com/custom-model/meta

JSON フィールド

フィールド 型 (長さ) 説明
active ブール型 の場合 true、カスタム モデルはアクティブであり、キャンペーンで使用できます。
既定値: true
advertiser_id int カスタム モデルが属する広告主の ID。
必須:POST
code string 外部 ID またはオブジェクトの検索値として使用されるカスタム コード。 この値は、メンバー内で一意である必要があります。
custom_model_structure 列挙 カスタム モデルの構造。 現時点では、許可される構造体は "decision_tree"のみです。
必須:POST
id int カスタム モデルの ID。
既定値: 自動生成された数値
必須:PUT/ DELETE クエリ文字列内の 、
last_modified date 読み取り専用。 カスタム モデルが最後に変更された日時。
member_id int 読み取り専用。 カスタム モデルが属するメンバーの ID。
既定値: メンバーの ID
model_output 列挙 カスタム モデルの種類。 使用可能な値:
- "bid": 入札価格モデルは、CPM 入札を出力します。 このタイプのモデルは、標準的な CPM 戦略の代わりに、キャンペーンのサードパーティの購入戦略として機能します。 キャンペーンでこの種類のモデルを使用するには、 を に"custom_model"設定cpm_bid_typeし、オブジェクトでbid_modelカスタム モデル ID を指定します。
- "bid_modifier": 入札修飾子モデルは、キャンペーンの最適化派生 CPM 入札に乗数を適用します。 この種類のモデルは、Xandr 最適化ベースの購入戦略 (が "predicted" または "margin"の場合cpm_bid_type) と組み合わせて使用されます。 キャンペーンでこの種類のモデルを使用するには、オブジェクトでカスタム モデル ID をbid_modifier_model指定します。
必須:POST
model_text string デシジョン ツリーとして表されるモデルのロジック。 Bonsai 言語でデシジョン ツリーを記述し、ここに base64 でエンコードされたバージョンを含める必要があります。
既定値: null
:
- サイズ制限: ツリーは 3 MB、または 3,145,728 バイトより小さくする必要があります。 それより大きい場合は、ツリーを追加できません。
- GET クエリ: GET クエリでは、 model_text クエリ文字列にモデル ID を指定した場合にのみ が返されます。 フィルター処理されていないクエリでは返されません。
- ツリーの有効性とサイズを確認します。
- カスタム モデルを追加する前に、カスタム モデル パーサー サービスを使用して、デシジョン ツリーの有効性とサイズをチェックします。 検証とエラー メッセージの詳細については、そのサービスを参照してください。
name string (191) カスタム モデルの名前。 これは一意である必要があり、191 文字以下にする必要があります。
必須:POST
original_text string 読み取り専用。 プレーン テキストのデシジョン ツリー。 これを応答で提供します。これにより、ツリーのデザインを反復処理するために必要な場合は常に、ツリーの元の形式を取得して確認できます。 タブは に \t 置き換えられ、新しい行は に \n置き換えられます。
既定値: null
: GET クエリでは、 は、 original_text クエリ文字列内の特定のモデル ID を識別した場合にのみ返されます。 フィルター処理されていないクエリでは返されません。

すべてのカスタム モデルを表示する

$ curl -b cookies -c cookies 'https://api.appnexus.com/custom-model'
 
{
    "response": {
        "status": "OK",
        "count": 10,
        "start_element": 0,
        "num_elements": 100,
        "custom_models": [
            {
                "id": 327,
                "name": "Bid by Region/Hour of Day",
                                "code": "code1_abc12345",
                "member_id": 958,
                "advertiser_id": 39776,
                "custom_model_structure": "decision_tree",
                "model_output": "bid",
                "active": true,
                "last_modified": "2015-09-22 19:52:57"
            },
            {
                "id": 329,
                "name": "Bid by Device Type/Hour of Day",
                                "code": "code2_abc12345",
                "member_id": 958,
                "advertiser_id": 39776,
                "custom_model_structure": "decision_tree",
                "model_output": "bid",
                "active": true,
                "last_modified": "2015-09-22 20:52:53"
            },
            ...  
        ]
    }
}

特定のカスタム モデルを表示する

$ curl -b cookies -c cookies 'https://api.appnexus.com/custom-model?id=327'
 
{
    "response": {
        "status": "OK",
        "count": 1,
        "start_element": 0,
        "num_elements": 100,
        "custom_model": {
            "id": 327,
            "name": "Bid by Region/Hour of Day",
                        "code": "code1_abc12345",
            "member_id": 1234,
            "advertiser_id": 39776,
            "custom_model_structure": "decision_tree",
            "model_output": "bid",
            "model_text": "aWYgZXZlcnkgcmVnaW9uID0gIlVTOkNBIiwgdXNlcl9ob3VyIHJhbmdlICgxMiwxNCk6CgkxLjUKZWxpZiBldmVyeSByZWdpb24gPSAiVVM6TlkiLCB1c2VyX2hvdXIgcmFuZ2UgKDEsMyk6CgkwLjEKZWxzZToKCTAuNQ==",
            "original_text": "if every region = \"US:CA\", user_hour range (12,14):\n\t1.5\nelif every region = \"US:NY\", user_hour range (1,3):\n\t0.1\nelse:\n\t0.5",
            "active": true,
            "last_modified": "2015-09-22 19:52:57"
        }
    }
}

カスタム モデルを追加する

$ curl -b cookies -c cookies -X POST -d @custom_model.json 'https://api.appnexus.com/custom-model?member_id=1234'
$ cat custom_model.json
 
{
    "custom_model": {
        "name": "Bid by Device Type/Hour of Day", 
        "advertiser_id": 39776,
        "custom_model_structure": "decision_tree",
        "model_output": "bid",
                "model_text": "aWYgZXZlcnkgZGV2aWNlX3R5cGUgPSAiT3RoZXJzIChpbmNsdWRpbmcgUEMpIiwgdXNlcl9ob3VyIHJhbmdlICg5LDE4KToKCTEuNQplbGlmIGV2ZXJ5IGRldmljZV90eXBlIGluICgiVGFibGV0IiwgIlBob25lIiksIHVzZXJfaG91ciBpbiAoNSw2LDcsOCwxOSwyMCwyMSwyMik6CgkyCmVsc2U6CgkwLjU="
    }
}
 
$ curl -b cookies -c cookies -X POST -d @custom_model.json 'https://api.appnexus.com/custom-model'
 
{
    "response": {
        "status": "OK",
        "count": 1,
        "id": "329",
        "start_element": 0,
        "num_elements": 100,
        "custom_model": {
            "id": 329,
            "name": "Bid by Device Type/Hour of Day",
                        "code": null,
            "member_id": 1234,
            "advertiser_id": 39776,
            "custom_model_structure": "decision_tree",
            "model_output": "bid",
            "model_text": "aWYgZXZlcnkgZGV2aWNlX3R5cGUgPSAiT3RoZXJzIChpbmNsdWRpbmcgUEMpIiwgdXNlcl9ob3VyIHJhbmdlICg5LDE4KToKCTEuNQplbGlmIGV2ZXJ5IGRldmljZV90eXBlIGluICgiVGFibGV0IiwgIlBob25lIiksIHVzZXJfaG91ciBpbiAoNSw2LDcsOCwxOSwyMCwyMSwyMik6CgkyCmVsc2U6CgkwLjU=",
            "original_text": "if every device_type = \"Others (including PC)\", user_hour range (9,18):\n\t1.5\nelif every device_type in (\"Tablet\", \"Phone\"), user_hour in (5,6,7,8,19,20,21,22):\n\t2\nelse:\n\t0.5",
            "active": true,
            "last_modified": "2015-09-22 20:52:53"
        }
    }
}
 

カスタム モデルを変更する

$ cat custom_model_update.json 
 
{
    "custom_model": {
        "model_text": "aWYgc2VnbWVudCAxMjM0Og0KwqDCoMKgwqBpZi..."    
    }
}
 
$ curl -b cookies -c cookies -X PUT -d @custom_model_update.json 'https://api.appnexus.com/custom-model?id=3'
 
{
    "response": {
        "status": "OK",
        "count": 1,
        "start_element": 0,
        "num_elements": 100,
        "custom_model": {
            "id": 3,
            "name": "User Hour Model",
                        "code": null,
            "member_id": 1234,
            "advertiser_id": 83736,
            "custom_model_structure": "decision_tree",
            "model_output": "bid",
            "model_text": "aWYgc2VnbWVudCAxMjM0Og0KwqDCoMKgwqBpZi...",
            "original_text": "if every region = \"US:CA\", user_hour range (12,16):\n\t1.5\nelif every region = \"US:NY\", user_hour range (1,5):\n\t0.1\nelse:\n\t0.5",
            "active": true
        }
    }
}

カスタム モデルを削除する

$ curl -b cookies -c cookies -X DELETE 'https://api.appnexus.com/custom-model?id=3'
 
{
    "response": {
        "status": "OK",
        "count": 1,
        "start_element": null,
        "num_elements": null
    }
}