Partager via


Science des données Toolkit - Modèle personnalisé de sélection créative

Par défaut, Xandr distribue de manière aléatoire les éléments créatifs associés à un élément de ligne. Vous pouvez également affecter des éléments créatifs à l’aide d’un modèle personnalisé. Toute fonctionnalité ou logique du langage Bonsai peut être utilisée pour déterminer la création qui doit être servie.

Remarque

Cette fonctionnalité n’est disponible que pour l’élément de ligne augmenté.

Comment fonctionne la pondération ?

Dans chaque feuille, vous répertoriez les ID créatifs et leurs poids. Les pondérations peuvent être des entiers compris entre 0 et 1 000. Le pourcentage d’allocation d’un créatif est déterminé en divisant le poids du créatif par la somme du poids de tous les créatifs éligibles.

Par exemple, un élément de ligne a trois éléments créatifs, A, B et C, et ils sont pondérés respectivement 50, 30 et 20. Ils serviront sur 50 %, 30 % et 20 % de toutes les impressions si toutes les créations sont éligibles. Si seuls les créatifs B et C sont éligibles, les créatifs B serviront sur 60 % des impressions et les créatifs C serviront sur 40 %.

Remarque

Il est judicieux d’inclure uniquement les créatifs qui seront éligibles dans des circonstances similaires sur la même feuille pour vous permettre de déterminer plus facilement les effets de la pondération et du ciblage. Par exemple, vous souhaiterez peut-être inclure uniquement les créatifs de la même taille, ou uniquement les créatifs éligibles à SSL, dans une seule feuille, garantissant ainsi que tous les créatifs seront éligibles pour les mêmes impressions.

Suivez ces instructions pour obtenir les meilleurs résultats lors de la pondération de vos créatifs :

  • Les créatifs dont le poids est égal à zéro (0) ne seront pas servis.
  • Si une feuille ne contient pas de liste de créations, la sélection créative revient à la sélection aléatoire des créations associées à l’élément de ligne.
  • Les modèles ne peuvent pas contenir d’ID créatifs en double.
  • Les éléments créatifs doivent être attachés à l’élément de ligne. Les éléments créatifs qui sont attachés à l’élément de ligne mais qui ne sont pas inclus dans une feuille sont considérés comme ayant un poids de zéro.

Syntaxe de feuille de sélection créative

La syntaxe des feuilles de distribution créative est la suivante :

leaf_name: "NAME"
creatives: {ID: WEIGHT, ID: WEIGHT, ID: WEIGHT} 

Flux de travail d’API

Étape 1 : Create un élément de ligne augmenté

Dans cet exemple, nous créons un élément de ligne augmenté.

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

Pour plus d’informations, consultez Flux de travail ALI avec des modèles personnalisés.

Étape 2 : Attacher des ID créatifs à l’élément de ligne augmentée

Dans cet exemple, nous associons trois éléments créatifs à notre élément de ligne.

 $ 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
            }
         ] 
                ...    
   }
}

Étape 3 : Create une arborescence de modèles personnalisée

Dans cet exemple, nous créons un modèle personnalisé qui pèsera et sélectionnera les éléments créatifs.

$cat creative-tree
if user_hour = 1:
        leaf_name: "cs_1"
        creatives: {12345: 30, 67890: 20}
else:
        leaf_name: "cs_2"
        creatives: {12347: 1}

Étape 4 : Charger le modèle personnalisé

Dans cet exemple, nous chargeons le modèle personnalisé.

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

Pour plus d’informations, consultez Service de modèle personnalisé.

Étape 5 : Associer le modèle personnalisé à l’élément de ligne

Dans cet exemple, nous associons le modèle personnalisé à l’élément de ligne en définissant le type champ dans le tableau de l’élément de custom_models ligne sur « ».creative_selection

$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"
            }
         ]
                ...
   }
} 

Exemples

Arbre de distribution créatif avec différentes pondérations pour les créatifs

if user_hour = 1:
        leaf_name: "cs_1"
        creatives: {64947527: 30, 64946991: 20, 65023365: 10}
else:
        leaf_name: "cs_2"
        creatives: {65946990: 1}

Arborescence de distribution créative avec distribution aléatoire uniforme

if user_hour = 1:
        leaf_name: "cs_1"
        creatives: {64947527: 1, 64946991: 1, 65023365: 1}
else:
        leaf_name: "cs_2"
        creatives: {65946990: 1}