Sistemas de recomendación de productos

Uno de los objetivos más codiciados por la mayoría de las empresas es poder recomendar a cada cliente productos personalizados, con el fin de aumentar la probabilidad de compra. Con la llegada de las nuevas tecnologías y la facilidad de recoger todo tipo de datos de los usuarios, esta práctica se puede llevar a cabo.

En este post vamos a explicar las técnicas más conocidas para programar un recomendador web. La regla general que se suele utilizar para estos métodos es recomendar a cada usuario, productos que hayan visualizado o comprado usuarios con un perfil parecido.

¿Y qué es esto de un perfil parecido? Supongamos que tenemos una página web en la que vendemos zapatos. Si un usuario visita varios modelos y existe otro que haya visitado esos mismos y alguno más, es muy probable que tengan gustos parecidos. En este caso, sería una buena idea recomendar los zapatos que ha visto el segundo usuario al primer usuario.

Estos recomendadores son usados por empresas tan importantes como Youtube, Spotify o Google. Las dos primeras pretenden recomendar vídeos y música para obtener el mayor número de usuarios y visitas. Por otra parte, Google, además de utilizarlo en su buscador, lo implementa en su traductor, el recomendador de escritura, etc.

Existen varios métodos para realizar un recomendador de productos. A  continuación, explicaremos brevemente algunos de ellos:

Collaborative filtering

Cuando queremos recomendar algo a un usuario, lo más lógico es encontrar personas con intereses similares, analizar su comportamiento y recomendarle a nuestro usuario los mismos artículos. O podemos mirar los artículos similares que el usuario compró anteriormente, y recomendar productos similares.

Estos son dos enfoques básicos en CF: el filtrado colaborativo basado en el usuario y el filtrado colaborativo basado en artículos, respectivamente.

En ambos casos, este motor de recomendación tiene dos pasos:

  1. Averigüe cuántos usuarios / artículos en la base de datos son similares al usuario / artículo dado.
  2. Evalúe otros usuarios / artículos para predecir qué calificación le daría al usuario de este producto, dado el peso total de los usuarios / artículos que son más similares a este.

En este caso necesitaremos modificar los datos de manera que:

  • Para cada fila se tenga los datos de un usuario.
  • Para cada columna se tengan los productos.

La intersección entre ambos sería el número de visualizaciones de cada usuario a cada producto.

Producto 1 Producto 2 Producto 3 Producto 4 Producto 5
Usuario 1 3 0 1 2 3
Usuario 2 0 0 1 1 0
Usuario 3 3 0 1 1 1

Luego, queremos calcular la similitud de cada usuario con el resto de usuarios. Esto significa que queremos comparar cada fila en nuestro conjunto de datos con el resto de filas. Específicamente, vamos a comparar lo que se conoce como la “similitud coseno“, aunque también se puede utilizar el coeficiente de correlación de Pearson.

Por tanto, si dos usuarios han visualizado productos parecidos, tendrán un índice de similitud alto. Por tanto, se podrá recomendar algún producto que no haya visto uno y el otro sí.

Singular Value Descomposition (SVD)

Las empresas a menudo quieren comprender mejor a sus clientes al segmentarlos a lo largo de un conjunto común de atributos. En este caso, debemos crear segmentos basados ​​únicamente en los productos que los clientes visualizaron o compraron. El objetivo es encontrar grupos de clientes similares que puede llevar a sistemas de recomendaciones avanzados que están personalizados para cada uno de sus clientes.

En una segmentación de productos, se dice que los clientes son similares cuando compran del mismo conjunto de productos; y los productos son similares cuando los compra el mismo grupo de clientes.

Comenzamos con lo que intentamos explicar, que es nuestra matriz observada de cliente por producto. Partiendo de que nuestra matriz de datos (V) se distribuye de igual forma que para el método de Collaborative filtering. Queremos segmentarla de manera que:

Para ello, se puede utilizar un modelo de factores latente para capturar la similitud entre los usuarios y los productos. En la imagen, V sería la matriz de utilidad, W representa la relación entre los usuarios y las variables latentes y H la relación entre los productos y las variables latentes.

Nota: estos factores latentes son variables no observables que intentan explicar la varianza compartida de las variables que representa. Por ejemplo, si tenemos una canción y muchas variables que representan los instrumentos, podríamos crear una sola (variable latente) que explique cuánto peso aporta cada instrumento a la canción.

Entonces, asignamos cada usuario y cada producto a una variable latente. Esto nos ayuda a comprender mejor la relación entre los usuarios y los artículos a medida que se comparan. Así los usuarios que aporten un gran peso a una misma variable latente tendrán un mayor grado de similitud.

Neural Network Approach

Por último, hablaremos de las redes neuronales. Muchos son los que han escuchado hablar de estos modelos computacionales, pero pocos los que realmente los entienden. Una de las aplicaciones más útiles de las redes neuronales es que podemos aprovechar esta técnica para implementar un sistema de recomendación.

En otros posts, hemos hablado del Deep Learning, la rama del Machine Learning en la que se sitúan las redes neuronales.

Una red neuronal es un modelo caracterizado por una función de activación, que es utilizada por unidades de procesamiento de información interconectadas para transformar unas variables la entrada en otras de salida. La primera capa de la red neuronal recibe la entrada en bruto, la procesa y pasa la información procesada a las capas ocultas. La capa oculta pasa la información a la última capa, que produce la salida.

La ventaja de la red neuronal es que es de naturaleza adaptativa. Aprende de la información provista, es decir, se entrena a sí misma a partir de los datos, que tiene un resultado conocido y optimiza sus ponderaciones para una mejor predicción en situaciones con resultados desconocidos.

El paso más complicado es programar la red y elegir el número de capas, neuronas ocultas o el método de optimización. En general, existen muchos paquetes o librerías en distintos programas que ya han programado esta técnica y, a grades rasgos, son fáciles de utilizar.

En el caso del recomendador, el input sería la matriz de utilidad usada en los métodos anteriores y la salida daría como resultado otra matriz que indique el producto que se le recomienda a cada usuario. Esta técnica es la más utilizada y la más efectiva para esta finalidad.

 

Conclusiones

La mayoría de las grandes empresas utilizan las redes neuronales por su efectividad y su naturaleza adaptativa. Seguidamente, el collaborative filtering, una técnica que es muy sencilla de entender y puede dar cierta confianza al cliente, pero que puede resultar lenta computacionalmente.

En general, los tres son unos buenos métodos para programar un recomendador y cada usuario puede utilizar la que le resulte más útil y cómodo.

Autor:

Leave Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.