Fonctions de coût pour les bandits contextuels

14

J'utilise vowpal wabbit pour résoudre un problème de bandit contextuel . Je montre des publicités aux utilisateurs, et j'ai pas mal d'informations sur le contexte dans lequel la publicité est diffusée (par exemple, qui est l'utilisateur, sur quel site il se trouve, etc.). Cela semble être un problème de bandit contextuel assez classique, comme décrit par John Langford .

Dans ma situation, il y a 2 réponses principales qu'un utilisateur peut avoir à une annonce: cliquer (éventuellement plusieurs fois) ou ne pas cliquer. J'ai environ 1 000 annonces parmi lesquelles je peux choisir. Vowpal Wabbit nécessite une variable cible sous la forme de action:cost:probabilitypour chaque contexte. Dans mon cas, actionet probabilitysont faciles à comprendre: actionest l'annonce que j'ai choisi d'afficher, et probabilityest la probabilité de choisir cette annonce compte tenu de ma politique actuelle de diffusion des annonces.

Cependant, j'ai du mal à trouver un bon moyen de mapper mes gains (clics) aux coûts. Les clics sont évidemment bons, et plusieurs clics sur la même annonce sont également meilleurs que les clics simples sur la même annonce. Cependant, ne pas cliquer sur une annonce est neutre: cela ne me coûte en fait rien d'autre que l'opportunité manquée d'un clic (je travaille dans un contexte publicitaire étrange).

Voici quelques idées que j'ai eues:

  1. coût = -1 * signe (clics) + 0 * (non cliqué)
  2. coût = -1 * clics + 0 * (non cliqué)
  3. coût = -1 * signe (clics) + 0,01 * (non cliqué)
  4. coût = -1 * clics + 0,01 * (non cliqué)

Dans le cas d'une action vecteur des (0, 1, 5, 0)coûts de ces 4 fonctions serait:

  1. (0, -1, -1, 0)
  2. (0, -1, -5, 0)
  3. (0.01, -1, -1, 0.01)
  4. (0.01, -1, -5, 0.01)

Il existe évidemment de nombreuses autres façons de représenter cela clicks=goodet, no clicks=bad.en général, comment dois-je modéliser les coûts des problèmes contextuels de bandit dans vowpal wabbit? Est-il acceptable de représenter les avantages comme des coûts négatifs, ou dois-je tout redimensionner de telle sorte que tous les coûts soient positifs? Est-il acceptable que des actions relativement neutres aient un coût nul, ou dois-je leur donner un petit coût positif pour pousser le modèle vers les actions positives?

Zach
la source
1
Je suis confus par "il y a 2 actions possibles: un utilisateur peut cliquer sur l'annonce ou un utilisateur ne peut pas cliquer sur l'annonce." Si vous essayez de décider quelle annonce afficher, les annonces ne devraient-elles pas être les actions?
alto
1
@alto: Je pense que cela devrait se lire "il y a 2 réponses possibles que nous pouvons enregistrer pour un utilisateur". Est-ce que ça fait plus de sens?
Zach
Je ne suis pas sûr que ce soit vraiment un problème contextuel de bandit parce que je ne sais pas quel est votre objectif ici. Résoudre le problème du bandit contextuel "essaie d'optimiser une politique qui choisit des actions avec un coût minimum pour les contextes observés." Essayez-vous de déterminer le nombre d'annonces à diffuser? Vous essayez de modéliser le comportement des consommateurs? Autre chose?
shadowtalker
1
@ssdecontrol J'essaie de déterminer quelle annonce afficher, compte tenu du contexte. C'est un exemple de problème couramment utilisé pour les bandits contextuels, mais j'obtiens de très mauvais résultats du solveur de bandit contextuel de vowpal-wabbit. Je me demandais s'il y avait peut-être une façon différente de spécifier le «coût» d'un clic ou d'un non-clic sur une annonce.
Zach
1
@nik Je ne l'ai jamais vraiment compris, et j'ai plutôt opté pour un modèle multiclasse classique de VW.
Zach

Réponses: