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.
L’objectif de ce document est de servir de ressource d’API temporaire pour les services Science des données Toolkit qui permettent de créer des modèles de régression logistique, des tables de recherche et des prédictions de table hachées.
Liste de descripteurs
Descripteur scalaire
Type:
"scalar_descriptor"
Fonctionnalités :
appnexus``_auditedcookie_ageestimated_average_priceestimated_clearing_pricepredicted_iab_view_ratepredicted_video_completion_rateself_auditedsizecreative_sizespend_protectionuniformuser_age
Remarque
Le size descripteur est représenté sous la forme d’une chaîne dans vos modèles (« 300 x 250 », par instance), mais converti en scalaire dans notre soumissionnaire. Toute taille étant techniquement valide dans notre système, cette fonctionnalité est traitée comme une caractéristique scalaire plutôt qu’une caractéristique catégorielle.
Exemple :
{
"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
}
Descripteur de segment
Type:
"segment_descriptor"
Fonctionnalités :
segment_valuesegment_agesegment_presence
Exemple :
{
"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
}
Descripteur fréquence/récence
Type:
"frequency_recency_descriptor"
Fonctionnalités :
frequency_lifefrequency_dailyrecency
Types d’objets disponibles pour ce descripteur :
advertiserline_itemcampaign
Exemple :
{
"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
}
Descripteur catégoriel
Type:
"categorical_descriptor"
Fonctionnalités :
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
Exemple :
{
"type": "categorical_descriptor",
"feature_keyword": "city"
}
Descripteur de table de hachage
Type:
"hashed"
Exemple :
{
"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)
}
Tables de hachage
Ce point de terminaison consiste à envoyer une table pré-hachée.
bucket_index0 et bucket_index1, de 64 bits chacun, sont là pour prendre en charge les algorithmes de hachage qui produisent des valeurs longues en tant que clés. Actuellement, nous ne prenons en charge qu’un seul algorithme de hachage : MurmurHash3_x64_128, qui créera deux entiers 64 bits, mais nous n’utilisons que les 64 bits inférieurs du hachage.
Les valeurs dans bucket_index0 doivent toujours être inférieures (2 ^ hash_table_size_log) à ou elles seront rejetées.
Actuellement, les valeurs dans bucket_index1 sont ignorées, car elles doivent être utilisées pour une extension ultérieure. Si une valeur est envoyée pour bucket_index1, elle doit être 0. Le paramètre est facultatif.
Clés de table de hachage
Pour chacune de vos clés de table de hachage, vous aurez besoin d’une valeur uint32. Ces valeurs doivent être l’ID de l’objet respectif que vous référencez à partir de notre système , domain_idpour instance, plutôt que la valeur de chaîne de domaine. Ces clés uint32 sont ensuite transformées en tableau d’octets (little-endian) et hachées.
Exemple Python
hash_bucket = (mmh3.hash64(bytes, seed)[0]) % table_size
Logit, fonction
La création et la mise à jour du modèle sont similaires. Le même format de requête doit être utilisé pour les deux.
| Méthode | Point de terminaison | Objectif |
|---|---|---|
GET |
/custom-model-logit |
Récupérez une fonction Logit associée aux paramètres fournis. |
PUT |
/custom-model-logit |
Mettez à jour une fonction Logit existante avec des données dans la charge utile JSON. |
POST |
/custom-model-logit |
Create une nouvelle fonction Logit à partir des données de la charge utile JSON. |
DELETE |
/custom-model-logit |
Supprimez une fonction Logit existante correspondant aux paramètres fournis. |
Paramètres
| Nom | Type de données | Type de paramètre | Obligatoire activé | Exemple |
|---|---|---|---|---|
id |
int | Requête |
GET, PUT, DELETE |
?id=1 |
member_id |
int | Requête |
PUT, POST |
?member_id=1 |
Exemple 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]},
]
}
]
}}