Uso de cookies

Este sitio web solo utiliza cookies técnicas propias obligatorias con la finalidad de hacer que su navegación sea segura.
Asimismo, utiliza cookies de terceros opcionales para hacer análisis estadístico de las visitas a la web y conocer su usabilidad.
Si desea más información o cambiar la configuración de su navegador, puede visitar nuestra Política de Cookies.
Pulse el botón "Rechazar cookies opcionales" o "Aceptar todas las cookies" para confirmar que ha leído y aceptado la información aquí presentada.

Volver
Sistemas de recomendación

Sistemas de Recomendación

Actualmente son muchas situaciones en nuestro día a día en las que encontramos sistemas de recomendación. Por ejemplo, al terminar una película en una plataforma de vídeo bajo demanda nos sugiere otras películas que pueden ser de nuestro interés. También podemos encontrar esta situación al hacer una compra en internet: al seleccionar un producto nos recomendará otros que pueden ser de interés. ¿Cómo se hace esta sugerencia? Esta sugerencia se realiza agracias a una técnica utilizada desde hace muchos años llamada sistemas de recomendación, empleada en numerosos sectores: retail, banca, seguros, etc. Los sistemas de recomendación más conocidos por la población son los utilizados por Netflix, Amazon, etc.

¿Qué es un sistema de recomendación?

Un sistema de recomendación es una herramienta que establece un conjunto de criterios y valoraciones a partir de los datos de los usuarios. El objetivo es realizar predicciones sobre recomendaciones de elementos que puedan ser de utilizad o valor para el usuario. El funcionamiento de los sistemas de recomendación ha evolucionado gracias al desarrollo y la implementación de Machine Learning en nuestra sociedad.

Tipos de sistemas de recomendación personalizados

Existen distintos tipos de sistemas de recomendación, dependiendo de las variables principales que condicionan su funcionamiento. Veamos los casos más habituales que se utilizan.

Sistemas de recomendación basados en contenido

filtrado contenido

Para este tipo de sistemas de recomendación se necesitan dos cosas: disponer de un perfil de valoraciones del usuario y una cuantificación de las características de los productos disponibles. A partir de los ítems valorados positivamente se pueden recomendar otros de características similares. Sin embargo, estos tipos sistemas de recomendación tienen limitaciones:

  • La calidad de la catalogación que se haga de los productos es clave para identificar productos similares.
  • Si se descubre una nueva característica que es útil para la categorización, se debe aplicar a todos los productos anteriores también.
  • Poca originalidad, las recomendaciones suelen ser ítems muy similares.
  • Los valores de los atributos no aportan información acerca de la calidad del producto.

Filtrado colaborativo

filtrado colaborativo

El filtrado colaborativo se basa en la idea de esperar que usuarios con un perfil similar tiendan a hacer valoraciones similares. Para que estos sistemas funcionen, se necesita disponer de valoraciones de los usuarios, información sobre sus perfiles y otros datos de calidad sobre su comportamiento en la plataforma, que permita agruparlos por similitud. La limitación de estos sistemas aparece en el momento en que se une un nuevo usuario, ya que no se dispone de información suficiente sobre su comportamiento, por lo que no se pueden hacer recomendaciones. Dentro del filtrado colaborativo existen algunas diferencias:

  • Basados en usuario. Para predecir qué valoración hará un usuario de un ítem que no ha visto, se buscan perfiles similares al usuario y, como estimación de la valoración del ítem se utiliza la valoración de aquellos usuarios similares.
  • Basados en ítems. Para predecir la valoración de un ítem para un usuario que aún no lo ha visto, se buscan otros ítems similares que han sido valorados por éste.

Medidas de similitud

Para poder comparar los ítems y saber cuánto de parecidos son necesitamos definir una medida de similitud a usar. Podemos elegir diferentes medidas de similitud:

Diferencia cuadrática media. Consiste en calcular la diferencia euclidiana entre dos vectores haciendo uso de la siguiente fórmula:

Donde Bx,y es el conjunto no vacío de ítems valorados en común por los usuarios x e y.

Similitud basada en coseno. Se calcula haciendo uso del coseno del ángulo formado por la intersección de los vectores que representa cada ítem.

Similitud basada en correlación. Los elementos i y j se comparan haciendo uso de la correlación de Pearson.

Donde Ru,i denota la calificación del usuario u en el artículo i, Ri es la calificación promedio del i-ésimo elemento.

Coeficiente de Jaccard. El coeficiente de Tanimoto (Jaccard) se define como la cantidad de elementos por la que dos usuarios expresan cierta preferencia, dividida entre la cantidad de elementos por los cuales el usuario expresa cierta preferencia.

