in

Cómo construir un sistema de recomendación de películas

0Jb306SqcT0f 5ZFe

Tutoriales prácticos, APRENDIZAJE MÁQUINA

Cómo construir un sistema de recomendación de películas

Guía paso a paso para crear un sistema de recomendación simple

Ramya Vidiyala

2 de oct de 2020·12 min de lectura

¿Alguna vez te has preguntado cómo YouTube recomienda contenido o cómo Facebook te recomienda a tus nuevos amigos? Quizás haya notado recomendaciones similares con las conexiones de LinkedIn, o cómo Amazon recomendará productos similares mientras navega. Todas estas recomendaciones son posibles gracias a la implementación de sistemas de recomendación.

Los sistemas de recomendación abarcan una clase de técnicas y algoritmos que pueden sugerir elementos «relevantes» a los usuarios. Predicen el comportamiento futuro basándose en datos pasados ​​a través de una multitud de técnicas, incluida la factorización matricial.

En este artículo, voy a lOjo por qué necesitamos sistemas de recomendación y los diferentes tipos de usuarios en línea. Luego, le mostraré cómo crear su propio sistema de recomendación de películas utilizando un conjunto de datos de código abierto.

Contenido

  • ¿Por qué necesitamos sistemas de recomendación?
  • Tipos de sistemas de recomendación
    A) Sistemas de recomendación de películas basados ​​en contenido
    B) Sistemas de recomendación de películas de filtrado colaborativo
  • El conjunto de datos
  • Diseño de un sistema de recomendación de películas
  • Implementación
    Paso 1: Algoritmo basado en factorización de matrices
    Paso 2: creación de funciones artesanales
    Paso 3: creación de un modelo final para nuestro sistema de recomendación de películas
  • Métricas de rendimiento
  • Resumen
1*XNAW HhJKgddajOM9ql7QQ

¿Por qué necesitamos sistemas de recomendación?

Ahora vivimos en lo que algunos llaman la «era de la abundancia». Para cualquier producto dado, a veces hay miles de opciones para elegir. Piense en los ejemplos anteriores: transmisión de videos, redes sociales, compras en línea; la lista continua. Los sistemas de recomendación ayudan a personalizar una plataforma y ayudan al usuario a encontrar algo que le guste.

La forma más fácil y sencilla de hacerlo es recomendar los artículos más populares. Sin embargo, para mejorar realmente la experiencia del usuario a través de recomendaciones personalizadas, necesitamos sistemas de recomendación dedicados.

Desde un punto de vista comercial, cuanto más productos relevantes encuentre un usuario en la plataforma, mayor será su participación. Esto a menudo da como resultado un aumento de los ingresos para la propia plataforma. Varias fuentes dicen que entre el 35% y el 40% de los ingresos de los gigantes tecnológicos provienen únicamente de recomendaciones.

Ahora que entendemos la importancia de los sistemas de recomendación, echemos un vistazo a los tipos de sistemas de recomendación y luego creemos el nuestro con datos de código abierto.

1*XNAW HhJKgddajOM9ql7QQ

Tipos de sistemas de recomendación

Los algoritmos de aprendizaje automático en los sistemas de recomendación generalmente se dividen en dos categorías: sistemas basados ​​en contenido y sistemas de filtrado colaborativo. Los sistemas de recomendación modernos combinan ambos enfoques.

Echemos un vistazo a cómo funcionan utilizando sistemas de recomendación de películas como base.

A) Sistemas de recomendación de películas basados ​​en contenido

Los métodos basados ​​en contenido se basan en la similitud de los atributos de la película. Con este tipo de sistema de recomendación, si un usuario ve una película, se recomiendan películas similares. Por ejemplo, si un usuario ve una película de comedia protagonizada por Adam Sandler, el sistema le recomendará películas del mismo género o protagonizadas por el mismo actor, o ambos. Teniendo esto en cuenta, la entrada para crear un sistema de recomendación basado en contenido son los atributos de las películas.

1*dsuGJVJSqhhhNySFnt7EVw

Figura 1: Descripción general del sistema de recomendación basado en contenido (imagen creada por el autor)

B) Sistemas de recomendación de películas de filtrado colaborativo

Con el filtrado colaborativo, el sistema se basa en interacciones pasadas entre usuarios y películas. Teniendo esto en cuenta, la entrada para un sistema de filtrado colaborativo se compone de datos anteriores de las interacciones del usuario con las películas que miran.

Por ejemplo, si el usuario A mira M1, M2 y M3, y el usuario B mira M1, M3, M4, recomendamos M1 y M3 a un usuario similar C. Puede ver cómo se ve en la siguiente figura para una referencia más clara.

1*pv6CDVqPgITYi Nr0RygUw

Figura 2: Un ejemplo del sistema de recomendación de películas de filtrado colaborativo (Imagen creada por el autor)

Estos datos se almacenan en una matriz denominada matriz de interacciones usuario-película, donde las filas son los usuarios y las columnas son las películas.

Ahora, implementemos nuestro propio sistema de recomendación de películas usando los conceptos discutidos anteriormente.

1*XNAW HhJKgddajOM9ql7QQ

El conjunto de datos

Para nuestro propio sistema, usaremos el conjunto de datos MovieLens de código abierto de GroupLens. Este conjunto de datos contiene 100.000 puntos de datos de varias películas y usuarios.

Usaremos tres columnas de los datos:

  • userId
  • movieId
  • clasificación

Puede ver una instantánea de los datos en la figura 3, a continuación:

0*Tmjknz0VUyDhXl5h

Figura 3: Instantánea de datos (Imagen del autor)
1*XNAW HhJKgddajOM9ql7QQ

Diseño de nuestro sistema de recomendación de películas

