🚀 Prueba Zilliz Cloud, el Milvus completamente gestionado, gratis—¡experimenta un rendimiento 10 veces más rápido! Prueba Ahora>>

milvus-logo
LFAI

Antecedentes Introducción

  • Scenarios
February 24, 2021
Shiyu Chen

Antecedentes Introducción

Con el desarrollo continuo de la tecnología de red y la escala cada vez mayor del comercio electrónico, el número y la variedad de productos crecen rápidamente y los usuarios necesitan dedicar mucho tiempo a encontrar los productos que desean comprar. Esto supone una sobrecarga de información. Para resolver este problema surgieron los sistemas de recomendación.

El sistema de recomendación es un subconjunto del sistema de filtrado de información, que puede utilizarse en diversos ámbitos, como las recomendaciones de películas, música, comercio electrónico y Feed stream. El sistema de recomendación descubre las necesidades e intereses personalizados del usuario analizando y extrayendo los comportamientos del usuario, y le recomienda información o productos que pueden ser de su interés. A diferencia de los motores de búsqueda, los sistemas de recomendación no requieren que los usuarios describan con precisión sus necesidades, sino que modelan su comportamiento histórico para ofrecer de forma proactiva información que satisfaga los intereses y necesidades del usuario.

En este artículo utilizamos PaddlePaddle, una plataforma de aprendizaje profundo de Baidu, para construir un modelo y combinar Milvus, un motor de búsqueda de similitud vectorial, para construir un sistema de recomendación personalizado que pueda proporcionar a los usuarios información interesante de forma rápida y precisa.

Preparación de datos

Tomamos como ejemplo MovieLens Million Dataset (ml-1m) [1]. El conjunto de datos ml-1m contiene 1.000.000 de reseñas de 4.000 películas realizadas por 6.000 usuarios, recopiladas por el laboratorio de investigación GroupLens. Los datos originales incluyen datos de características de la película, características del usuario y valoración del usuario de la película, puede consultar ml-1m-README [2] .

El conjunto de datos ml-1m incluye 3 artículos .dat: movies.dat、users.dat y ratings.dat.movies.dat incluye las características de la película, véase el ejemplo a continuación:

MovieID::Title::Genres
1::ToyStory(1995)::Animation|Children's|Comedy

Esto significa que el id de la película es 1, y el título es 《Toy Story》, que se divide en tres categorías. Estas tres categorías son animación, infantil y comedia.

users.dat incluye las características del usuario, véase el ejemplo a continuación:

UserID::Gender::Age::Occupation::Zip-code
1::F::1::10::48067

El ID de usuario es 1, mujer y menor de 18 años. El ID de ocupación es 10.

ratings.dat incluye la característica de clasificación de películas, véase el ejemplo siguiente

UserID::MovieID::Rating::Timestamp 1::1193::5::978300760

Es decir, el usuario 1 valora la película 1193 con 5 puntos.

Modelo de recomendación por fusión

En el sistema de recomendación personalizada de películas utilizamos el Modelo de Recomendación por Fusión [3] que PaddlePaddle ha implementado. Este modelo está creado a partir de su práctica industrial.

En primer lugar, toma las características del usuario y las características de la película como entrada a la red neuronal, donde:

  • Las características del usuario incorporan cuatro atributos de información: ID de usuario, género, ocupación y edad.
  • Las características de la película incorporan tres atributos: ID de la película, ID del tipo de película y nombre de la película.

Para la función de usuario, se asigna el ID de usuario a una representación vectorial con una dimensión de 256, se introduce la capa totalmente conectada y se realiza un procesamiento similar para los otros tres atributos. A continuación, las representaciones de los cuatro atributos se conectan completamente y se añaden por separado.

Para las características de la película, el ID de la película se procesa de forma similar al ID de usuario. El ID del tipo de película se introduce directamente en la capa totalmente conectada en forma de vector, y el nombre de la película se representa mediante un vector de longitud fija utilizando una red neuronal convolucional de texto. A continuación, las representaciones de los tres atributos se conectan completamente y se añaden por separado.

Una vez obtenida la representación vectorial del usuario y la película, se calcula la similitud coseno de ambos como puntuación del sistema de recomendación personalizada. Por último, el cuadrado de la diferencia entre la puntuación de similitud y la puntuación real del usuario se utiliza como función de pérdida del modelo de regresión.

