Compartir a través de


Ciencia de datos Toolkit: modelo personalizado de selección creativa

De forma predeterminada, Xandr distribuye aleatoriamente las creatividades asociadas a un elemento de línea. También puede asignar creatividades mediante un modelo personalizado. Se puede usar cualquier característica o lógica del lenguaje Bonsai para determinar qué creatividad se debe servir.

Nota:

Esta funcionalidad solo está disponible para el elemento de línea aumentada.

¿Cómo funciona la ponderación?

En cada hoja, se enumeran los identificadores creativos y sus pesos. Los pesos pueden ser enteros entre 0 y 1000. El porcentaje de asignación de una creatividad se determina dividiendo el peso de la creatividad por la suma del peso de todos los creativos aptos.

Por ejemplo, un elemento de línea tiene tres creatividades, A, B y C, y se ponderan respectivamente 50, 30 y 20. Atenderán el 50 %, el 30 % y el 20 % de todas las impresiones si todos los creativos son aptos. Si solo los creativos B y C son aptos, la creatividad B servirá en el 60 % de las impresiones y la C creativa servirá en el 40 %.

Nota:

Es una buena idea incluir solo creativos que serán aptos en circunstancias similares en la misma hoja para facilitarle la determinación de los efectos de la ponderación y la segmentación. Por ejemplo, es posible que quiera incluir solo las creatividades del mismo tamaño, o solo las creatividades que son aptas para SSL, en una sola hoja, lo que garantiza que todas las creatividades serán aptas para las mismas impresiones.

Siga estas directrices para obtener los mejores resultados al ponderar sus creatividades:

  • Los creativos con un peso de cero (0) no se servirán.
  • Si una hoja no contiene una lista creativa, la selección creativa volverá a la selección aleatoria de las creatividades asociadas al elemento de línea.
  • Es posible que los modelos no contengan identificadores creativos duplicados.
  • Las creatividades deben adjuntarse al elemento de línea. Las creatividades que se adjuntan al elemento de línea pero no se incluyen en una hoja se consideran que tienen un peso de cero.

Sintaxis hoja de selección creativa

La sintaxis de las hojas de distribución creativa es:

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

Flujo de trabajo de API

Paso 1: Create un elemento de línea aumentada

En este ejemplo, se crea un elemento de línea aumentada.

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

Para obtener más información, vea Flujo de trabajo de ALI con modelos personalizados.

Paso 2: Adjuntar identificadores creativos al elemento de línea aumentada

En este ejemplo, asociamos tres creatividades a nuestro elemento de línea.

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

Paso 3: Create un árbol de modelos personalizado

En este ejemplo, creamos un modelo personalizado que ponderará y seleccionará creatividades.

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

Paso 4: Carga del modelo personalizado

En este ejemplo, cargamos el modelo personalizado.

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

Para obtener más información, vea Servicio de modelos personalizados.

Paso 5: Asociar el modelo personalizado con el elemento de línea

En este ejemplo, asociamos el modelo personalizado al elemento de línea estableciendo el type campo de la matriz del elemento de custom_models línea en ""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"
            }
         ]
                ...
   }
} 

Ejemplos

Árbol de distribución creativo con diferentes ponderaciones para creativos

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

Árbol de distribución creativo con distribución aleatoria uniforme

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