Todo lo que Necesita Saber Sobre El Filtrado Colaborativo

Antes de adentrarnos en conceptos básicos como los sistemas de recomendación de filtrado colaborativo y los algoritmos de filtrado colaborativo, entendamos los sistemas de recomendación.

Un sistema de recomendación tiene como objetivo predecir las preferencias de un usuario, para “recomendar” un artículo, que podría ser un producto como ropa, o podrían ser películas, servicios, etc., los sistemas de recomendación se han vuelto muy importantes hoy en día debido al excedente de opciones en todos los dominios, y ayudan a las empresas a colocar mejor sus productos o servicios para aumentar el movimiento.

Hay dos formas de crear un sistema de recomendación; una se basa en el Contenido y la otra en el Filtrado colaborativo. Analizaremos el Filtrado Colaborativo en profundidad en este artículo, junto con ejemplos de Filtrado Colaborativo.

35% de Amazon.com los ingresos son generados por su motor de recomendaciones.

Hay dos formas, o sentidos, en los que el filtrado colaborativo ejecuta sistemas de recomendación, y esa es una forma estrecha y una más general.

En un sentido más estricto, el filtrado colaborativo funciona al predecir las preferencias de un usuario, al recopilar y estudiar las preferencias de muchos otros usuarios similares.

Descargue el Plan de estudios Detallado y Obtenga acceso gratuito a la Sesión de Orientación

Fecha: 13 de febrero de 2021 (Sábado)
Hora: 10: 30 AM – 11: 30 AM (IST / GMT + 5:30)
(Proporcione sus datos de contacto, el enlace de descarga se le enviará por correo electrónico en pocos segundos)

Por ejemplo, si el usuario A y el usuario B prefieren la misma lavadora, las otras preferencias del usuario B podrían ser algo en lo que el usuario A esté interesado, ya que sus gustos y necesidades son similares. Esto se hace, por supuesto, teniendo en cuenta muchos usuarios diferentes y numerosas preferencias y reacciones, de ahí el término, filtrado colaborativo.

Sistema de Fuente – Recomendación de filtrado Colaborativo

En un sentido más general, el filtrado colaborativo es el proceso de predecir la preferencia de un usuario mediante el estudio de su actividad para derivar patrones.

Por ejemplo, al estudiar los gustos, disgustos, saltos y vistas, un sistema de recomendación puede predecir lo que le gusta y lo que no le gusta a un usuario.

La diferencia entre el filtrado colaborativo y el filtrado basado en contenido es que el primero no necesita información de elementos, sino que funciona en las preferencias del usuario.

Tipos de filtrado Colaborativo

Algoritmo de Vecindario más Cercano o basado en memoria

Fuente del sistema de recomendación: Hacia la Ciencia de datos

Este método utiliza un sistema de clasificación para predecir las preferencias de un usuario teniendo en cuenta las preferencias de un usuario similar o del “vecino”. Hay dos formas de calcular las preferencias aquí, el Filtrado Colaborativo basado en usuarios y el Filtrado Colaborativo basado en elementos.

Primero consideremos el filtrado colaborativo basado en el usuario. Digamos que tenemos una matriz de calificaciones n x m, para el usuario u=, i = 1, n n y el elemento p p, j=1, m m. Digamos que necesitamos predecir la calificación del elemento r r, un elemento j que el usuario no ha visto/calificado. Cómo funciona este método, es calcular las preferencias del usuario i y compararlas con otros usuarios, seleccionar los X usuarios similares principales, tomar sus calificaciones para el elemento rᵢⱼ y encontrar el promedio ponderado para predecir la posible calificación/preferencia del usuario i del elemento.

Teniendo en cuenta el hecho de que algunos usuarios tienden a ser demasiado indulgentes, dando calificaciones altas para artículos que realmente no disfrutan, mientras que algunos usuarios tienden a ser demasiado estrictos, dando calificaciones bajas incluso para artículos que les gustan, este método de Filtrado Colaborativo corrige la fórmula para deshacerse del sesgo. Para corregir esto, restamos la calificación promedio de cada usuario de todos los elementos al calcular el promedio ponderado y luego la agregamos de nuevo para el usuario objetivo:

La similitud se puede calcular de 2 maneras: Correlación de Pearson y Similitud de Coseno.

Resumiendo este método, la idea es encontrar usuarios más similares a nuestro usuario objetivo en términos de preferencia, sopesar sus calificaciones para un elemento y predecir que como la calificación potencial para nuestro usuario objetivo, para el elemento seleccionado.

En el Filtrado Colaborativo Basado en elementos, comparamos dos elementos y asumimos que son similares cuando un usuario otorga calificaciones similares a los dos elementos. A continuación, predecimos la calificación de ese usuario para un elemento calculando el promedio ponderado de las calificaciones en la mayoría de los X elementos similares de este usuario. Vea la imagen de abajo como ejemplo.

