Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Remarque
Cette page suppose que vous êtes déjà familiarisé avec la langue Bonsai et les fonctionnalités Bonsai.
Vous utilisez le langage Bonsai pour écrire une logique d’arbre de décision pour les modèles prédictifs personnalisés. Chaque branche conduit à un nœud, ou « feuille », qui prend la valeur d’une valeur numérique simple représentant l’enchère. Au lieu d’évaluer une valeur statique unique, les feuilles actives évaluent une valeur d’enchère qui est modifiée dynamiquement en fonction d’une métrique de performances ou de remise publicitaires spécifiée. Les feuilles intelligentes vous permettent également de nommer des feuilles individuelles avec une valeur de chaîne arbitraire. Cela est disponible dans le flux standard pour faciliter le débogage et l’analyse des performances.
Remarque
Les feuilles intelligentes sont définies à l’aide d’un formulaire similaire à YAML, un format de sérialisation des données lisible par l’utilisateur.
syntaxe compute()
Vous pouvez utiliser des feuilles intelligentes pour spécifier une valeur statique ou une enchère calculée à partir d’une métrique publicitaire ou pour spécifier qu’aucune enchère n’est effectuée. Si la valeur est calculée, elle est déterminée par l’expression compute , qui utilise le format suivant :
value: compute(input_field, multiplier, offset, min_value, max_value)
Ceci est évalué comme l’équation suivante :
max(min_value, min(max_value, input_field * multiplier + offset))
Autrement dit, la valeur calculée est le champ d’entrée multiplié par le multiplicateur, plus un décalage. Si le résultat est inférieur à la valeur minimale, la valeur minimale est retournée à la place. Si le résultat est supérieur à la valeur maximale, la valeur maximale est retournée. Pour omettre un calcul (multiplicateur, décalage, valeur minimale ou valeur maximale), utilisez un trait de soulignement (_) pour la valeur omise. Si vous omettez de spécifier la valeur du multiplicateur, la valeur par défaut est 1.
Remarque
Les enchères calculées par le modèle sont toujours exprimées dans la devise définie sur l’annonceur, même si vous avez spécifié une autre devise pour la campagne.
Champs feuilles intelligents
| Champ | Type de champ | Description | Par défaut |
|---|---|---|---|
value |
text | Valeur de l’enchère. Si le modèle d’arborescence est le prix de l’offre, l’offre est exprimée dans la devise définie pour cet annonceur. Si le modèle d’arborescence est un modificateur d’enchère, l’enchère est un float ou un entier. Les valeurs possibles sont les suivantes : - compute(input_field, multiplier, offset, min_value, max_value)- no_bid- une valeur statique (nombre) compute La spécification calcule une valeur en fonction de l’un des champs d’entrée pour compute() ci-dessous. Pour omettre un calcul (multiplicateur, décalage, valeur minimale ou valeur maximale), utilisez un trait de soulignement (_) pour la valeur omise. Avertissement: N’utilisez pas d’expressions compute() qui sont évaluées à des nombres négatifs ou à zéro (0). Ces valeurs ne sont pas prises en charge et peuvent fournir des résultats inattendus. Il est préférable de spécifier no_bid explicitement. |
|
leaf_name |
string(7) | Valeur de chaîne facultative qui sera transmise aux journaux et aux rapports pour faciliter le débogage et l’analyse des performances.
leaf_name peut contenir jusqu’à sept caractères ASCII (7 bits) et n’est pas obligatoirement unique.Note: Étant donné que leaf_name est une chaîne, la valeur doit être placée entre guillemets doubles ("). |
Champs d’entrée pour compute()
Les valeurs des champs d’entrée sont déterminées par l’optimisation Xandr. Pour plus d’informations, consultez le Guide d’optimisation de l’élément de ligne augmentée dans la documentation (connexion requise).
| Champ | Type | Description |
|---|---|---|
estimated_iab_viewthrough_rate |
float, integer | Quelle est la probabilité que cette impression d’affichage web soit mesurée comme visible par la norme IAB, de 0 à 1. |
predicted_iab_video_view_rate |
float, integer | Quelle est la probabilité que cette impression vidéo soit mesurée comme visible par la norme IAB, de 0 à 1. |
predicted_video_completion_rate |
float, integer | Quelle est la probabilité que l’utilisateur watch entièrement cette impression vidéo, de 0 à 1. L’inventaire non vidéo est 0. |
estimated_average_price |
float, integer | Prix médian pour cette impression. |
estimated_clearing_price |
float, integer | Prix du 80e centile pour cette impression. |
uniform |
float, integer | Nombre aléatoire uniforme entre 0 et 1 (0 inclus, 1 exclus). |
Utilisation de segments comme entrée pour compute()
Vous pouvez effectuer des calculs à l’aide de la valeur ou de l’âge de l’utilisateur dans un segment interne ou tiers pour déterminer une valeur d’enchère. Si l’utilisateur n’est pas présent dans le segment, aucune enchère n’est effectuée. Utilisez le service de segment pour récupérer les ID de segment.
| Champ | Type | Description |
|---|---|---|
segment[ID].value |
float, integer | Valeur de l’utilisateur dans un segment interne ou tiers. Si l’utilisateur n’est pas présent dans le segment, aucune enchère n’est effectuée.ID est l’ID de segment. |
segment[ID].age |
float, integer | Âge d’un utilisateur dans un segment interne ou tiers. Si l’utilisateur n’est pas présent dans le segment, aucune enchère n’est effectuée.ID est l’ID de segment. |
Utilisation de la fréquence ou de la récence comme entrées pour compute()
Vous pouvez effectuer des calculs à l’aide de la fréquence ou de la récence pour déterminer une valeur d’enchère.
| Champ | Type | Description |
|---|---|---|
OBJECT[ID].day_frequency |
float, integer | Nombre d’annonces vues par un utilisateur le jour actuel. Cela peut être déterminé pour un annonceur, un élément de ligne ou une campagne. Si aucune donnée de fréquence n’est trouvée, la fréquence est marquée comme zéro (0).OBJECT est advertiser, line_itemou campaign, et ID est l’ID d’objet. Utilisez le service annonceur, le service d’élément de ligne ou le service campagne pour récupérer les ID. |
OBJECT[ID].lifetime_frequency |
float, integer | Nombre de publicités vues par un utilisateur au cours de la durée de vie d’un annonceur, d’un élément de ligne, d’une campagne ou d’une création. Si aucune donnée de fréquence n’est trouvée, la fréquence est marquée comme zéro (0).OBJECT est advertiser, line_itemou campaign, et ID est l’ID d’objet. Utilisez le service annonceur, le service d’élément de ligne ou le service campagne pour récupérer les ID. |
OBJECT[ID].recency |
float, integer | Nombre de minutes depuis que l’utilisateur a vu une publicité. Cela peut être déterminé pour toutes les annonces d’un annonceur, d’un élément de ligne ou d’une campagne, ou pour un créateur individuel. Si aucune donnée de récence n’est trouvée, aucune enchère n’est effectuée.OBJECTest advertiser, line_itemou , ou campaign, et creativeID est l’ID d’objet. Utilisez le service annonceur, le service d’élément de ligne ou le service campagne pour récupérer les ID. |
Exemples
Prix de l’offre avec prix moyen estimé
Une feuille a un prix d’enchère minimal autorisé, mais pas de limite sur le maximum.
Remarque
Dans l’exemple de code ci-dessous, les lignes commençant par # sont des commentaires pour vous aider à comprendre la logique de cette arborescence.
# This tree determines a bid price as follows:
# 1. If the user is in California, bid the estimated average price * 1.05, plus $0.03.
# 2. Otherwise, bid the estimated average price * .75, but don't bid less than $1.00. There is no maximum bound for bids.
if region = "US:CA":
leaf_name: "eap001"
value: compute(estimated_average_price, 1.05, 0.03, _, _)
else:
leaf_name: "eap002"
value: compute(estimated_average_price, 0.75, 0.00, 1.00, _)
Arbre de prix des enchères avec estimation du prix de compensation, pas d’enchère et des feuilles intelligentes de valeur statique
Remarque
Dans l’exemple de code ci-dessous, les lignes commençant par # sont des commentaires pour vous aider à comprendre la logique de cette arborescence.
# This tree determines a bid price as follows:
# 1. If the user is in California, bid the estimated clearing price * 1.05, plus $0.03.
# 2. If the user is in New York, bid the estimated clearing price * .75, but don't bid less than $0.10 or more than $1.00.
# 3. If the user is in Delaware, do not bid.
# 4. Otherwise, bid $0.50.
if region = "US:CA":
leaf_name: "ecp_ca"
value: compute(estimated_clearing_price, 1.05, 0.03, _, _)
elif region = "US:NY":
leaf_name: "ecp_ny"
value: compute(estimated_clearing_price, 0.75, _, 0.10, 1.00)
elif region = "US:DE":
leaf_name: "no_de"
value: no_bid
else:
leaf_name: "default"
value: 0.50
Arbre de prix des enchères avec des feuilles intelligentes de taux d’affichage IAB estimés
Remarque
Dans l’exemple de code ci-dessous, les lignes commençant par # sont des commentaires pour vous aider à comprendre la logique de cette arborescence.
# This tree determines a bid modifier as follows:
# 1. If the user is in California, bid the value determined by Xandr optimization multipled by the estimated IAB viewthrough rate and 0.50, plus $0.03.
# 2. If the user is in New York, bid the value determined by Xandr optimization multiplied by the estimated IAB viewthrough rate and 0.75.
# 3. If the user is in Delaware, bid the estimated clearing price, but don't bid less than $0.10 or more than $1.00.
# 4. Otherwise, bid $0.50.
if every region = "US:CA":
leaf_name: "t00001"
value: compute(estimated_iab_viewthrough_rate, 0.50, 0.03, _, _)
elif region = "US:NY":
leaf_name: "t00002"
value: compute(estimated_iab_viewthrough_rate, 0.70, 0.00, _, _)
elif region = "US:DE":
leaf_name: "t00003"
value: compute(estimated_clearing_price, 1.00, _, 0.10, 1.00)
else:
leaf_name: "default"
value: 0.50
Enchère basée sur la valeur du segment
Remarque
Dans l’exemple de code ci-dessous, les lignes commençant par # sont des commentaires pour vous aider à comprendre la logique de cette arborescence.
#1. If the user is in California, bid the value of segment 111 times 2.0, plus 1.0.
#2. Otherwise, do not bid.
if region = "US:CA":
leaf_name: "a00001"
value: compute(segment[111].value, 2.0, 1.0, _, _)
else:
value: no_bid
Enchère basée sur l’âge du segment
Remarque
Dans l’exemple de code ci-dessous, les lignes commençant par # sont des commentaires pour vous aider à comprendre la logique de cette arborescence.
#1. If the user is in California, bid the segment age times -.2, plus 8.0, as long as the bid is under 8.0.
#2. Otherwise, do not bid.
if region = "US:CA":
leaf_name: "b00001"
value: compute(segment[111].age, -0.2, 8.0, 0.0, 8.0)
else:
value: no_bid
Enchère basée sur la fréquence quotidienne
Remarque
Dans l’exemple de code ci-dessous, les lignes commençant par # sont des commentaires pour vous aider à comprendre la logique de cette arborescence.
#1. If the user is in California and in segment 111, bid the user's daily frequency for line item 222 times -.2, plus 5, with an upper bound of 4.
#2. Otherwise, do not bid.
if every region="US:CA", segment[111]:
leaf_name: "d0001"
value: compute(line_item[222].day_frequency, -0.2, 5.0, 0.0, 4.0)
else:
leaf_name: "d0000"
value: no_bid
Enchère basée sur la fréquence de durée de vie
Remarque
Dans l’exemple de code ci-dessous, les lignes commençant par # sont des commentaires pour vous aider à comprendre la logique de cette arborescence.
#1. If the user is in California and in segment 111, bid the lifetime frequency for creative 333 times -.2, plus 8, with an upper bound of 6.
#2. Otherwise, do not bid.
if every region="US:CA", segment[111]:
leaf_name: "e0001"
value: compute(creative[333].lifetime_frequency, -0.2, 8.0, 0.0, 6.0)
else:
leaf_name: "e0000"
value: no_bid
Enchère basée sur la récence
Remarque
Dans l’exemple de code ci-dessous, les lignes commençant par # sont des commentaires pour vous aider à comprendre la logique de cette arborescence.
#1. If the user is in California, bid the recency for creative 333 times -.2, plus 8, with an upper bound of 6.
#2. Otherwise, do not bid.
if region="US:CA":
leaf_name: "f0001"
value: compute(creative[333].recency, -0.2, 8.0, 0.0, 6.0)
else:
leaf_name: "f0000"
value: no_bid