Similitud basada en máxima verosimilitud. Se basa en el número de elementos en común entre dos usuarios, siendo su valor una expresión de lo poco probable que sea que dos usuarios tengan tanta superposición dado el número de elementos que hay y el número de elementos que cada usuario tiene como preferencia.

(Nota: hay más posibles medidas de similitud, se han considerado las más usadas o frecuentes.)

Ejemplo sistemas de recomendación

Observemos los distintos tipos de sistemas de recomendación en un ejemplo concreto. Se quiere recomendar un hotel a un cliente. Disponemos de las valoraciones que este cliente ha realizado de varios hoteles así como las de otros clientes.

Cliente Hotel 1 Hotel 2 Hotel 3 Hotel 4 Hotel 5 Hotel 6 Hotel 7 Hotel 8 Hotel 9 Hotel 10
Cliente x 5 4 3 5
Cliente 1 4 3 4 4 5 5 4 4 2
Cliente 2 5 5 1 2 5 4 2
Cliente 3 3 4 3 5 1 5 4 3
Cliente 4 4 4 2 1 3 3 5 1 2

Además, disponemos de atributos asociados al hotel en función de las características que este presenta.

Cliente Hotel 1 Hotel 2 Hotel 3 Hotel 4 Hotel 5 Hotel 6 Hotel 7 Hotel 8 Hotel 9 Hotel 10
Piscina 1 1 0 1 1 0 0 0 1 0
Parking 0 0 0 1 1 1 1 0 0 1
Cerca del centro 0 1 0 1 0 0 1 1 1 1

Sistema de recomendación basado en contenido

Utilicemos a continuación el sistema de recomendación basado en contenido para recomendar 3 hoteles a un usuario. Para ello se seguirán los siguientes pasos:

  1. Identificar aquellos hoteles que el usuario no ha visitado.
  2. Para cada uno de los hoteles seleccionados en el paso 1:
    • Calcular la somilitud con los hoteles que el usuario ha valorado.
    • Seleccionar los n hoteles más parecidos.
    • Calcular la media ponderada de las valoraciones que el usuario ha dado a los n hoteles más parecidos y almacenar dicho valor como predicho para el hotel p.
  3. Mostrar las recomendaciones de los hoteles con mayor valor predicho.

Para el usuario activo, Cliente x, los hoteles que no ha valorado son: hotel 1, hotel 4, hotel 6, hotel 7. Mientras que, los que sí ha valorado son: hotel 2, hotel 3, hotel 5, hotel 8, hotel 9, hotel 10.

Como en este caso, nos encontramos en sistema de recomendación basado en contenido, se utilizará la información de los hoteles que sí han sido valorados para estimar las puntuaciones de aquellos que aún no lo están. Al utilizar las características de los hoteles que son variables binarias (1 en caso que el hotel tenga dicha característica, 0 en caso contrario), como medida de similitud se utilizará el índice de Jaccard.

Sistema de recomendación de filtrado colaborativo basado en usuarios

Utilizando el mismo ejemplo, obervemos qué hoteles se recomiendan haciendo uso del sistema de recomendación de filtrado colaborativo basado en usuarios.

  1. Calcular las valoraciones de cada cliente.
  2. Calcular la correlación de cada valoración con cada cliente en cuestión.
  3. Predecir la valoración que el usuario hará de cada uno de los hoteles no valorados.

Como en el caso anterior, se utilizan como hoteles valorados los hoteles 2, 3, 5, 8, 9 y 10. Como no valorados los hoteles 1, 4, 6 y 7. Los tres hoteles recomendados para el cliente x, haciendo uso del filtrado colaborativo basado en usuarios es:

Sistema de recomendación de filtrado colaborativo basado en ítems

Apliquemos ahora el sistema de recomendación de filtrado colaborativo basado en ítems al mismo ejemplo.

  1. Se define una rejilla con todas las combinaciones que se desea hacer.
  2. Se calculan las similitudes entre las combinaciones de ítems, en este caso, hoteles.
  3. Se calcula la media ponderada.

Haciendo uso de este tipo de sistema de recomendación, los tres hoteles sugeridos son los siguientes:

Como se observa, utilizando cualquiera de los tres tipos de sistemas de recomendación, el hotel 8 forma parte del conjunto de hoteles sugeridos para el cliente seleccionado. Sin embargo, el valor de la predicción es distinto, ya que cada uno de los tipos de sistemas de recomendación hace uso de características distintas para hacer la recomendación, como se ha explicado a lo largo de esta publicación.

Bibliografía

  • Mendoza G., De Jesús Y. L., Pérez M. C. (2019), Métricas de similaridad y evaluación para sistemas de recomendación de filtrado colaborativo, RITI Journal, Vol. 7, 14 (Julio-Diciembre 2019)
  • Como desarrollar un sistema de recomendación en Python, enlace.
  • Sistemas de recomendación con R, enlace.
Comparte esta entrada