Partager via


Science des données Toolkit - Service d’analyseur de modèle personnalisé

Le service Analyseur de modèle personnalisé vous permet de case activée la validité des arbres de décision écrits en langage Bonsai. Vous devez utiliser ce service pour identifier et résoudre les erreurs de syntaxe ou de fonctionnalité Bonsai avant d’utiliser le service de modèle personnalisé pour charger des arborescences à utiliser dans des campagnes.

Cette page vous guide tout au long du processus de validation. Pour obtenir des informations générales sur l’objectif des modèles personnalisés, consultez Modèles personnalisés.

Étape 1. Coder en base64 votre arbre de décision Bonsai

Une fois que vous avez écrit votre arbre de décision dans notre langue Bonsai, en base64-encodez-le.

$ 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=

Étape 2. Create un fichier JSON contenant votre arborescence encodée

Create un fichier JSON comme indiqué ci-dessous. L’objet main doit contenir un custom-model-parser objet avec l’arborescence encodée sous forme de chaîne dans le model_text champ.

$ cat check_tree.json 
 
{
    "custom-model-parser": {
                "model_text": "IyBUaGlzIHRyZWUgZGV0ZXJtaW5lcyBhIGJpZCBwcmljZSBhcyBmb2xsb3dzOgojIDEuIElmIHRoZSB1c2VyIGlzIGluIENhbGlmb3JuaWEsIGFuZCB0aGUgaG91ciBpcyBiZXR3ZWVuIDEycG0gYW5kIDE0cG0gdGhlcmUsIGJpZCAkMS41MC4KIyAyLiBJZiB0aGUgdXNlciBpcyBpbiBOZXcgWW9yaywgYW5kIHRoZSBob3VyIGlzIGJldHdlZW4gMWFtIGFuZCAzYW0gdGhlcmUsIGJpZCAkMC4xMC4KIyAzLiBPdGhlcndpc2UsIGJpZCAkMC41MC4KCmlmIGV2ZXJ5IHJlZ2lvbiA9ICJVUzpDQSIsIHVzZXJfaG91ciByYW5nZSAoMTIsMTQpOgoJMS41CmVsaWYgZXZlcnkgcmVnaW9uID0gIlVTOk5ZIiwgdXNlcl9ob3VyIHJhbmdlICgxLDMpOgoJMC4xCmVsc2U6CgkwLjU"
    }
}

Étape 3. POST fichier du service d’analyseur de modèle personnalisé

Effectuez un POST appel au service d’analyseur de modèle personnalisé, comme indiqué ci-dessous.

$ curl -b cookies -c cookies -X POST -d @check_tree.json 'https://api.appnexus.com/custom-model-parser'

Étape 4. Vérifier la réponse

L’arborescence est valide

Si votre arbre de décision Bonsai est valide, l’objet custom-model-parser dans la réponse contient les champs suivants :

Champ Description
model_text Votre arbre de décision.
size Taille de votre arbre de décision, en octets.
Limite de taille : votre arborescence doit être inférieure à 3 Mo ou 3 145 728 octets. S’il est plus grand, vous ne pourrez pas ajouter votre arborescence à l’aide du service de modèle personnalisé.

Remarque

Point de terminaison custom-model-parser utilisé pour retourner le format de stockage Lisp d’un arbre de décision sous le champ «model_text ». Nous déprécions cette représentation interne, car il ne s’agissait que d’une étape intermédiaire et n’est utilisée nulle part sur la plateforme. Le champ contient désormais toujours la valeur «<removed> ». Le champ «size » de la réponse continuera d’être rempli avec précision et vous devez continuer à vous y fier pour savoir si votre modèle est trop volumineux pour le chargement.

{
    "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
        }
    }
    }

L’arborescence n’est pas valide

Si votre arbre de décision Bonsai n’est pas valide, le error champ dans la réponse identifie le problème. Une erreur peut provenir d’une syntaxe Bonsai non valide ou d’une utilisation non valide des fonctionnalités Bonsai. Pour plus d’informations, consultez Messages d’erreur ci-dessous.

{
    "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"
    }
}

Messages d’erreur

Erreurs de syntaxe

  • Caractère non valide trouvé :

    ERROR: Illegal character <character> found on line <line> at column <column>
    
  • Deuxième nœud racine trouvé :

    ERROR: End of file expected; <token> found.
    
  • Opérateur numérique utilisé avec un type non numérique :

    ERROR: Numeric operator <operator> invalid with non-numeric type <type> at line <line> at column <column>.
    
  • Nombre incorrect d’éléments dans une liste (comme avoir 3 éléments dans une expression de plage) :

    ERROR: Invalid number of elements in list at line <line> at column <column>. Required number of elements is <required number>, <number> elements found
    

Erreurs de fonctionnalité

Il existe deux types de fonctionnalités : les fonctionnalités que nous validons par rapport à la base de données et les fonctionnalités dont les valeurs doivent être certaines valeurs numériques. Lors de la validation par rapport à la base de données, le message d’erreur affiché pour une valeur non valide est :

ERROR: <description> expected on line <line> at column <column>; found <value found>.

Validation des valeurs numériques, le message d’erreur affiché pour une valeur non valide est :

ERROR: <description> expected on line <line> at column <column>; <numeric restriction>

Les fonctionnalités, les descriptions et les restrictions numériques sont les suivantes :

  • country: chaîne de pays
  • region: chaîne de région
  • city: Chaîne de ville
  • supply_type: Type d’approvisionnement
  • domain: chaîne d’URL
  • browser: chaîne de navigateur
  • carrier: chaîne de support
  • os_family: chaîne de la famille de systèmes d’exploitation
  • placement: ID de placement valide
  • size: Chaîne de taille
  • placement_group: ID de groupe de placement valide
  • publisher: ID d’éditeur valide
  • mobile_app: ID d’application mobile valide
  • cookie_age: Âge du cookie en minutes
  • user_hour: l’heure utilisateur doit être comprise entre 0 et 23
  • user_day: Le jour de l’utilisateur doit être compris entre 0 et 6
  • OBJECT[ID].lifetime_frequency: ici, l’objet est advertiser, line_itemou campaign (représentant le fractionnement), et ID est l’ID de l’objet. La fréquence de vie doit être un entier positif. Dans ce scénario, l’objet est advertiser.
  • OBJECT[ID].day_freq: ici, l’objet est advertiser, line_itemou campaign (représentant le fractionnement), et ID est l’ID de l’objet. La fréquence du jour doit être un entier positif. Dans ce scénario, l’objet est advertiser.
  • advertiser_recency: La récence de l’annonceur doit être un entier positif ou -1
  • device_type: chaîne de type d’appareil
  • estimated_iab_viewthrough_rate: le taux d’affichage IAB doit être un nombre compris entre 0 et 1