Para obtener recomendaciones para nuestros usuarios, predeciremos sus calificaciones para las películas que aún no han visto. Luego, las películas se indexan y se sugieren a los usuarios en función de estas calificaciones previstas.

Para hacer esto, usaremos registros pasados ​​de películas y calificaciones de usuarios para predecir sus calificaciones futuras. En este punto, vale la pena mencionar que en el mundo real, es probable que encontremos nuevos usuarios o películas sin historial. Estas situaciones se denominan problemas de arranque en frío.

Echemos un vistazo breve a cómo se pueden abordar los problemas de arranque en frío.

1*XNAW HhJKgddajOM9ql7QQ

Problemas de arranque en frío

Los problemas de arranque en frío pueden manejarse mediante recomendaciones basadas en metainformación, como:

  • Para los nuevos usuarios, podemos usar su ubicación, edad, sexo, navegador y dispositivo de usuario para predecir recomendaciones.
  • En el caso de películas nuevas, podemos utilizar el género, el reparto y el equipo para recomendarlas a los usuarios objetivo.
1*XNAW HhJKgddajOM9ql7QQ

Implementación

Para nuestro sistema de recomendación, usaremos las dos técnicas mencionadas anteriormente: filtrado basado en contenido y filtrado colaborativo. Para encontrar la similitud entre películas para nuestro método basado en contenido, usaremos una función de similitud de coseno. Para nuestro método de filtrado colaborativo, usaremos una técnica de factorización matricial.

El primer paso hacia esto es crear un modelo basado en factorización matricial. Usaremos la salida de este modelo y algunas características hechas a mano para proporcionar entradas al modelo final. El proceso básico se verá así:

  • Paso 1: Construya un modelo basado en factorización matricial
  • Paso 2: crea características hechas a mano
  • Paso 3: implementar el modelo final

Veremos estos pasos con mayor detalle a continuación.

1*XNAW HhJKgddajOM9ql7QQ

Paso 1: Algoritmo basado en factorización de matrices

La factorización matricial es una clase de algoritmos de filtrado colaborativo que se utilizan en los sistemas de recomendación. Esta familia de métodos se hizo ampliamente conocida durante el desafío del premio de Netflix debido a su efectividad.

Los algoritmos de factorización de matrices funcionan descomponiendo la matriz de interacción usuario-película en el producto de dos matrices rectangulares de menor dimensionalidad, digamos U y M. La descomposición se realiza de tal manera que el producto da como resultado valores casi similares a la matriz de interacción usuario-película . Aquí, U representa la matriz de usuarios, M representa la matriz de películas, n es el número de usuarios y m es el número de películas.

Cada fila de la matriz de usuarios representa un usuario y cada columna de la matriz de películas representa una película.

1*NXi0LB3kgjXI9meTYB1Raw

Figura 4: Factorización de matrices (imagen creada por el autor)

Una vez que obtenemos las matrices U y M, basadas en las celdas no vacías en la matriz de interacción usuario-película, realizamos el producto de U y M y predecimos los valores de las celdas no vacías en la matriz de interacción usuario-película.

Para implementar la factorización matricial, usamos una biblioteca Python simple llamada Surprise, que es para construir y probar sistemas de recomendación. El marco de datos se convierte en un conjunto de trenes, un formato de conjunto de datos que será aceptado por la biblioteca Surprise.

from surprise import SVD
import numpy as np
import surprise
from surprise import Reader, Dataset
# It is to specify how to read the data frame.
reader = Reader(rating_scale=(1,5))
# create the traindata from the data frame
train_data_mf = Dataset.load_from_df(train_data[['userId', 'movieId', 'rating']], reader)
# build the train set from traindata.
#It is of dataset format from surprise library
trainset = train_data_mf.build_full_trainset()
svd = SVD(n_factors=100, biased=True, random_state=15, verbose=True)
svd.fit(trainset)

Ahora el modelo está listo. Almacenaremos estas predicciones para pasar al modelo final como una característica adicional. Esto nos ayudará a incorporar el filtrado colaborativo en nuestro sistema.

#getting predictions of train set
train_preds = svd.test(trainset.build_testset())
train_pred_mf = np.array([pred.est for pred in train_preds])

Tenga en cuenta que también tenemos que realizar los pasos anteriores para los datos de prueba.

1*XNAW HhJKgddajOM9ql7QQ

Paso 2: creación de funciones artesanales

Convirtamos los datos en formato de marco de datos en una matriz de interacción entre el usuario y la película. Las matrices utilizadas en este tipo de problemas son generalmente escasas porque existe una alta probabilidad de que los usuarios solo califiquen algunas películas.

Las ventajas del formato de matriz dispersa de datos, también llamado formato CSR, son las siguientes:

  • operaciones aritméticas eficientes: CSR + CSR, CSR * CSR, etc.
  • corte de hileras eficiente
  • productos rápidos de matriz-vector

scipy.sparse.csr_matrix es una función de utilidad que convierte eficientemente el marco de datos en una matriz dispersa.

# Creating a sparse matrix
train_sparse_matrix = sparse.csr_matrix((train_data.rating.values, (train_data.userId.values, train_data.movieId.values)))

‘train_sparse_matrix’ es la representación matricial dispersa del marco de datos train_data.

Crearemos 3 conjuntos de características usando esta matriz dispersa:

  1. Características que representan promedios globales
  2. Funciones que representan los cinco principales usuarios similares
  3. Funciones que representan las cinco mejores películas similares

Echemos un vistazo a cómo preparar cada uno con más detalle.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

gamer fornite

¿Cómo registrarse o crear una cuenta en IMVU? – Paso a paso

Gestión de suscripciones | CX | Oráculo