Data Science ツールキット - クリエイティブ選択カスタム モデル
既定では、Xandr は広告申込情報に関連付けられているクリエイティブをランダムに配布します。 カスタム モデルを使用してクリエイティブを割り当てることもできます。 Bonsai 言語の機能またはロジックを使用して、配信するクリエイティブを決定できます。
注:
この機能は、 拡張行項目でのみ使用できます。
重み付けのしくみ
各リーフに、クリエイティブ ID とその重みを一覧表示します。 重みは、0 から 1000 までの整数です。 クリエイティブの割り当て割合は、クリエイティブの重量を、対象となるすべてのクリエイティブの重みの合計で割ることによって決定されます。
たとえば、広告申込情報には A、B、C の 3 つのクリエイティブがあり、それぞれ 50、30、20 の重み付けされます。 すべてのクリエイティブが対象の場合、50%、30%、およびすべてのインプレッションの20%で配信されます。 クリエイティブ B と C のみが対象の場合、クリエイティブ B はインプレッションの 60% で配信され、クリエイティブ C は 40% で配信されます。
注:
同じリーフに同様の状況で適格となるクリエイティブのみを含めて、重み付けとターゲット設定の効果を判断しやすくすることをお勧めします。 たとえば、同じサイズのクリエイティブのみを含めたり、SSL の対象となるクリエイティブのみを 1 つのリーフに含めたりして、すべてのクリエイティブが同じインプレッションの資格を得られるようにすることができます。
クリエイティブに重み付けするときに最適な結果を得るには、次のガイドラインに従ってください。
- ウェイトが 0 (0) のクリエイティブは配信されません。
- リーフにクリエイティブ リストが含まれていない場合、クリエイティブの選択は、広告申込情報に関連付けられているクリエイティブのランダムな選択に戻ります。
- モデルに重複するクリエイティブ ID が含まれていない場合があります。
- 広告申込情報にはクリエイティブを添付する必要があります。 広告申込情報にアタッチされているがリーフに含まれていないクリエイティブは、重みが 0 と見なされます。
クリエイティブ選択リーフ構文
クリエイティブ配布リーフの構文は次のとおりです。
leaf_name: "NAME"
creatives: {ID: WEIGHT, ID: WEIGHT, ID: WEIGHT}
API ワークフロー
手順 1: 拡張行項目を作成する
この例では、拡張品目を作成します。
$cat ali
{
"line-item": {
"name": "ALI Creative Selection Test",
"code": "ali-cs-test",
"state": "inactive",
"line_item_type": "standard_v2",
"revenue_type": "cpm"
}
}
$curl -b cookies -X POST -s -d @ali "https://api.appnexus.com/line-item?advertiser_id=ADVERTISER_ID"
{
"response" : {
"status" : "OK",
"start_element" : 0,
"line-item" : {
"lifetime_pacing_span" : null,
"prefer_delivery_over_performance" : false,
...
"dbg_info" : {...},
"num_elements" : 100
}
}
詳細については、「 カスタム モデルを使用した ALI ワークフロー」を参照してください。
手順 2: 拡張広告申込情報にクリエイティブ ID をアタッチする
この例では、3 つのクリエイティブを広告申込情報に関連付けます。
$ cat line-item
{
"line-item":
{
"id": "11111",
"manage_creative": true,
"creatives": [
{"id": 12345},
{"id": 67890},
{"id": 12347}
]
}
}
$ curl -b cookies -X PUT -d @line-item 'https://api.appnexus.com/line-item?id=LINEITEM_ID&advertiser_id=ADVERTISER_ID&id=LINE_ITEM_ID'
{
"response" : {
"dbg_info" : {...},
"line-item" : {
"profile_id" : null,
"enable_pacing" : null,
"lifetime_pacing" : null,
"revenue_value" : 0,
"lifetime_budget_imps" : null,
...
"creatives" : [
{
"code" : null,
"height" : 600,
"audit_status" : "no_audit",
"weight" : null,
"is_prohibited" : false,
"is_self_audited" : true,
"id" : 22367666,
"format" : "image",
"state" : "inactive",
"pop_window_maximize" : null,
"name" : "MCG Test Ad 120x600",
"is_expired" : true,
"width" : 120
},
{
"pop_window_maximize" : null,
"is_expired" : true,
"name" : "MCG Test Ad 300x240",
"width" : 300,
"id" : 22367932,
"format" : "image",
"state" : "inactive",
"is_self_audited" : true,
"code" : null,
"weight" : null,
"height" : 240,
"audit_status" : "no_audit",
"is_prohibited" : false
},
{
"state" : "inactive",
"id" : 38520371,
"format" : "image",
"width" : 320,
"pop_window_maximize" : null,
"is_expired" : true,
"name" : "480.png",
"is_prohibited" : false,
"code" : null,
"audit_status" : "no_audit",
"height" : 480,
"weight" : null,
"is_self_audited" : false
}
]
...
}
}
手順 3: カスタム モデル ツリーを作成する
この例では、クリエイティブの重み付けと選択を行うカスタム モデルを作成します。
$cat creative-tree
if user_hour = 1:
leaf_name: "cs_1"
creatives: {12345: 30, 67890: 20}
else:
leaf_name: "cs_2"
creatives: {12347: 1}
手順 4: カスタム モデルをアップロードする
この例では、カスタム モデルをアップロードします。
$ cat custom_model
{
"custom_model": {
"name": "Creative Selection Test Model",
"member_id": 958,
"advertiser_id": ADVERTISER_ID,
"custom_model_structure": "decision_tree",
"model_output": "bid",
"model_text": "aWYgdXNlcl9ob3VyID0gMToNCglsZWFmX25hbWU6ICJjc18xIg0KCWNyZWF0aXZlczogezEyMzQ1OiAzMCwgNjc4OTA6IDIwfQ0KZWxzZToNCglsZWFmX25hbWU6ICJjc18yIg0KCWNyZWF0aXZlczogezEyMzQ3OiAxfQ=="
}
}
$ curl -b cookies -X POST -d @custom-model "https://api.appnexus.com/custom-model?advertiser_id=39776"
{
"response" : {
"status" : "OK",
"count" : 1,
"start_element" : 0,
"dbg_info" : {
...
},
"num_elements" : 100,
"id" : "80324",
"custom_model" : {
"name" : "Creative Selection Test Model",
"original_text" : "<removed>",
"code" : null,
"custom_model_structure" : "decision_tree",
"compiled_text" : "<removed>",
"model_output" : "bid",
"id" : 33333,
"last_modified" : "2017-03-17 17:29:22",
"active" : true,
"advertiser_id" : 354236,
"model_text" : "<removed>"
}
}
}
詳細については、「 カスタム モデル サービス」を参照してください。
手順 5: カスタム モデルを行項目に関連付ける
この例では、行項目の配列のフィールドを ''creative_selection
に設定type
して、カスタム モデルを行項目custom_models
に関連付けます。
$cat update-ali
{
"line-item": {
"id": 11111,
"custom_models": [
{
"id": 33333,
"type": "creative_selection"
}
]
}
}
$curl -b cookies -X PUT -d '@update-ali' "https://api.appnexus.com/line-item?id=11111&advertiser_id=ADVERTISER_ID"
{
"response" : {
"dbg_info" : {...},
"num_elements" : 100,
"id" : "3919914",
"count" : 1,
"line-item" : {
"profile_id" : null,
"imptrackers" : null,
"flat_fee" : null,
"inventory_discovery" : null,
"broker_fees" : null,
"state" : "inactive",
"lifetime_budget_imps" : null,
"prefer_delivery_over_performance" : false,
"creatives" : [...],
...
"custom_models" : [
{
"type" : "creative_selection",
"name" : "Creative Selection Test Model",
"id" : 80324,
"active" : "1"
}
]
...
}
}
例
クリエイティブの重みが異なるクリエイティブ配布ツリー
if user_hour = 1:
leaf_name: "cs_1"
creatives: {64947527: 30, 64946991: 20, 65023365: 10}
else:
leaf_name: "cs_2"
creatives: {65946990: 1}
ランダムな分布が均一なクリエイティブ配布ツリー
if user_hour = 1:
leaf_name: "cs_1"
creatives: {64947527: 1, 64946991: 1, 65023365: 1}
else:
leaf_name: "cs_2"
creatives: {65946990: 1}