Sistemas de Recomendación

Los sistemas de recomendación, a veces llamados en inglés “recommender systems” son algoritmos que intentan “predecir” los siguientes ítems (productos, canciones, etc.) que querrá adquirir un usuario en particular.

Antes del Machine Learning, lo más común era usar “rankings” ó listas con lo más votado, ó más popular de entre todos los productos. Entonces a todos los usuarios se les recomendaba lo mismo. Es una técnica que aún se usa y en muchos casos funciona bien, por ejemplo, en librerías ponen apartados con los libros más vendidos, best sellers. Pero… ¿y si pudiéramos mejorar eso?… ¿si hubiera usuarios que no se guían como un rebaño y no los estamos reteniendo?…

Los Sistemas de Recomendación intentan personalizar al máximo lo que ofrecerán a cada usuario. Esto es ahora posible por la cantidad de información individual que podemos recabar de las personas y nos da la posibilidad de tener una mejor tasa de aciertos, mejorando la experiencia del internauta sin ofrecer productos a ciegas.

Tipos de Motores de Recomendación

Entre las estrategias más usadas para crear sistemas de recomendación encontramos:

  • Popularity

Sugiere por la “popularidad” de los productos. Por ejemplo, “los más vendidos” globalmente, se ofrecerán a todos los usuarios por igual sin aprovechar la personalización. Es fácil de implementar y en algunos casos es efectiva.

  • Knowledge Based Recommendations

Estos sistemas son adecuados para los dominios muy complejos donde los ítems no son comprados con mucha frecuencia, tales como casas y autos de lujo.

  • Content Based Recommendations

Un Sistema de Recomendación basado en contenido permite sugerir al usuario nuevos productos en función de su similitud con el contenido (descripción) de otros productos que éste ha juzgado anteriormente. En la vida cotidiana, a la hora de realizar la descripción de un producto complejo, solemos agrupar su contenido en un conjunto de categorías. Así, lo que estamos haciendo es dotar de estructura al contenido del producto.

 

En este caso, se utiliza los atributos de los productos como principal input. Para un cliente particular, el algoritmo le recomienda aquellos productos que son “similares” a los cuales el ya ha comprado antes (o dado un alto rating de similitud).

Una alternativa de implementación del algoritmo es:

  1. Identificar productos comprados por el cliente
  2. Identificar atributos de cada producto comprado (vector por producto). A partir de la descripción de un producto (texto), utilizando algoritmos de procesamiento de lenguaje natural, se generan vectores numéricos que representan dichas descripciones por producto atributos).
  3. A partir de dichos atributos, se generan preferencias promedios de los clientes. En efecto, a partir de los atributos de los productos que un usuario compró en el paso, sus preferencias pueden ser representadas como el promedio simple, ponderado u otro modelo, de dichos vectores.
  4. El catálogo de productos corresponde a una matriz donde cada fila es un producto representado por atributos, generados de la misma forma según se indicó antes.
  5. Los productos a recomendar al cliente son aquellos donde la multiplicación de la matriz del catálogo de productos con respecto al vector de preferencias del cliente genera el valor más cercano a 1. En estricto rigor, dado que matemáticamente corresponde a un producto punto, la idea es normalizar los vectores de tal manera que en el fondo se está calculando el coseno del ángulo que forman ambos vectores. Mientras más cerca de 1 esté el coseno, indica que los vectores son más iguales (paralelos).

 Luego, cada vez que entre un producto nuevo al catálogo, teniendo su vector de atributos y multiplicándose con el vector de preferencias del cliente, si el resultado se acerca a 1 el producto se ajusta a las preferencias del cliente.

La ventaja de este algoritmo es que resuelve para los nuevos productos el llamado problema del cold start para los productos, es decir, productos nuevos en el catálogo y que por lo mismo no tienen historia, pero que pueden ser recomendados en base a sus atributos.

La desventaja es que las recomendaciones son más bien estáticas, en el sentido que su rango de variabilidad es bajo.

Medidas de similitud

Los algoritmos propuestos para medir similitud son el índice de Jaccard para el caso de vectores binarios y el coseno (producto punto de vectores normalizados) para el caso de similitud de productos a partir de su descripción textual. El índice de Jaccard se mueve en el rango [0,1], donde 1 es el caso en similitud completa. Por su parte, el coseno vive en el rango [-1,1], donde de igual modo 1 es el caso de similitud completa.

  • Collaborative Filtering Based Recommendations

En este caso, se habla de filtros colaborativos pues se utiliza además historia de interacciones no solamente del cliente, es decir, la info de otros clientes “colabora” en cómo generar recomendaciones para un cliente específico.

  1. Algoritmos de filtrado colaborativo basados en memoria.

Estos algoritmos son similares al de vecinos cercanos (Nearest Neighbour). Funcionan buscando usuarios con patrones de evaluación similares con el usuario activo, para el que se está haciendo la selección. También utilizan técnicas estadísticas para encontrar vecinos con un historial de búsqueda parecido al usuario actual. Su principal inconveniente es que necesitan un número mínimo de usuarios para realizar la recomendación.

En términos generales, este algoritmo trabaja como se indica a continuación:

  • Construir preferencias de un cliente (vector) según se hace en la recomendación basada en contenido.
  • Identificar otros clientes que tengan “similares” preferencias.
  • A partir de los clientes “similares”, se identifica qué productos estos compraron que el cliente en cuestión no haya comprado, y estos son los que se recomiendan.
  1. Algoritmos de filtrado colaborativo basados en Modelo:

Este tipo de filtro colaborativo utiliza los datos para aprender de ellos y así poder generar un modelo que es capaz de generar la recomendación sin utilizar necesariamente toda la información. Esto lo realiza dado que el diseño y desarrollo del motor permite al sistema aprender y reconocer patrones complejos de los datos. Logrando así, crear predicciones a través del modelo aprendido.

Entre las técnicas para crear recomendaciones a través de los filtros colaborativos basados en un modelo se encuentran los algoritmos de agrupamiento, métodos de descomposición matricial y métodos espectrales. Ejemplos de algoritmos de agrupamientos son K-Means Clustering y el Co Clustering. De métodos de descomposición matricial se pueden encontrar la descomposición en valores singulares (SVD), SVD with implicit valuations (SVD++), Non-negative Matrix Factorization (NMF), entre otros. Se debe hacer presente que la complejidad computacional de los cálculos requeridos es bastante mayor a la de los algoritmos basados en contenido. En nuestro caso, se trabajo con el algoritmo SVD.

La sigla SVD tiene por significado “Singular Value Descomposition”, esto es porque este algoritmo descompone en valores singulares la matriz de datos a procesar. Esto con el objeto de reducir la dimensionalidad del espacio usuario/productos.

AGENDA UNA
DEMOSTRACIÓN
Gratuita

Queremos que conozcas todo lo que Cloud Promo puede hacer por tu empresa, déjanos tus datos y coordinemos una reunión gratuita.


logocpblanco