Su problema es un problema estándar en el área del aprendizaje por refuerzo y puede ser reformulado como problema del bandido n-armado donde hay que encontrar los mejores brazos de los que tirar para optimizar la ganancia global. En este caso un brazo = un cabezal y la ganancia es equivalente a 1 (si hay conversión), si no 0.
Realmente recomiendo leer el libro de Sutton y Barto especialmente capítulo 2 donde se explica en detalle la técnica básica para resolver el problema del bandido n-armado (cómo seleccionar, cómo aumentar los pesos, cómo hacer frente a las ganancias que cambian con el tiempo, etc.). Es realmente una lectura estupenda (y no innecesariamente complicada).
Editar: Aquí hay algunas explicaciones detalladas a modo de resumen de cómo funciona la RL en el caso de la OP. Algunas partes son bastante similares a la respuesta de Matt, pero no todas.
En el aprendizaje por refuerzo (RL) diferenciamos entre "exploración" y "explotación". Durante la exploración buscamos en el espacio de acciones disponibles (también conocidas como rúbricas a mostrar) para encontrar una mejor o la mejor, mientras que en la explotación sólo utilizamos las acciones/rúbricas para las que ya sabemos que son buenas. Para medir lo buena que es una acción, calculamos la recompensa que obtuvo una acción cuando se utilizó y, por lo tanto, utilizamos este valor para estimar la recompensa del uso posterior de esta acción. En nuestro caso, la recompensa media esperada de una acción/rúbrica es simplemente la tasa de conversión.
Algunas definiciones:
$h_i$ = Rúbrica i
$Q(h_i)$ = Función de recompensa esperada de la partida i = $conversion_i / views_i$
¿Cómo se selecciona una acción o rúbrica? Una opción es seleccionar con avidez la acción con la mayor estimación de recompensa/tasa de conversión. Sin embargo, de este modo no podemos encontrar soluciones nuevas o mejores (no hay exploración en absoluto). Lo que queremos es un equilibrio entre la exploración y la explotación. Por ello, utilizamos un procedimiento denominado "selección máxima suave".
$weight(h_i)=\frac{exp(Q(h_i)/\tau)}{\sum_j exp(Q(h_j)/\tau)}$ (ver la selección de softmax en el libro de sutton )
Calcule estos pesos y luego seleccione una acción al azar con respecto a estos pesos (véase, por ejemplo, la función sample() en R)
Ajustando el parámetro tau, se puede controlar el equilibrio entre la exploración y la explotación. Si $\tau$ = 0, entonces volvemos a la selección de acción codiciosa pura, si $\tau$ llega al infinito (o es lo suficientemente grande), todos los pesos se vuelven iguales y nos limitamos a un muestreo aleatorio puro (sin explotación).
¿Cómo se actualizan las recompensas? Se puede utilizar esta fórmula ...
$Q_{k+1}(h)=Q_k(h) + \alpha*(r_{k+1}-Q_k(h))$ (ver ver la fórmula en el libro de Sutton )
donde k - indica la k-ésima vez que se ha mostrado la rúbrica h y $r_k$ = 1 (si durante la k-ésima vez que se mostró la cabecera h se produjo una conversión) o $r_k$ = 0 (si no) Para el tamaño del paso $\alpha$ puedes, por ejemplo, elegir:
- $1/k$ lo que en su caso debería conducir a la convergencia (las recompensas/conversiones más recientes se ponderan menos)
- una constante, lo que hará que no haya convergencia (todas las recompensas se ponderan igual), pero permitirá que el sistema se adapte a los cambios. Por ejemplo, imagina que el concepto de cuál es la mejor cabecera cambia con el tiempo.
Observación final Cómo configurar los parámetros $\tau$ y $\alpha$ depende del problema. Te sugiero que hagas algunas simulaciones para ver cuáles son las mejores para ti. Para esto y en general, sólo puedo recomendar la lectura del capítulo 2 del libro enlazado. Vale la pena.
Otra observación derivada de la experiencia práctica con esta fórmula (si las cabeceras a mostrar cambian constantemente) es no utilizar siempre la fórmula de selección softmax. Sugiero más bien elegir la mejor cabecera p% de las veces que se mostrará una cabecera y seleccionar otra cabecera en (100-p)% de las veces para encontrar otra posiblemente mejor. Por otro lado, si su objetivo es encontrar la mejor cabecera entre un número fijo de cabeceras, es mejor utilizar siempre la selección softmax y establecer $\alpha=1/k$ y $\tau$ cerca de cero.
2 votos
Para ser sinceros, esto puede ser algo más apropiado para StackOverflow.
0 votos
Christopher, gracias por tus comentarios. Ahora, lo he publicado allí también. He publicado aquí porque puede haber alguna técnica de las estadísticas para lograr esto.
0 votos
@Imran, he editado tu pregunta, para hacerla más apropiada para este sitio. Mi pregunta es ¿cuál es su criterio de optimización? ¿Qué espera de esta optimización? ¿Hay algún criterio a largo plazo para esta optimización?
0 votos
@mpiktas, gracias por tu amabilidad. 1. ¿criterios de optimización? Después de x vistas (o conversiones), compruebe qué artículo tiene la mayor tasa de conversión y aumente su peso. En consecuencia, disminuye los títulos de baja conversión para mantener el peso total a 100 . Cuánto se aumentaría con respecto a qué, aún no estoy seguro de ello. Necesito ayuda en esto también. 2. Expectativa Las rúbricas que más conviertan deben ser más atendidas y viceversa. criterios a largo plazo Lo siento, no estoy seguro de ello. Te agradecería mucho que me ayudaras con la información proporcionada. Puede que lo explique más a medida que avancemos
0 votos
Necesito algún punto para empezar con esto. Podemos afinarla después de que tengamos algo en funcionamiento. Espero que lo entiendas. Gracias de nuevo.
0 votos
@Matt: Ha pasado mucho tiempo pero necesito ayuda aquí. Alguna forma de manejar los pesos negativos. A veces, el valor que se resta del peso es menor que el propio peso resultando en un peso negativo. ¿Hay alguna manera de manejar esto y mantener el peso de la suma a 100?