Tiempo estimado de lectura: 18 minutos.
¡Buenos días y buenos datos!
Si le hubiese preguntado a la gente qué necesitaba, me habrían pedido caballos más rápidos.
Henry Ford
Hoy utilizamos las matemáticas para recomendarte lo que “realmente quieres” y cómo “lo que quieres” depende de tus relaciones. ¿Empezamos?
Sistemas de recomendación

Los sistemas de recomendación son aplicaciones que predicen nuestros gustos y nos sugieren productos con alta probabilidad de interesarnos.
Aunque dependiendo de la información disponible, harán las sugerencias en función de valoraciones disponibles y/o relaciones entre usuarios y/o productos-atributos.
Por ello hay diferentes métodos de recomendación: básicos según popularidad, por filtrado contenidos, por filtrado colaborativo e híbridos.
Método básico o naive basado en popularidad
Los métodos básicos o naive calculan la popularidad de un elemento mediante un supuesto sencillo:
1) según cantidad de votos asumimos que el que más valoraciones tiene es el más interesa.
2) según el que tiene más votos positivos, entendiendo por positivo a aquellos que tienen una valoración alta. Por ejemplo: votación > 4 en un sistema de voto de 0 a 5.
3) según el producto con la puntuación más alta.
Este método es muy simple y tiene mucho sesgo ya que asume que los elementos populares son los más efectivos o tienen mayor conversión y no siempre es así.
Es un buen método de partida para comparar con otras técnicas de recomendación.

Sistemas basados en filtrado de contenidos
Se basan en los atributos de los productos.
La idea básica es que a cada usuario le va gustar un elemento similar a lo que le ha gustado en el pasado.
Es necesario disponer de bastantes atributos o características de los elementos para poder proponer otros similares.
Los modelos utilizados pueden ser: vectores espaciales, naive bayes, árboles de decisión, random forest o redes neuronales.
Es un método pobre ya que en general acaba sugiriendo los productos que ya se han consumido. ¿Te suena Amazon en sus inicios o anuncios que te recomiendan productos que ya has comprado?
En general, se utilizará para empezar, cuando no tienes histórico de consumo del usuario y así irlo generando.
Cómo sólo se apoya en las características del producto, funciona estableciendo órdenes y prioridades de nuevos productos basándonos en la similitud de los atributos de este con los de otros elementos de los que ya se conocen las preferencias.
Es un primer paso porque cuando ya tenemos información de consumo, utilizaríamos otras técnicas de recomendación más sofisticadas como los sistemas basados en filtrado colaborativo.

Sistemas basados en filtrado colaborativo
Recomiendan elementos que les hayan gustado a otras personas parecidas.
Para poder implementarlo es necesario tener información histórica de las valoraciones y perfiles de usuarios. y
Pero ¿cómo conseguimos valoraciones? Podemos hacerlo de dos formas:
1) Explícita: mediante encuestas o por ejemplo sistemas de recogida de votos/likes en aplicaciones. Estamos preguntando directamente al usuario. En general esta información conlleva mucho sesgo porque las personas tenemos nuestros sesgos. Un usuario puede dar una opinión u otra según el momento en el que se encuentre. A mí, al menos me pasa. Si estoy enfadada por otra causa, voy a tender a valorar más negativamente algo que si tengo un mejor día. ¿Os pasa lo mismo?
2) Implícita: a través de interacciones, compras, uso de aplicaciones, clicks, etc… Aquí no preguntamos nada al usuario pero observamos uso y consumo que realizan. Precisa más capacidad de procesamiento porque hay que gestionar un mayor volumen de información que la fuente explícita.
La pega es que a través de las valoraciones implícitas es más complicado saber cuando un producto “no gusta o interesa” y por ende, calcular el rendimiento de estos sistemas en producción. Con esto lo que quiero decir es que por ejemplo, es muy complicado discernir cuando un cliente compra productos porque se le han recomendado o simplemente porque lo necesitaba en ese momento y no antes y por ello hasta entonces no había mostrado interés por ello.
En cualquier caso, es más objetiva respecto a lo que le puede llegar a gustar a una persona por lo que es la que se usa más en los sistemas de recomendación en este momento.
El desarrollo de los sistemas de filtrado colaborativo se puede hacer de diferentes formas: basados en memoria, basados en modelos o una mezcla de ambos.
1. Primer grupo: sistemas basados en memoria, calculamos la valoración de un producto por similitud entre usuarios o por parecido entre los productos.
Nota: La diferencia del sistema basado en memoria por parecido entre productos con respecto el de basado en contenidos que hemos visto anteriormente, es que los productos en este caso no están definidos por sus características sino por la puntuación o valoración que hayan recibido.
La similitud o distancia entre usuarios o entre contenidos se puede calcular de muchas formas: distancia euclídea, distancia Manhattan, distancia Jaccard, correlaciones, distancia coseno, etc…

