Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El propósito de este documento es servir como un recurso de API temporal para los servicios Ciencia de datos Toolkit que permiten la creación de modelos de regresión logística, tablas de búsqueda y predictores de tabla hash.
Lista de descriptores
Descriptor escalar
Tipo:
"scalar_descriptor"
Características:
appnexus``_auditedcookie_ageestimated_average_priceestimated_clearing_pricepredicted_iab_view_ratepredicted_video_completion_rateself_auditedsizecreative_sizespend_protectionuniformuser_age
Nota:
El size descriptor se representa como una cadena en los modelos ("300x250", por ejemplo), aunque se convierte en un escalar en el licitador. Cualquier tamaño es técnicamente válido en nuestro sistema, por lo que esta característica se trata como una característica escalar en lugar de una característica categórica.
Ejemplo:
{
"type": "scalar_descriptor",
"feature_keyword": "cookie_age",
"default_value": 0, //Value returned by the descriptor if no match is found
"initial_range_log": 4, //Used for log bucketing, initial range
"bucket_count_log_per_range": 2 //used for log bucketing, # of buckets per range
}
Descriptor de segmento
Tipo:
"segment_descriptor"
Características:
segment_valuesegment_agesegment_presence
Ejemplo:
{
"type": "segment_descriptor",
"feature_keyword": "segment_age",
"segment_id": 2, //ID of referenced segment
"default_value": 0, //Value returned by the descriptor if no match is found
"initial_range_log": 4, //Used for log bucketing, initial range
"bucket_count_log_per_range": 2 //used for log bucketing, # of buckets per range
}
Descriptor de frecuencia/recencia
Tipo:
"frequency_recency_descriptor"
Características:
frequency_lifefrequency_dailyrecency
Tipos de objeto disponibles para este descriptor:
advertiserline_itemcampaign
Ejemplo:
{
"type": "frequency_recency_descriptor",
"feature_keyword": 'frequency_life',
"object_type": 'advertiser',
"object_id": 1, //ID of the referenced advertiser,
"default_value": 0, //Value returned by the descriptor if no match is found
"initial_range_log": 4, //Used for log bucketing, initial range
"bucket_count_log_per_range": 2 //used for log bucketing, # of buckets per range
}
Descriptor categórico
Tipo:
"categorical_descriptor"
Características:
countryregioncitydmapostal_codeuser_dayuser_houros_familyos_extendedbrowserlanguageuser_genderdomainip_addresspositionplacementplacement_grouppublisherseller_member_idsupply_typedevice_typedevice_modelcarriermobile_appmobile_app_instancemobile_app_bundleappnexus``_intended_audienceseller_intended_audiencespend_protectionuser_group_idadvertiser_idbrand_categorycreativeinventory_url_idmedia_type
Ejemplo:
{
"type": "categorical_descriptor",
"feature_keyword": "city"
}
Descriptor de tabla hash
Tipo:
"hashed"
Ejemplo:
{
"type": "hashed",
"keys": [ array of one to 5 descriptors in this list:
scalar_descriptor,
custom_model_descriptor,
freq_rec_descriptor,
segment_descriptor,
categorical_descriptor
],
"hash_seeds": [42, 42, 42, 42, 42, 42], //Seeds used when passed to Murmurhash3_x64_128 function, only first one is used for now, array is for planned future hash functions that need more than one seed
"hash_id": <existing hash table ID>,
"default_value": 0, //Value returned by the descriptor if no match is found in your hash table
"hash_table_size_log": 20 //log of maximum value for a key of your table. Values larger than 2^hash_table_size_log will be rejected. Max for hash_table_size_log is 64 (no bucketing)
}
Tablas hash
Este punto de conexión es para enviar una tabla con hash previo.
bucket_index0 y bucket_index1, cada 64 bits de largo, están ahí para admitir algoritmos hash que generan valores largos como claves. Actualmente, solo se admite un algoritmo hash: MurmurHash3_x64_128, que creará dos enteros de 64 bits, pero solo usamos los 64 bits inferiores del hash.
Los valores de bucket_index0 deben ser siempre más pequeños que (2 ^ hash_table_size_log) o se rechazarán.
Actualmente, los valores de bucket_index1 se omiten, ya que se usarán para la expansión futura. Si se envía un valor para bucket_index1, debe ser 0. El parámetro es opcional.
Claves de tabla hash
Para cada una de las claves de tabla hash, necesitará un valor uint32. Estos valores deben ser el identificador del objeto respectivo al que se hace referencia desde nuestro sistema: domain_id, por ejemplo, en lugar del valor de cadena de dominio. A continuación, estas claves uint32 se transforman en una matriz de bytes (little-endian) y se aplica un hash.
Ejemplo de Python
hash_bucket = (mmh3.hash64(bytes, seed)[0]) % table_size
Función Logit
La creación y actualización del modelo son similares y se va a usar el mismo formato de solicitud para ambos.
| Método | Punto de conexión | Objetivo |
|---|---|---|
GET |
/custom-model-logit |
Recupere una función Logit asociada a los parámetros proporcionados. |
PUT |
/custom-model-logit |
Actualice una función Logit existente con datos en la carga json. |
POST |
/custom-model-logit |
Create una nueva función Logit a partir de datos de la carga json. |
DELETE |
/custom-model-logit |
Elimine una función Logit existente que coincida con los parámetros proporcionados. |
Parámetros
| Nombre | Tipo de datos | Tipo de parámetro | Obligatorio activado | Ejemplo |
|---|---|---|---|---|
id |
Entero | Consulta |
GET, PUT, DELETE |
?id=1 |
member_id |
Entero | Consulta |
PUT, POST |
?member_id=1 |
Ejemplo POST
{"custom-model-logit": {
"member_id": 1,
"beta0": 1.2,
"max": 5,
"min": 0, //optional, will be set to 0 if not passed
"name": "Sample LRE model",
"offset": 0.3, //optional, will be set to 0 if not passed
"scale": 1.5, //optional, will be set to 1 if not passed
"predictors": [
{
"coefficient": 0.2,
"feature_descriptor": {
"bucket_count_log_per_range": 31,
"default_value": 0,
"feature_keyword": "size",
"initial_range_log": 31,
"type": "scalar_descriptor"
},
"type": "scalar"
},
{
"coefficient": 0.3,
"feature_descriptor": {
"bucket_count_log_per_range": 31,
"custom_model_id": 2,
"default_value": 0,
"feature_keyword": "custom_model",
"initial_range_log": 31,
"type": "custom_model_descriptor"
},
"type": "scalar"
},
{
"coefficient": 0.4,
"feature_descriptor": {
"bucket_count_log_per_range": 31,
"default_value": 0,
"feature_keyword": "frequency_life",
"initial_range_log": 31,
"object_id": 1,
"object_type": "advertiser",
"type": "frequency_recency_descriptor"
},
"type": "scalar"
},
{
"coefficient": 0.5,
"feature_descriptor": {
"bucket_count_log_per_range": 31,
"default_value": 0,
"feature_keyword": "segment_age",
"initial_range_log": 31,
"segment_id": 2,
"type": "segment_descriptor"
},
"type": "scalar"
},
{
"type": "hashed",
"keys": [
{
"type": "categorical_descriptor",
"feature_keyword": "advertiser_id"
},
{
"type": "scalar_descriptor",
"feature_keyword": "user_age",
"default_value": 0
}
],
"hash_seeds": [42, 42, 42, 42, 42, 42],
"default_value": 0,
"hash_table_size_log": 20,
"coefficients": [
{"bucket_index0": 0, "bucket_index1": 0, "weight": 1.3},
{"bucket_index0": 1, "bucket_index1": 0, "weight": 0.7},
{"bucket_index0": 2, "bucket_index1": 0, "weight": 1.5},
{"bucket_index0": 3, "bucket_index1": 0, "weight": 0.9}
]
},
{
"type": "lookup",
"default_value": 0.1,
"features": [
{
"type": "categorical_descriptor",
"feature_keyword": "advertiser_id"
},
{
"type": "scalar_descriptor",
"feature_keyword": "user_age",
"default_value": 0
}
],
"coefficients": [
{'weight': 1.1, 'key': [1, 1]},
{'weight': 1.3, 'key': [2, 2]},
{'weight': 1.2, 'key': [3, 3]},
]
}
]
}}