Saltar la navegación

Sistema basado en filtrado colaborativo

Filtrado colaborativo

Un filtrado colaborativo es el proceso de predecir los intereses de un usuario mediante la identificación de preferencias e información de muchos usuarios. Esto se hace filtrando datos en busca de información o patrones utilizando técnicas que involucran la colaboración entre múltiples agentes, fuentes de datos, etc. La intuición detrás del filtrado colaborativo es que, si los usuarios «A» y «B» tienen gustos similares en un producto, entonces es probable que «A» y «B» tienen un gusto similar en otros productos también. 

La principal ventaja de usar modelos de filtrado colaborativo es su simplicidad de implementación y el alto nivel de cobertura que brindan. También es beneficioso porque captura características sutiles y no requiere la comprensión del contenido del ítem. 

La principal desventaja de este modelo es que no es amigable para recomendar nuevos artículos, esto se debe a que no ha habido interacción usuario/artículo con él. Esto se conoce como el problema de arranque en frío (anteriormente explicado).  

Algunos ejemplos de algoritmos de filtrado colaborativo: 

  • Recomendación de contenido de «YouTube» a los usuarios: recomendarle videos en función de otros usuarios que se han suscrito o visto videos similares a los suyos. 
  • Recomendación de curso de «Coursera»: recomendarle cursos en función de otras personas que han terminado los cursos existentes que usted ha terminado.
Filtrado colaborativo
Jorge Calvo. Imagen 6 (CC BY-SA)

¿Cómo funciona?

Una vez que se ha explicado en el aula el concepto y contexto de un filtro colaborativo en un sistema de recomendación, el siguiente paso es entender de manera práctica como se puede observar esa similitud enfocada en el usuario. 

Se realiza un ejercicio como se muestra en la Imagen 6, donde se permite una intuición de cuál puede ser la similitud de gustos por películas de cada usuario. 

Observaciones:

  • Columna Izquierda: Se observar una similitud basada en la elección del producto por parte del usuario 1 y el usuario 2. 
  • Columna derecha: Se observa la similitud de los usuarios 1 y 2 como consecuencia de elecciones muy similares en sus productos.

Caso real

Se crea una tabla como la que se muestra en la Imagen 7, en las filas tenemos los usuarios y en las columnas las películas que ha visto o no. Las películas están marcadas por una puntuación de 0 a 10, que marca la «similitud o cercanía».

Esas puntuaciones se pueden explicar que provienen de la unión de varias interacciones, por ejemplo, la veces que ha visto esa película, si le ha dado a «me gusta» dentro de la plataforma, si al recomendaría, etc. Para el caso de esta actividad simplemente daremos un valor por concretar las operaciones matemáticas. 

Objetivo de la actividad.

Conocer el valor de similitud de nuestro usuario 4 en esas dos películas rodeadas con un circulo en rojo y signo de interrogación.
Son valores que no se conocen debido a que no ha existido ninguna interacción entre ese usuario y esa película, por lo tanto, el objetivo es conocer ese valor para recomendar esa película en mayor o menor grado. 
Debemos recordar que la importancia de un sistema de recomendación no está solo en saber que recomendar, si no en que grado hacerlo.

Buscamos la similitud por medio de la cercanía
Jorge Calvo. Imagen 7 (CC BY-SA)

Para poder calcular ese valor de recomendación del usuario 4 con esos dos productos debemos entender un concepto muy interesante dentro de las matemáticas, “la distancia”.

En un conjunto de datos basados en el mismo contexto podemos calcular la cercanía que existe entre ellos gracias a técnicas de distancia como la distancia Manhattan, la distancia Euclídea o la similitud del coseno. 

En esta actividad usaremos la distancia euclidea para resolver las distancias, pero podría usarse cualquier otra.

Distancia euclídea

La distancia euclidea es una medida de la distancia entre dos puntos en un espacio bidimensional o tridimensional. Se calcula utilizando la fórmula de la distancia euclidea, que es la raíz cuadrada de la suma de las diferencias entre las coordenadas de cada punto, elevadas al cuadrado.

Por ejemplo, si tenemos dos puntos A y B en un espacio bidimensional con coordenadas (x1, y1) y (x2, y2) respectivamente, podemos calcular la distancia euclidea entre ellos con la siguiente fórmula:

distancia_{euclidea}= \sqrt{(x_2 - x_1)^2 + (y_2 - y_1)^2}

...

Por lo tanto, si queremos calcular la distancia entre dos puntos en un espacio tridimensional, tendríamos que añadir otro término a la fórmula para tener en cuenta la coordenada Z. La fórmula quedaría así:

distancia_{euclidea}=\sqrt{(x_2 - x_1)^2 + (y_2 - y_1)^2 +(z_2 - z_1)^2}

...

En resumen, la distancia euclídea es una forma de medir la distancia entre dos puntos en un espacio bidimensional o tridimensional utilizando la fórmula matemática de la distancia euclídea.

La similitud del coseno

La similitud del coseno es una medida de similitud entre dos vectores en un espacio vectorial. Se calcula utilizando el coseno del ángulo entre los dos vectores y su magnitud.

