Funciones de costo para bandidos contextuales

14

Estoy usando Wongpal Wabbit para resolver un problema de bandido contextual . Estoy mostrando anuncios a los usuarios y tengo bastante información sobre el contexto en el que se muestra el anuncio (por ejemplo, quién es el usuario, en qué sitio se encuentra, etc.). Este parece ser un problema de bandido contextual bastante clásico, como lo describe John Langford .

En mi situación, hay 2 respuestas principales que un usuario puede tener a un anuncio: hacer clic (posiblemente varias veces) o no hacer clic. Tengo alrededor de 1,000 anuncios que puedo elegir. Vowpal Wabbit requiere una variable de destino en forma de action:cost:probabilitypara cada contexto. En mi caso, actiony probabilityson fáciles de entender: actiones el anuncio que elegí para mostrar, y probabilityes la probabilidad de elegir ese anuncio dada mi política actual para mostrar anuncios.

Sin embargo, tengo problemas para encontrar una buena manera de asignar mis pagos (clics) a los costos. Los clics son obviamente buenos, y los clics múltiples en el mismo anuncio también son mejores que los clics individuales en el mismo anuncio. Sin embargo, no hacer clic en un anuncio es neutral: en realidad no me cuesta nada más que la oportunidad perdida de un clic (estoy trabajando en un contexto publicitario extraño).

Algunas ideas que he tenido son:

  1. costo = -1 * signo (clics) + 0 * (no se hace clic)
  2. costo = -1 * clics + 0 * (sin clics)
  3. costo = -1 * signo (clics) + 0.01 * (no se hace clic)
  4. costo = -1 * clics + 0.01 * (sin clics)

En el caso de un vector de acción de (0, 1, 5, 0)los costos de estas 4 funciones sería:

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

Obviamente, hay muchas otras formas de representar eso clicks=goody, no clicks=bad.en general, ¿cómo debo modelar los costos para los problemas de bandido contextuales en el vocal wabbit? ¿Está bien representar los beneficios como costos negativos, o debería volver a escalar todo de manera que todos los costos sean positivos? ¿Está bien que las acciones relativamente neutrales tengan un costo cero, o debería darles un pequeño costo positivo para impulsar el modelo hacia las acciones positivas?

Zach
fuente
1
Estoy confundido por "hay 2 acciones posibles: un usuario puede hacer clic en el anuncio o un usuario no puede hacer clic en el anuncio". Si está tratando de decidir qué anuncio mostrar, ¿no deberían ser los anuncios las acciones?
alto
1
@alto: Creo que debería leer "hay 2 respuestas posibles que podemos registrar para un usuario". ¿Eso tiene más sentido?
Zach
No estoy seguro de que esto sea realmente un problema de bandido contextual porque no estoy seguro de cuál es su objetivo aquí. Resolver el problema del bandido contextual "intenta optimizar una política que elija acciones con un costo mínimo para los contextos observados". ¿Estás tratando de averiguar cuántos anuncios publicar? ¿Tratando de modelar el comportamiento del consumidor? ¿Algo más?
shadowtalker
1
@ssdecontrol Estoy tratando de averiguar qué anuncio mostrar, dado un contexto. Es un problema de ejemplo comúnmente utilizado para bandidos contextuales, pero estoy obteniendo resultados realmente malos del solucionador de bandidos contextuales de votepal-wabbit. Me preguntaba si tal vez debería haber una forma diferente de especificar el "costo" por clic o no clic en un anuncio.
Zach
1
@nik Realmente nunca lo descubrí, y en su lugar fui con un modelo multiclase regular de VW.
Zach

Respuestas: