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: 有効な配置 ID
  • size: サイズ文字列
  • placement_group: 有効な配置グループ ID
  • publisher: 有効な発行元 ID
  • mobile_app: 有効なモバイル アプリ ID
  • cookie_age: Cookie の年齢 (分単位)
  • user_hour: ユーザー時間は 0 から 23 の間である必要があります
  • user_day: ユーザーの日は 0 から 6 の間である必要があります
  • OBJECT[ID].lifetime_frequency: ここで、オブジェクトは advertiserline_itemまたは campaign (分割を表す) であり、ID はオブジェクト ID です。 寿命の頻度は正の整数である必要があります。 このシナリオでは、オブジェクトは です advertiser
  • OBJECT[ID].day_freq: ここで、オブジェクトは advertiserline_itemまたは campaign (分割を表す) であり、ID はオブジェクト ID です。 日の頻度は正の整数である必要があります。 このシナリオでは、オブジェクトは です advertiser
  • advertiser_recency: 広告主のレジェンシーは正の整数または -1 である必要があります
  • device_type: デバイスの種類の文字列
  • estimated_iab_viewthrough_rate: IAB ビュースルー レートは 0 ~ 1 の数値にする必要があります