Data Science ツールキット - カスタム モデル パーサー サービス
カスタム モデル パーサー サービスを使用すると、Bonsai 言語で記述されたデシジョン ツリーの有効性をチェックできます。 カスタム モデル サービス を使用してキャンペーンで使用するツリーをアップロードする前に、このサービスを使用して Bonsai 構文または機能エラーを特定して解決する必要があります。
このページでは、検証プロセスについて説明します。 カスタム モデルの目的に関する背景情報については、「 カスタム モデル」を参照してください。
手順 1. Base64 エンコードの Bonsai デシジョン ツリー
Bonsai 言語でデシジョン ツリーを記述したら、base64 でエンコードします。
$ cat decision_tree.txt
# This tree determines a bid price as follows:
# 1. If the user is in California, and the hour is between 12pm and 14pm there, bid $1.50.
# 2. If the user is in New York, and the hour is between 1am and 3am there, bid $0.10.
# 3. Otherwise, bid $0.50.
if every region = "US:CA", user_hour range (12,14):
1.5
elif every region = "US:NY", user_hour range (1,3):
0.1
else:
0.5
$ cat decision_tree.txt |base64
IyBUaGlzIHRyZWUgZGV0ZXJtaW5lcyBhIGJpZCBwcmljZSBhcyBmb2xsb3dzOgojIDEuIElmIHRoZSB1c2VyIGlzIGluIENhbGlmb3JuaWEsIGFuZCB0aGUgaG91ciBpcyBiZXR3ZWVuIDEycG0gYW5kIDE0cG0gdGhlcmUsIGJpZCAkMS41MC4KIyAyLiBJZiB0aGUgdXNlciBpcyBpbiBOZXcgWW9yaywgYW5kIHRoZSBob3VyIGlzIGJldHdlZW4gMWFtIGFuZCAzYW0gdGhlcmUsIGJpZCAkMC4xMC4KIyAzLiBPdGhlcndpc2UsIGJpZCAkMC41MC4KCmlmIGV2ZXJ5IHJlZ2lvbiA9ICJVUzpDQSIsIHVzZXJfaG91ciByYW5nZSAoMTIsMTQpOgoJMS41CmVsaWYgZXZlcnkgcmVnaW9uID0gIlVTOk5ZIiwgdXNlcl9ob3VyIHJhbmdlICgxLDMpOgoJMC4xCmVsc2U6CgkwLjU=
手順 2. エンコードされたツリーを含む JSON ファイルを作成する
次に示すように JSON ファイルを作成します。 メイン オブジェクトには、custom-model-parser
エンコードされたツリーをフィールドの文字列として持つオブジェクトがmodel_text
含まれている必要があります。
$ cat check_tree.json
{
"custom-model-parser": {
"model_text": "IyBUaGlzIHRyZWUgZGV0ZXJtaW5lcyBhIGJpZCBwcmljZSBhcyBmb2xsb3dzOgojIDEuIElmIHRoZSB1c2VyIGlzIGluIENhbGlmb3JuaWEsIGFuZCB0aGUgaG91ciBpcyBiZXR3ZWVuIDEycG0gYW5kIDE0cG0gdGhlcmUsIGJpZCAkMS41MC4KIyAyLiBJZiB0aGUgdXNlciBpcyBpbiBOZXcgWW9yaywgYW5kIHRoZSBob3VyIGlzIGJldHdlZW4gMWFtIGFuZCAzYW0gdGhlcmUsIGJpZCAkMC4xMC4KIyAzLiBPdGhlcndpc2UsIGJpZCAkMC41MC4KCmlmIGV2ZXJ5IHJlZ2lvbiA9ICJVUzpDQSIsIHVzZXJfaG91ciByYW5nZSAoMTIsMTQpOgoJMS41CmVsaWYgZXZlcnkgcmVnaW9uID0gIlVTOk5ZIiwgdXNlcl9ob3VyIHJhbmdlICgxLDMpOgoJMC4xCmVsc2U6CgkwLjU"
}
}
手順 3. POST
カスタム モデル パーサー サービスへのファイル
次に POST
示すように、カスタム モデル パーサー サービスを呼び出します。
$ curl -b cookies -c cookies -X POST -d @check_tree.json 'https://api.appnexus.com/custom-model-parser'
手順 4. 応答を確認する
ツリーは有効です
Bonsai デシジョン ツリーが有効な場合、 custom-model-parser
応答のオブジェクトには次のフィールドが含まれます。
フィールド | 説明 |
---|---|
model_text |
デシジョン ツリー。 |
size |
デシジョン ツリーのサイズ (バイト単位)。 サイズ制限: ツリーは 3 MB、または 3,145,728 バイトより小さくする必要があります。 それより大きい場合、 カスタム モデル サービスを使用してツリーを追加することはできません。 |
注:
"model_text
" フィールドの下にあるデシジョン ツリーの Lisp ストレージ形式を返すために使用されるカスタム モデル パーサー エンドポイント。 この内部表現は中間ステップのみで、プラットフォーム上のどこにも使用されていないため、非推奨になっています。 フィールドには常に値 "" が<removed>
含まれるようになります。 応答の "size
" フィールドは引き続き正確に入力され、モデルがアップロードに対して大きすぎるかどうかを知るために、それに依存し続ける必要があります。
{
"response": {
"service": "custom-model-parser",
"method": "post",
"custom-model-parser": {
"model_text": "(if (and (region = 3922) (user_hour range 12 14)) 1.5 (if (and (region = 3950) (user_hour range 1 3)) 0.1 0.5))",
"size": 111
}
}
}
ツリーが無効です
Bonsai デシジョン ツリーが無効な場合、 error
応答のフィールドによって問題が特定されます。 エラーは、無効な Bonsai 構文または Bonsai 機能の使用が無効であることが発生する可能性があります。 詳細については、以下の 「エラー メッセージ」 を参照してください。
{
"response": {
"error_id": "SYNTAX",
"error": "ERROR: User hour expected on line 6 at column 49; user_hour must be between 0 and 23; found 24",
"error_description": null,
"service": "custom-model-parser",
"method": "post",
"error_code": "INVALID_SYNTAX"
}
}
エラー メッセージ
構文エラー
無効な文字が見つかりました:
ERROR: Illegal character <character> found on line <line> at column <column>
2 番目のルート ノードが見つかりました。
ERROR: End of file expected; <token> found.
数値以外の型で使用される数値演算子:
ERROR: Numeric operator <operator> invalid with non-numeric type <type> at line <line> at column <column>.
リスト内の要素の数が正しくありません (範囲式に 3 つの要素がある場合など)。
ERROR: Invalid number of elements in list at line <line> at column <column>. Required number of elements is <required number>, <number> elements found
機能エラー
機能には、DB に対して検証する機能と、値が特定の数値である必要がある機能の 2 種類があります。 DB に対して検証すると、無効な値に対して表示されるエラー メッセージは次のとおりです。
ERROR: <description> expected on line <line> at column <column>; found <value found>.
数値を検証すると、無効な値に対して表示されるエラー メッセージは次のとおりです。
ERROR: <description> expected on line <line> at column <column>; <numeric restriction>
特徴、説明、数値の制限は次のとおりです。
country
: 国の文字列region
: リージョン文字列city
: 市区町村文字列supply_type
: 供給タイプdomain
: URL 文字列browser
: ブラウザー文字列carrier
: キャリア文字列os_family
: OS ファミリ文字列placement
: 有効な配置 IDsize
: サイズ文字列placement_group
: 有効な配置グループ IDpublisher
: 有効な発行元 IDmobile_app
: 有効なモバイル アプリ IDcookie_age
: Cookie の年齢 (分単位)user_hour
: ユーザー時間は 0 から 23 の間である必要がありますuser_day
: ユーザーの日は 0 から 6 の間である必要がありますOBJECT[ID].lifetime_frequency
: ここで、オブジェクトはadvertiser
、line_item
またはcampaign
(分割を表す) であり、ID はオブジェクト ID です。 寿命の頻度は正の整数である必要があります。 このシナリオでは、オブジェクトは ですadvertiser
。OBJECT[ID].day_freq
: ここで、オブジェクトはadvertiser
、line_item
またはcampaign
(分割を表す) であり、ID はオブジェクト ID です。 日の頻度は正の整数である必要があります。 このシナリオでは、オブジェクトは ですadvertiser
。advertiser_recency
: 広告主のレジェンシーは正の整数または -1 である必要がありますdevice_type
: デバイスの種類の文字列estimated_iab_viewthrough_rate
: IAB ビュースルー レートは 0 ~ 1 の数値にする必要があります