1-user-film-personalized-recommender-Milvus.jpg 1-usuario-pelicula-recomendador-personalizado-Milvus.jpg

Visión general del sistema

Combinado con el modelo de recomendación por fusión de PaddlePaddle, el vector de características de la película generado por el modelo se almacena en el motor de búsqueda de similitud vectorial Milvus, y la característica del usuario se utiliza como vector objetivo a buscar. La búsqueda de similitud se realiza en Milvus para obtener el resultado de la consulta como las películas recomendadas para el usuario.

2-system-overview.jpg 2-system-overview.jpg

Milvus utiliza el método del producto interior (PI) para calcular la distancia vectorial. Después de normalizar los datos, la similitud del producto interior es coherente con el resultado de la similitud del coseno en el modelo de recomendación de fusión.

Aplicación del sistema de recomendación personal

Hay tres pasos en la construcción de un sistema de recomendación personalizado con Milvus, los detalles sobre cómo operar por favor refiérase a Mivus Bootcamp [4].

Paso 1:Entrenamiento del modelo

# run train.py
    $ python train.py

Ejecutando este comando se generará un modelo recommender_system.inference.model en el directorio, que puede convertir los datos de la película y los datos del usuario en vectores de características, y generar datos de aplicación para que Milvus los almacene y recupere.

Paso 2:Preprocesamiento de datos

# Data preprocessing, -f followed by the parameter raw movie data file name
    $ python get_movies_data.py -f movies_origin.txt

Al ejecutar este comando se generarán datos de prueba movies_data.txt en el directorio para lograr el preprocesamiento de datos de películas.

Paso 3:Implementación del Sistema de Recomendación Personal con Milvus

# Implementing personal recommender system based on user conditions
    $ python infer_milvus.py -a <age>-g <gender>-j <job>[-i]

Ejecutando este comando se implementarán recomendaciones personalizadas para los usuarios especificados.

El proceso principal es:

  • A través del load_inference_model, los datos de la película son procesados por el modelo para generar un vector de características de la película.
  • Cargar el vector de características de la película en Milvus a través de milvus.insert.
  • De acuerdo con la edad / sexo / ocupación del usuario especificada por los parámetros, se convierte en un vector de características del usuario, milvus.search_vectors se utiliza para la recuperación de similitudes, y se devuelve el resultado con la mayor similitud entre el usuario y la película.

Predicción de las cinco películas que más interesan al usuario:

TopIdsTitleScore
03030Yojimbo2.9444923996925354
13871Shane2.8583481907844543
23467Hud2.849525213241577
31809Hana-bi2.826111316680908
43184Montana2.8119677305221558 

Resumen

Al introducir la información del usuario y la de la película en el modelo de recomendación por fusión, podemos obtener puntuaciones de coincidencia y, a continuación, ordenar las puntuaciones de todas las películas en función del usuario para recomendarle películas que puedan interesarle. Este artículo combina Milvus y PaddlePaddle para construir un sistema de recomendación personalizado. Milvus, un motor de búsqueda vectorial, se utiliza para almacenar todos los datos de las características de las películas y, a continuación, la recuperación de similitudes se realiza sobre las características del usuario en Milvus. El resultado de la búsqueda es la clasificación de películas recomendada por el sistema al usuario.

El motor de búsqueda de similitud vectorial Milvus [5] es compatible con varias plataformas de aprendizaje profundo, y busca miles de millones de vectores con una respuesta de tan solo milisegundos. Puede explorar más posibilidades de aplicaciones de IA con Milvus con facilidad.

Referencia

  1. MovieLens Million Dataset (ml-1m): http://files.grouplens.org/datasets/movielens/ml-1m.zip
  2. ml-1m-README: http://files.grouplens.org/datasets/movielens/ml-1m-README.txt
  3. Modelo de Recomendación de Fusión por PaddlePaddle: https://www.paddlepaddle.org.cn/documentation/docs/zh/beginners_guide/basics/recommender_system/index.html#id7
  4. Bootcamp: https://github.com/milvus-io/bootcamp/tree/master/solutions/recommendation_system
  5. Milvus: https://milvus.io/

Like the article? Spread the word

Sigue Leyendo