Estás leyendo la publicación: Primeros pasos con el filtrado colaborativo desde cero usando datos aleatorios
Los sistemas de recomendación tienen una amplia gama de aplicaciones en todos los dominios. Construir un buen sistema de recomendación adecuado a los requisitos del negocio siempre es un desafío. Un buen sistema solo puede desarrollarse cuando existe una buena comprensión de su funcionamiento. En este artículo, discutiremos cómo construir un sistema de recomendación, especialmente basado en filtrado colaborativo, desde cero. Comenzaremos con los datos aleatorios y construiremos un sistema de recomendación para generar recomendaciones. Los puntos principales que se discutirán en este artículo se enumeran a continuación.
Tabla de contenido
- ¿Qué es el filtrado colaborativo?
- Uso de la correlación
- Implementación de filtrado colaborativo basado en elementos
- Implementación de filtrado colaborativo basado en el usuario
Empecemos por comprender el filtrado colaborativo.
¿Qué es el filtrado colaborativo?
El filtrado colaborativo se puede considerar como una técnica para proporcionar recomendaciones en un sistema o motor de recomendaciones. En un sentido básico, podemos decir que es una forma de encontrar similitudes entre usuarios y artículos. Utilizándolo, podemos calcular calificaciones basadas en calificaciones de usuarios similares o elementos similares.
Los sistemas de recomendación basados en el filtrado colaborativo se pueden categorizar de las siguientes maneras:
- Basado en artículos: Este tipo de sistema de recomendación ayuda a encontrar similitudes entre los artículos o productos. Esto se hace generando datos de la cantidad de usuarios que compraron dos o más artículos juntos y si el sistema encuentra una correlación alta, asume la similitud entre los productos. Por ejemplo, hay dos productos X e Y que están altamente correlacionados cuando un usuario compra X, el sistema recomienda comprar Y también.
- Basado en el usuario: Este tipo de sistema ayuda a encontrar usuarios similares en función de su naturaleza de selección de elementos. Por ejemplo, un usuario usa un casco, una rodillera y una codera, y el segundo usa solo un casco y una codera en el momento de andar en bicicleta, el sistema de recomendaciones basado en el usuario recomendará al segundo usuario que use una rodillera.
En este artículo, intentaremos comprender el filtrado colaborativo desde cero. Primero, crearemos un ejemplo de datos e intentaremos encontrar similitudes entre los elementos. Encontrar similitudes entre elementos está relacionado con encontrar la correlación entre elementos en función de los datos que tenemos. Antes de ir a la implementación, debemos comprender cuál es la correlación.
Uso de la correlación
La correlación se puede considerar como la relación entre dos variables. Este puede ser de tres tipos positivo, negativo o neutro. Si dos variables están correlacionadas positivamente, podemos decir que los cambios en una variable en una dirección positiva o negativa pueden proporcionar un cambio en la segunda variable en una dirección positiva o negativa.
Si la correlación es negativa, un cambio en una variable puede provocar un cambio en la dirección opuesta. Si las variables están neutralmente correlacionadas, los cambios en una variable no provocan un cambio en la otra. La medición de la correlación se puede realizar utilizando el coeficiente de correlación.
El cálculo del coeficiente de correlación se puede realizar calculando primero la covarianza de la variable y luego dividiendo por la cantidad de covarianza por el producto de las desviaciones estándar de esas variables.
Matemáticamente,
Dónde,
r = coeficiente de correlación
xi = valores de x variable en una muestra
x = media de los valores de la variable x
yi = valores de la variable y en una muestra
y = media de los valores de la variable y
Hay muchos tipos de coeficientes de correlación utilizados en el análisis estadístico, principalmente utilizamos la correlación de Pearson para los sistemas de recomendación porque es una medida de la fuerza y la dirección de la relación lineal entre dos variables. Avancemos hacia la implementación de un sistema de recomendación.
Implementación de filtrado colaborativo basado en elementos
1. Biblioteca de importación
importar pandas como pd importar numpy como np importar matplotlib.pyplot como plt
2. Conjunto de datos
En este artículo, vamos a implementar un sistema de recomendación utilizando el enfoque de filtrado colaborativo para ese propósito, trabajaremos con datos simples. Digamos que tenemos algunos usuarios, productos y calificaciones de ese producto dadas por el usuario. Podemos hacer tal conjunto de datos usando los siguientes códigos;
datos2 = {‘id_usuario’:[1, 2, 3, 1, 2]’ID del Producto’:[1, 2, 1,2,3]’nombre del producto’:[‘product_1’, ‘product_2’, ‘product_1′,’product_2′,’product_3′]’puntuación’:[3,3,3,2,2]
} items_df = pd.DataFrame(data2) items_df
Producción:
Aquí podemos ver que tenemos datos de 3 usuarios y 3 productos.
3. Mesa dinámica
Vamos a crear una tabla dinámica usando estos datos basados en user_id y product_name.
pivote = pd.pivot_table(items_df,values=”rating”,columns=”product_name”,index=’user_id’) pivote
Producción:
Aquí, en el resultado anterior, podemos ver nuestra tabla dinámica. Este formato de tabla se puede utilizar para calcular la correlación. Como la correlación será mayor, podemos usarlos como nuestra recomendación.
Generando recomendación
Para comprender claramente el proceso, hemos utilizado un conjunto de datos muy simple y podemos decir al ver la tabla anterior que los productos 1, 2 y 3 tienen calificaciones similares y el producto 1 tiene dos reseñas. Por lo tanto, puede haber una posibilidad de que los productos 2 y 3 se recomienden con el producto 1. Revisemos nuestros resultados.
print(‘producto recomendado con producto_2:’) print(pivot.corr()[‘product_2’].sort_values(ascending=False).iloc[1:2])
Producción:
Usando las líneas de códigos anteriores, calculamos la correlación entre productos y ordenamos los valores. Luego imprimimos 1 valor y descubrimos que nuestro sistema nos recomienda comprar o usar el producto 2 con el producto 1.
Implementación de filtrado colaborativo basado en el usuario
En la sección anterior, hemos pasado por el proceso de creación de datos y tablas dinámicas. En esta sección, utilizaremos datos similares para implementar el filtrado colaborativo basado en el usuario.
1. Mesa dinámica
Comencemos con la creación de una tabla dinámica para el filtrado colaborativo basado en el usuario. Para este propósito, debemos invertir nuestra tabla dinámica anterior, lo que significa que ahora estamos creando una tabla dinámica basada en usuarios como columnas.
pivot1 = pd.pivot_table(items_df,values=”rating”,columns=”user_id”,index=’product_name’) pivot1
Producción:
En la tabla anterior, podemos ver que tenemos ID de usuario como columna y productos como fila.
2. Generando recomendación
En esta sección, encontraremos usuarios similares en función de sus calificaciones proporcionadas. Para que podamos filtrar a los usuarios y dar recomendaciones similares de diferentes elementos o también podemos dar recomendaciones a un usuario en función de un historial de usuario similar.
print(‘usuarios similares a user_2:’) print(pivote1.corr()[2].sort_values(ascending=True).iloc[1:2])
Producción:
En el resultado anterior, podemos ver que el primer usuario es más similar al segundo usuario, y se debe a que proporcionaron calificaciones casi similares en nuestro conjunto de datos principal.
Ultimas palabras
En este artículo, hemos repasado las intuiciones básicas detrás de la creación de sistemas de recomendación utilizando técnicas de filtrado colaborativo y aprendimos este enfoque desde cero. Se puede encontrar una cobertura más avanzada sobre el filtrado colaborativo aquí, donde podemos ver cómo se puede realizar con un gran conjunto de datos.
Los códigos utilizados en la implementación anterior se pueden encontrar aquí.