Fuente-Medio de filtrado Basado en elementos

Filtrado Colaborativo basado en modelos

En este método de sistemas de recomendación de filtrado colaborativo, se utilizan diferentes algoritmos de minería de datos y aprendizaje automático para desarrollar un modelo para predecir la calificación de un usuario de un elemento no calificado. Algunos ejemplos de estos modelos son redes bayesianas, modelos de agrupamiento, descomposición de valores singulares, análisis semántico probabilístico latente, factor multiplicativo múltiple, asignación de Dirichlet latente y modelos basados en procesos de decisión de Markov.

Filtrado Colaborativo híbrido

Este método combina los sistemas de filtrado Colaborativo basados en memoria y basados en modelos para eliminar limitaciones como la escasez y la pérdida de información. Este método, sin embargo, es más complejo de construir.

Descargue el Plan de estudios Detallado y Obtenga acceso gratuito a la Sesión de Orientación

Fecha: 13 de febrero de 2021 (Sábado)
Hora: 10: 30 AM – 11: 30 AM (IST / GMT + 5:30)
(Proporcione sus datos de contacto, el enlace de descarga se le enviará por correo electrónico en pocos segundos)

Ejemplo de filtrado colaborativo

Para obtener una buena comprensión de los sistemas de recomendación de filtrado colaborativo, tomemos un ejemplo de filtrado colaborativo en tiempo real y construyamos un algoritmo de filtrado colaborativo en Python. El primer paso es definir el conjunto de datos. Si eres un principiante en Python, echa un vistazo a este artículo de conocimiento:

Conjunto de datos

Para este ejemplo de filtrado colaborativo, primero necesitamos acumular datos que contengan un conjunto de elementos y usuarios que hayan reaccionado a estos elementos. Esta reacción puede ser explícita, como una calificación, un me gusta o un disgusto, o puede ser implícita, como ver un artículo, agregarlo a una lista de deseos o leer un artículo.

Estos conjuntos de datos generalmente se representan como una matriz que consiste en un conjunto de usuarios, elementos y las reacciones dadas por estos usuarios a estos elementos. Este es un ejemplo:

Una matriz con cinco usuarios y cinco elementos Fuente – Python Real

Esta matriz representa a cinco usuarios u1-u5, que han calificado cinco elementos i1-i5, entre las calificaciones 1-5 (también sin calificaciones). En la mayoría de los casos, estas matrices tienen más celdas vacías que llenas, porque es muy poco probable que muchos usuarios califiquen muchos de los elementos de la lista. Esto se conoce como matriz dispersa.

Puede usar esta lista de fuentes de datos de alta calidad para sus proyectos de algoritmos de filtrado colaborativos. Un buen lugar para comenzar es el conjunto de datos MovieLens 100k, que contiene 100.000 calificaciones para 1682 películas dadas por 943 usuarios, y cada usuario ha calificado al menos 20 películas.

Si bien el conjunto de datos tiene muchos campos útiles, los que estamos enfocando en uno en particular son:

u.item: the list of moviesu.data: the list of ratings given by users

El archivo u. data contiene una lista separada de clasificaciones e ID de usuario, ID de elemento, clasificación y marca de tiempo. Este es un ejemplo:

Primeras 5 Filas de Fuente de datos MovieLens 100k: Python Real

El archivo completo contiene datos para 100,000 de tales clasificaciones.

Crear el Algoritmo de Filtrado Colaborativo

La idea detrás de la ejecución de este proyecto es 1. Identificar usuarios con preferencias similares y luego 2. Predice la calificación de una película por parte de un usuario que aún no la ha calificado. También tendremos que tener en cuenta la precisión de nuestros resultados.

1 y 2 se logran utilizando diferentes conjuntos de algoritmos. Un punto importante a recordar es que no nos preocupa la edad de los usuarios de la muestra, la demografía, etc. o el género de las películas, etc. Todo lo que nos preocupa son las calificaciones implícitas y/o explícitas de estas películas por parte de estos usuarios.

Para medir la precisión de nuestro resultado, podemos usar opciones como Error Cuadrático Medio Raíz o Error Absoluto Medio.

Algoritmo de filtrado Colaborativo basado en memoria

En este método, estamos tratando de predecir la calificación R que un usuario U posiblemente le daría a un elemento (la película) I.

El primer paso es encontrar usuarios que tienen preferencias similares a las del usuario U, luego calcular la calificación R.

Aquí hay un ejemplo de cómo encontramos usuarios con preferencias similares. Considere el pequeño conjunto de datos:

Estas son clasificaciones para 2 películas, dadas por 4 usuarios A, B, C y D. Trazando las clasificaciones, el gráfico se ve así:

Trazado de la fuente de clasificaciones: Python Real