Para calcular la similitud del coseno entre dos vectores «A» y «B», podemos utilizar la siguiente fórmula:

similitud_{coseno}=\frac{A \cdot B}{|A| \cdot |B|}

...

En esta fórmula, «A · B» se refiere al producto escalar de los vectores «A» y «B», mientras que «|A|» y «|B|» representan las magnitudes de los vectores correspondientes.

El resultado de esta fórmula es un número entre -1 y 1, donde un valor cercano a 1 indica una alta similitud entre los vectores, mientras que un valor cercano a -1 indica una baja similitud. Si el resultado es 0, significa que los vectores son ortogonales (es decir, que forman un ángulo de 90 grados).

En resumen, la similitud del coseno es una forma de medir la similitud entre dos vectores utilizando el coseno del ángulo entre ellos y su magnitud. Es una medida muy útil en áreas como el procesamiento del lenguaje natural y la recomendación de contenido.

Ahora debemos conocer la distancia que hay entre el usuario 4, con el resto de los usuarios usando como valores los tres productos que tienen en común.

Distancia entre usuarios
Jorge Calvo. Imagen 8 (CC BY-SA)

Entenderemos cada producto (película) como la coordenada de un vector, en este caso tenemos un vector de 3 coordenadas, es decir en . Los valores que no existan (cruz roja) colocaremos un cero.

Posteriormente para que estos valores se mantengan entre 0 y 10 en las recomendaciones, deberemos normalizar nuestras distancias de similitud entre 0 y 1. 

¿Por qué debemos normalizar?


Normalizar los datos es una técnica que se utiliza para ajustar las características de los datos a un rango o escala común. Esto puede ser útil por varias razones:

1. Evitar sesgos de escala: Algunos algoritmos de machine learning son sensibles a la escala de los datos de entrada. Por ejemplo, si tenemos una columna con el número de “clicks” que hace el usuario dentro de Netflix y otra con el número de accesos que tiene ese usuario al día, es evidente que la primera columna tendrá valores mucho más elevados que la segunda y no por esto debe ser más importante o relevante. La normalización ayuda a evitar este problema al ajustar todas las características a un rango común.

2. Facilitar la comparación: La normalización también puede facilitar la comparación de características con diferentes escalas. Si dos características tienen diferentes unidades o escalas, es difícil compararlas directamente. La normalización las ajusta a una escala común, lo que facilita la comparación.

3. Mejorar la eficiencia: Algunos algoritmos, como los de clasificación, son más eficientes cuando las características están normalizadas. Si una característica tiene una escala muy alta, puede dominar a las demás y hacer que el algoritmo sea menos eficiente. La normalización ayuda a evitar este problema.

¿Cómo normalizamos?

Youtube/Jorge Calvo. Normalización, escalado de variables (Licencia estándar de YouTube)

Los valores normalizados son:

  • Distancia entre Usuario 4 y Usuario 1

V1(usuario1)=(6,8,4)

V4(usuario4)=(10,7,8)

Dst_n= \frac {5,74-0}{0-10}=0,57

...

  • Distancia entre Usuario 4 y Usuario 2

V2(usuario2)=(10,6,0)

V4(usuario4)=(10,7,8)

Dst_n= \frac {8,06-0}{0-10}=0,80

...

  • Distancia entre Usuario 4 y Usuario 3
    V2(usuario3)=(9,6,10)

    V4(usuario4)=(10,7,8)

Dst_n= \frac {7,34-0}{0-10}=0,73

...

Utilizamos las distancias

En la siguiente fase se usarán las distancias obtenidas en cada usuario para multiplicar con las películas que no se tenían en común con el usuario al que queremos recomendar.

Como se observa en la imagen inferior, tenemos estas dos películas.

Utilizamos las distancias
Jorge Calvo. Imagen 10 (CC BY-SA)

Se realizan las multiplicaciones y obtenemos los resultados para cada producto.

Como se puede observar no importa si no se tienen todos los valores completos.

Multiplicaciones
Jorge Calvo. Imagen 11 (CC BY-SA)

Obteniendo los valores de recomendación

Para terminar la actividad se debe obtener los valores finales de recomendación para el usuario objetivo. Para ello se realizarán los siguientes pasos. 

 Sumar las cantidades obtenidas en el punto anterior por producto.
 Multiplicar nuevamente las distancias, pero en este caso en función a la suma de los productos y los usuarios relacionados.

Suma de productos
Jorge Calvo. Imagen 12 (CC BY-SA)

Explicación numérica de las operaciones

5,13 + 1,6 + 3,65 = 10,38 (valor grupal del producto)

6,4 + 5,11 = 11,51 (valor grupal del producto)

\frac {10,38}{0,80+0,73}=7,5 \quad Valor \quad final \quad de \quad recomendación

...

\frac{11,51}{0,75+0,80+0,73}= 4,9 \quad Valor \quad final \quad de \quad recomendación

...

Creado con eXeLearning (Ventana nueva)

Financiado por la Unión Europea — Ministerio de Educación y Formación Profesional (Gobierno de España) — Plan de Recuperación, Transformación y Resiliencia