Sistemas de recomendación Collaborative Filtering
Uno de los algoritmos más apropiados y más empleados en los sistemas de recomendación son los denominados Collaborative-Filtering (filtrado colaborativo), y pertenecen al conjunto de técnicas de aprendizaje automático.
Los sistemas de filtrado colaborativo destacan en múltiples escenarios, especialmente cuando se desea establecer un mecanismo de recomendación basado en la similitud de los usuarios o de los contenidos (productos que se van a recomendar).
Cuando hablamos de aplicarlo en la búsqueda de similitud entre usuarios, partimos de la base de que usuarios que consumen un servicio y tienen una experiencia similar, también podrían hacerlo con productos que uno de ellos aún no haya probado.
La técnica consiste en la construcción de una matriz donde cada fila representa un usuario y las columnas representan los productos que son objeto de recomendación (todo el catálogo disponible). Las celdas de la matriz determinan la puntuación que un usuario asignó a un producto concreto tras su “consumo”. La puntuación se asigna dependiendo de los parámetros que se deseen para el sistema de recomendación, como la valoración que el usuario asigna al producto (sistema de estrellas, por ejemplo), número de veces que el usuario ha visitado o adquirido el servicio, tiempo de sesión medio, etc.
Al ir registrando estas valoraciones en la matriz, ésta se va poblando con información. Cuando se tiene una matriz lo suficientemente rica es posible aplicar algoritmos que determinan la similitud de los usuarios entre sí, correlacionando las filas de la matriz en función de lo parecidas que son las puntuaciones asignadas en cada una de las columnas. Como resultado, determinamos qué usuarios son parecidos entre sí en base a sus puntuaciones.
En ese momento, la similitud detectada entre los usuarios se asigna a cada par (lo que genera un gran número de relaciones con un valor asignado). Si ordenamos todas las relaciones de similitud entre un usuario cualquiera A y todos los demás (de mayor a menor parecido), y cogemos los productos que los usuarios más similares a A han puntuado bien pero que A aún no conoce, tendremos una lista de potenciales recomendaciones. Esta es la base del funcionamiento de un sistema de este tipo.
El filtrado colaborativo basado en usuario no es siempre el más adecuado porque presenta una serie de problemas que no deben trivializarse.
Las matrices que se construyen de este modo son tremendamente grandes para ser manejadas por filas, ya que si los usuarios son mucho más numerosos que el catálogo disponible de productos el proceso de correlación exigirá una complejidad computacional muy elevada y requerirá de técnicas propias de Big Data para resolverse.
En algunos casos no encaja bien por el hecho de que un mismo usuario deja un rastro de valoraciones históricas en la matriz que pueden no tener sentido en la actualidad. Los gustos cambian, las circunstancias específicas en las que vivió la experiencia que valoró positiva o negativamente también. Tener en cuenta estos criterios requiere de la contextualización de los modelos y de la consideración de perfiles y segmentos en usuarios en los modelos de aprendizaje, si bien los fundamentos del filtrado colaborativo son los mismos.
Por otro lado, es posible trasponer la matriz para realizar content-based collaborative filtering, que consiste precisamente en lo contrario, establecer relaciones de similitud entre los productos para ordenarlos de este modo, reduciendo los requisitos de computación para su cálculo, ya que el número de productos es habitualmente menor que el de usuarios.
En cualquier caso, el filtrado colaborativo tiene una propiedad muy interesante, y es que es capaz de hacer aprendizaje de características: conociendo las valoraciones de los usuarios sobre los productos y los gustos de un conjunto de usuarios (por ejemplo) podemos inferir características desconocidas del catálogo.