1 votos

¿Qué tan bueno es mi recomendador?

Implementé un recomendador utilizando tensorflow, basado en datos de comercio electrónico. Este recomendador está prediciendo el próximo producto que un usuario comprará. Juzgaré el rendimiento de mi modelo ajustado, obteniendo la próxima estimación del modelo y comparando si el usuario realmente compró este artículo (comparar precision_at_k con k == 1).

Mi precisión es aproximadamente del 20% (lo que significa que en el 20% de los casos el usuario realmente compró el producto que el sistema recomendó). Nuestra tienda tiene alrededor de 150 productos y mi evaluación se basa solo en las propiedades del usuario, no en su historial de compras.

En este caso, ¿es bueno el 20%? ¿Existen otros sistemas similares con los que pueda comparar? ¿Cuál sería una buena precisión para, por ejemplo, 100.000 productos?

3voto

avid Puntos 161

Una forma fácil y ampliamente aplicable de ayudar a interpretar el rendimiento de un modelo es compararlo con una línea base apropiada. Por ejemplo, imagina un modelo trivial que predice que todo el mundo comprará el producto más popular en cada ocasión. ¿Cuál es su rendimiento bajo esta métrica? Si su rendimiento está cerca o es mejor que el de tu modelo de interés, entonces tu modelo no es lo suficientemente preciso como para ser útil.

2voto

Dipstick Puntos 4869

Como otros ya notaron, para responder a la pregunta "qué tan bueno es" tu recomendador, necesitarías algún tipo de referencia. ¿Cómo recomendabas los productos antes? Si tenías algún tipo de sistema de recomendación, úsalo como tu referencia. Si no tenías, hay varias opciones posibles para las referencias:

  1. productos recomendados aleatoriamente,
  2. recomendar el mismo producto más popular (especialmente si la distribución de compras de productos es muy sesgada),
  3. el último producto comprado por cada usuario como recomendación.

Cada uno de los escenarios puede servir como referencia de un sistema de recomendación ingenuo, si puedes hacerlo mejor que esos escenarios, entonces tu recomendador vale la pena considerar. Ten en cuenta que dichas pruebas se pueden hacer en parte con una ejecución en seco: simplemente hace tus recomendaciones basadas en los datos hasta el mes $t$ y asigna puntajes de "recomendación" a los productos en el mes $t+1$ (en el pasado), para verificar qué compraron los usuarios en el tiempo $t+1$. Esto no tiene en cuenta tus esfuerzos de marketing (¡no les enviaste ni les mostraste las recomendaciones!), por lo que eso no te daría una respuesta final, pero es un buen punto de partida.

Si fuera tú, también consideraría usar diferentes métricas para evaluar el rendimiento del recomendador. Las dos opciones alternativas para medir el rendimiento de los sistemas de recomendación con valoraciones implícitas (los usuarios no declararon sus preferencias explícitamente), son Mean Percentage Ranking (MPR) y Mean Reciprocal Rank (MRR).

La primera métrica se define en términos de rangos percentiles, donde $rango_{ui}$ es el rango del i-ésimo producto para el usuario u-ésimo, donde los rangos van desde $0\%$ (más preferido) hasta $100\%$ (menos preferido), y en términos de la función indicadora $d_{ui}$ que es igual a $1$ si el i-ésimo producto fue comprado (hace clic, etc.) por el usuario u-ésimo y $0$ en caso contrario,

$$ MPR = \frac{\sum_{u,i} d_{ui} \times rango_{ui}}{\sum_{u,i} d_{ui}} $$

como puedes ver, la medida es simplemente el promedio de los rangos percentiles que fueron comprados por los usuarios. $MPR=0\%$ significa que tu recomendador es perfecto, $MPR=50\%$ es la puntuación que verías por recomendar productos aleatorios y $MPR=100\%$ es la puntuación que lograrías si todas tus recomendaciones fueran incorrectas. Esta puntuación tiene una interpretación muy clara, por lo que puede ser útil. Además, ten en cuenta que si tienes $k$ productos, entonces $MPR \times k$ es la posición promedio en el ranking de los productos que fueron comprados, por lo que si $MPR \times k = 3$ y recomiendas $4$ productos para cada usuario, entonces deberías estar feliz con los resultados.

La segunda medida se define en términos de rangos $rango_{ui}$, donde $1$ es el producto más recomendado y $k$ es el producto menos recomendado,

$$ MRR = \frac{1}{n} \sum_u \min_{i \in \{ i \,\mid\, compra_{ui} > 0\}}(\,rango_{ui}\,)^{-1} $$

La puntuación se calcula tomando el promedio de los rangos más bajos del producto que fue comprado por los usuarios. Cuanto más alto sea el puntaje, mejor, donde $MRR=1$ significa una coincidencia perfecta. Esta puntuación está definida en términos de la media armónica, por lo que $\tfrac{1}{MRR}$ te da la posición del producto con el rango más bajo que fue comprado.

Encuentro que estas dos métricas son más intuitivas y más fáciles de interpretar la precisión en $k$ y recomendaría probarlas.

No estaría de acuerdo con el consejo de que podrías comparar tu recomendador con Amazon, Netflix, Spotify, etc. Esto generalmente no tiene mucho sentido a menos que tengas productos y usuarios similares (supongo que no los tienes). Si tienes productos y usuarios diferentes, entonces no hay razón para esperar puntuaciones de rendimiento similares. Ten en cuenta que incluso si tuvieras los mismos productos y usuarios, todavía tu plataforma puede diferir, puedes tener estrategias y herramientas de marketing diferentes, precios diferentes, disponibilidad, etc., por lo que muchos factores pueden influir en tu rendimiento.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X