La distancia entre los puntos de trazado es una forma de hacerse una idea de las similitudes de interés. Podemos usar el siguiente programa para calcular la distancia:

desde scipy import spatial

Estamos usando el scipy.espacial.distancia.función euclidiana para calcular la distancia. Estamos calculando la distancia de C de A, B y D. Podemos ver, a partir del resultado y también de la propia tabla, que C está más cerca de B. Pero también, nos gustaría saber de A y D quién está más cerca de C. en términos de distancia, podríamos decir D, pero mirando la tabla podríamos decir que A y C están más alineados porque a ambos les gusta la película 2 el doble que la película 1 (considerando las proporciones y no la clasificación real), mientras que al usuario D le gustan ambas películas casi por igual, lo que indica que su preferencia puede ser diferente. Lo que la distancia euclidiana no puede predecir, posiblemente podemos derivar del ángulo de la línea que conecta a los usuarios. Uniendo a los usuarios, el gráfico se vería como:

Podemos ver que cuanto menor sea el ángulo entre dos líneas, más similares serán sus referencias. Para encontrar esto en el programa, podemos ejecutar lo siguiente:

Puede ver que la similitud de coseno entre a y b es 0, lo que indica una similitud cercana. El uso de distancia euclidiana y similitud de coseno es 2 de los diferentes métodos que puede usar para calcular la similitud de preferencia.

Calcular la Calificación

Una vez que hemos identificado usuarios con preferencias similares a nuestro usuario U, vamos a predecir la calificación que R U daría por una película si aún no la han calificado. De nuevo, hay muchas maneras de hacer esto.

Una forma sencilla es encontrar el promedio de las calificaciones dadas para esa película por los usuarios principales similares. La expresión matemática sería:

La fórmula matemática para la calificación promedio dada por n usuarios Fuente: Python Real

También puede optar por un enfoque ponderado si en los usuarios similares principales hay mucha diferencia de opinión. Eso significaría darle más peso al usuario similar más cercano y luego pesos descendentes. La expresión sería:

Limitaciones del filtrado Colaborativo

Por un lado, no tiene en cuenta los metadatos. Los usuarios pueden calificar una película en función de su preferencia por el actor en ella, por ejemplo, pero el filtrado colaborativo no tendrá esto en cuenta.

Otro inconveniente es que el filtrado colaborativo no es muy efectivo a menos que muchos usuarios hayan calificado muchos elementos. Solo entonces puede hacer la mejor coincidencia para una audiencia similar y luego predecir la calificación.

Dado que el filtrado colaborativo necesita grandes conjuntos de datos, para poder obtener usuarios con similitudes cercanas, a menudo existe el problema de la escasez de datos. Como vimos anteriormente, una matriz dispersa es una con más celdas vacías que llenas, lo cual es casi siempre el caso.

La escalabilidad es otro problema, ya que el algoritmo de filtrado colaborativo generalmente se escribe considerando n usuarios. A medida que el conjunto de datos crece, el programa en general puede volverse masivo.

Aplicaciones de Sistemas de Recomendación de Filtrado Colaborativo

Sistemas de recomendación de Filtrado Colaborativo Fuente: Python Real

El filtrado colaborativo encuentra el uso más alto en la web social. Verás filtrado colaborativo en acción en aplicaciones como YouTube, Netflix y Reddit, entre muchas otras. Estas aplicaciones usan filtros colaborativos para recomendar videos/publicaciones que es más probable que le gusten al usuario en función de su algoritmo predictivo.

El filtrado colaborativo es un método popular para programas de recomendación, a pesar de las limitaciones. También se utiliza en plataformas de comercio electrónico para recomendar productos, en función de las compras realizadas por usuarios de preferencias o gustos similares.

Como programador, necesitará mezclar algoritmos para hacer que el filtrado colaborativo sea más preciso, y también mezclar métodos o predicciones para obtener los resultados más precisos. El capítulo de Sistemas de Recomendación en el libro de Conjuntos de Datos Masivos de Minería también es una gran fuente de información sobre el Filtrado Colaborativo.

Descargue el Plan de estudios Detallado y Obtenga acceso gratuito a la Sesión de Orientación

Fecha: 13 de febrero de 2021 (Sábado)
Hora: 10: 30 AM – 11: 30 AM (IST / GMT + 5:30)
(Proporcione sus datos de contacto, el enlace de descarga se le enviará por correo electrónico en pocos segundos)

También tenemos una Guía Completa sobre Cómo Convertirse en un Científico de datos, que es algo que la mayoría de los entusiastas del aprendizaje automático aspiran a convertirse.

Para obtener el conjunto de habilidades de ciencia de datos adecuado, debe inscribirse en un Curso de Ciencia de Datos. Esto le ayudará a elevar su carrera como Científico de Datos.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.