- La diferencia del sistema basado en memoria por parecido entre productos con respecto el de basado en contenidos que hemos visto anteriormente, es que los productos en este caso no están definidos por sus características sino por la puntuación o valoración que hayan recibido.
- Puedes ver más detalle en la Sistemas de recomendación con R de Joaquín Amat Rodrigo, available under a Attribution 4.0 International (CC BY 4.0).
- Las mismas técnicas de cálculo de distancias son también aplicables a los modelos basados en contenidos, para calcular la similitud entre productos basados en sus atributos.
2. Segundo grupo: los métodos basados en modelos englobarían principalmente matrices de factorización basados en grafos, modelos bayesianos o redes neuronales.
En general, estas técnicas de recomendación son sencillas de calcular pero si no hay suficiente volumen de valoraciones, las estimaciones va a ser poco precisas.
Adicionalmente, tienen problemas para dar predicciones a nuevos usuarios y valoraciones a nuevos elementos, porque no tiene informaciones de valoraciones previas. En estos casos se utilizaría un método basado en contenidos o híbrido.
Sistemas híbridos
Como su nombre indica, si tenemos datos de rating colaborativo y de características de los productos, podemos combinar los anteriores de tres formas:
- combinación matemática (por ejemplo: ponderando pesos entre un método y otro)
- uno de los sistemas genera características que enriquecen el segundo sistema
- se genera un sólo modelo utilizando datos de filtrado colaborativo y de contenidos.
Evaluación de las recomendaciones
Y a todo esto, ¿cómo se valida un sistema de recomendación? Realmente es un reto importante.
En el caso de los recomendadores basado en contenidos sin valoraciones previas, nos enfrentamos con un modelo no supervisado donde tenemos que probar en modo ensayo y error preguntando explícitamente a los usuarios.
Respecto el resto de modelos donde tenemos un rating de usuarios, se tratarían como modelos supervisados y se evaluarían a través de las métricas tradicionales (RMSE, MAP, Precision, Recall, Accuracy…).
Sin embargo esto es desde un punto de vista mas teórico si quieres. Desde el punto de vista práctico para el usuario, un buen recomendador es aquel que te sorprende positivamente, que da con la tecla de lo que te gusta en lo que no sabías que existía.
Un buen sistema de recomendación es aquel del que te esperas lo inesperado.
Para introducir y medir este efecto de casualidad, se utilizan indicadores como: la variedad de productos dentro de la recomendación; el número de nuevos productos y la relevancia o posición en el ranking de los contenidos.
Aunque no podemos perder de vista que es un sistema vivo. Como todo modelo, un sistema de recomendación evoluciona en el tiempo ya que los gustos de los usuarios cambian a lo largo de su vida. Incluir un efecto tiempo y revisar los resultados es altamente recomendable (y nunca mejor dicho :-).
Un método muy utilizado para realizar sistemas de recomendación por filtrado colaborativo son los modelos basados en grafos con lo que me sirve para introducir el siguiente bloque de algoritmos de aprendizaje cada vez más usado en aprendizaje automáticos: los grafos
Aprendizaje automático mediante grafos

Esta técnica se apoya en una rama clásica de las matemáticas que se llama la teoría de grafos y que simplificando consiste en el estudio de las relaciones.
Pero ¿qué es un grafo? Un grafo es una representación de una red de puntos conectados definidos por vértices o entidades y por aristas que representan las relaciones entre dichas entidades.
Ha crecido en popularidad por ser capaz de guardar información o atributos y de capturar relaciones complejas con lo que se utiliza para mejorar los algoritmos de analítica avanzada.
Es especialmente efectivo para clasificaciones, predicción de relaciones y búsqueda de correspondencias.
Estos métodos de aprendizaje, convierten la información del grafo (vértices y aristas) y su topología en vectores y/o matrices de adyacencia que se utilizan a su vez como información en otros modelos de aprendizaje automático. Por esta causa, la mayoría de las técnicas de grafos están basadas en aprendizaje profundo y redes neuronales.
Los principales métodos dentro de este tipo de aprendizaje son: los basados en el procesamiento de la señal del grafo; los tratados mediante matrices de factorización; los que se apoyan en el camino aleatorio o random walk y los resueltos mediante aprendizaje profundo.
Recomendadores basados en grafos

Como ejemplo de aprendizaje basado en el procesamiento de la señal del grafo te traigo esta animación que ilustra un caso sencillo de recomendador. Así espero matar dos pájaros de un tiro y que ayude también a asentar algunas de las ideas que hemos visto anteriormente en la entrada.
Dese el punto de vista de un sistema de recomendación, esta técnica se engloba dentro del grupo de filtrado colaborativo porque utiliza un modelo basado en valoraciones.
Como puedes ver en el gráfico, funciona:
– dibujando una red de relaciones entre usuarios, productos y atributos en función de sus valoraciones.
– representando la información del grafo en una matriz de adyacencia
– proponiendo nuevas valoraciones, no disponibles, según los votos de otros usuarios/productos en la matriz.
– recomendando en consecuencia.
Es un ejemplo muy sencillo pero hay infinitos y se pueden complicar tanto como queramos. Como la idea no es extenderme mucho más, puedes ver más detalle en Graph learning: A survey by Feng Xia, Ke Sun, Shuo Yu, Abdul Aziz, Liangtian Wan, Shirui Pan and Huan Liu at IEEE Transactions on Artificial Intelligence. April 2021, pp. 109-127, vol. 2.
Un ejemplo muy real
Antes de terminar, una curiosidad. ¿Sabías que el algoritmo que empezó usando Google para ordenar los resultados de su buscador pertenece a este tipo de aprendizaje mediante grafos?
Así, es. El algoritmo original se llama Pagerank y así es como funciona:
- Primero, asigna peso o importancia a las páginas web en función de:
- el número de páginas web que apuntan a esta.
- la importancia de las páginas que apuntan a esta.
- cada página distribuye su importancia uniformemente entre los vecinos a los que apunta.
- Luego, representa las relaciones existentes entre páginas mediante una matriz.
- Por último, utiliza una propiedad de las matrices y calcula el autovector de dicha matriz cuyo autovalor es 1.
Este autovector es el que contiene la importancia de las páginas y determina el orden en el que se muestran en cada búsqueda.
¡Y esto es más o menos lo que Google empezó haciendo hace 20 años y del que todavía conserva parte dentro de su motor de búsquedas actual!

Hasta aquí por el momento. Espero que hayas disfrutado y si te ha gustado, compártelo en redes y dímelo en comentarios.
Nos vemos en la siguiente entrega de «La época de la información» donde no te puedes perder un recorrido por la historia sobre el aprendizaje profundo y las redes neuronales.
Bibliografía y referencias
Mientas te dejo con esta selección particular de los artículos y vídeos sobre este tema:
- Brief on Recommender Systems de Sanket Doshi en Towards Data Science.
- A Personalized Recommender System with Correlation Estimation de Fan Yang.