🚀 Experimente o Zilliz Cloud, o Milvus totalmente gerenciado, gratuitamente—experimente um desempenho 10x mais rápido! Experimente Agora>>

milvus-logo
LFAI

Introdução

  • Scenarios
February 24, 2021
Shiyu Chen

Introdução

Com o desenvolvimento contínuo da tecnologia de rede e a escala cada vez maior do comércio eletrónico, o número e a variedade de produtos crescem rapidamente e os utilizadores precisam de gastar muito tempo para encontrar os produtos que querem comprar. Trata-se de uma sobrecarga de informação. Para resolver este problema, surgiu o sistema de recomendação.

O sistema de recomendação é um subconjunto do sistema de filtragem de informação, que pode ser utilizado numa série de áreas, tais como filmes, música, comércio eletrónico e recomendações de fluxos de alimentação. O sistema de recomendação descobre as necessidades e interesses personalizados do utilizador, analisando e explorando os comportamentos do utilizador, e recomenda informações ou produtos que possam ser do interesse do utilizador. Ao contrário dos motores de busca, os sistemas de recomendação não exigem que os utilizadores descrevam com precisão as suas necessidades, mas modelam o seu comportamento histórico para fornecer proactivamente informações que vão ao encontro dos interesses e necessidades do utilizador.

Neste artigo, utilizamos o PaddlePaddle, uma plataforma de aprendizagem profunda da Baidu, para construir um modelo e combinamos o Milvus, um motor de pesquisa de semelhança de vectores, para construir um sistema de recomendação personalizado que pode fornecer aos utilizadores informações interessantes de forma rápida e precisa.

Preparação de dados

Tomamos o MovieLens Million Dataset (ml-1m) [1] como exemplo. O conjunto de dados ml-1m contém 1.000.000 de críticas de 4.000 filmes feitas por 6.000 utilizadores, recolhidas pelo laboratório de investigação GroupLens. Os dados originais incluem dados de caraterísticas do filme, caraterísticas do utilizador e classificação do filme pelo utilizador, pode consultar o ml-1m-README [2] .

O conjunto de dados ml-1m inclui 3 artigos .dat: movies.dat、users.dat e ratings.dat.movies.dat inclui as caraterísticas do filme, ver exemplo abaixo:

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

Isso significa que o id do filme é 1, e o título é 《Toy Story》, que é dividido em três categorias. Estas três categorias são animação, infantil e comédia.

O ficheiro users.dat inclui as caraterísticas do utilizador, ver exemplo abaixo:

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

Isto significa que o ID do utilizador é 1, do sexo feminino e com menos de 18 anos de idade. O ID da ocupação é 10.

ratings.dat inclui a caraterística de classificação do filme, ver exemplo abaixo:

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

Ou seja, o utilizador 1 avalia o filme 1193 com 5 pontos.

Modelo de recomendação por fusão

No sistema de recomendação personalizada de filmes utilizámos o Modelo de Recomendação de Fusão [3] que a PaddlePaddle implementou. Este modelo foi criado a partir da sua prática industrial.

Primeiro, as caraterísticas do utilizador e as caraterísticas do filme são introduzidas na rede neural:

  • As caraterísticas do utilizador incorporam quatro informações de atributos: ID do utilizador, sexo, profissão e idade.
  • As caraterísticas do filme incluem três atributos de informação: ID do filme, ID do tipo de filme e nome do filme.

Para a caraterística do utilizador, mapear o ID do utilizador para uma representação vetorial com uma dimensão de 256, entrar na camada totalmente ligada e fazer um processamento semelhante para os outros três atributos. Em seguida, as representações das caraterísticas dos quatro atributos são totalmente ligadas e adicionadas separadamente.

Para as caraterísticas do filme, a identificação do filme é processada de forma semelhante à identificação do utilizador. A identificação do tipo de filme é introduzida diretamente na camada totalmente ligada sob a forma de um vetor, e o nome do filme é representado por um vetor de comprimento fixo utilizando uma rede neural convolucional de texto. As representações das caraterísticas dos três atributos são então totalmente ligadas e adicionadas separadamente.

Depois de obter a representação vetorial do utilizador e do filme, calcula-se a semelhança cosseno dos mesmos como a pontuação do sistema de recomendação personalizado. Finalmente, o quadrado da diferença entre a pontuação de semelhança e a pontuação real do utilizador é utilizado como a função de perda do modelo de regressão.

1-user-film-personalized-recommender-Milvus.jpg 1-user-film-personalized-recommender-Milvus.jpg

Visão geral do sistema

Combinado com o modelo de recomendação de fusão da PaddlePaddle, o vetor de caraterísticas do filme gerado pelo modelo é armazenado no motor de pesquisa de semelhanças de vectores Milvus e a caraterística do utilizador é utilizada como o vetor alvo a pesquisar. A pesquisa por semelhança é efectuada no Milvus para obter o resultado da consulta como os filmes recomendados para o utilizador.

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

O método do produto interno (IP) é fornecido no Milvus para calcular a distância do vetor. Depois de normalizar os dados, a semelhança do produto interno é consistente com o resultado da semelhança de cosseno no modelo de recomendação de fusão.

Aplicação do sistema de recomendação pessoal

Existem três passos para construir um sistema de recomendação personalizado com Milvus, detalhes sobre como operar por favor consulte o Mivus Bootcamp [4].

Passo 1:Treino do modelo

# run train.py
    $ python train.py

A execução deste comando irá gerar um modelo recommender_system.inference.model no diretório, que pode converter dados de filme e dados de usuário em vetores de recursos e gerar dados de aplicativo para Milvus armazenar e recuperar.

Passo 2: Pré-processamento de dados

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

A execução deste comando irá gerar dados de teste movies_data.txt no diretório para obter o pré-processamento dos dados do filme.

Passo 3:Implementação do sistema de recomendação pessoal com Milvus

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

A execução deste comando irá implementar recomendações personalizadas para utilizadores especificados.

O processo principal é:

  • Através do load_inference_model, os dados do filme são processados pelo modelo para gerar um vetor de caraterísticas do filme.
  • Carregar o vetor de caraterísticas do filme no Milvus através de milvus.insert.
  • De acordo com a idade / sexo / profissão do utilizador especificados pelos parâmetros, é convertido num vetor de caraterísticas do utilizador, milvus.search_vectors é utilizado para a recuperação de semelhanças e o resultado com a maior semelhança entre o utilizador e o filme é devolvido.

Previsão dos cinco filmes principais em que o utilizador está interessado:

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

Resumo

Ao introduzir as informações do utilizador e as informações do filme no modelo de recomendação de fusão, podemos obter pontuações correspondentes e, em seguida, ordenar as pontuações de todos os filmes com base no utilizador para recomendar filmes que possam ser do interesse do utilizador. Este artigo combina o Milvus e o PaddlePaddle para criar um sistema de recomendação personalizado. O Milvus, um motor de pesquisa vetorial, é utilizado para armazenar todos os dados das caraterísticas dos filmes e, em seguida, é efectuada uma recuperação por semelhança das caraterísticas do utilizador no Milvus. O resultado da pesquisa é a classificação dos filmes recomendados pelo sistema ao utilizador.

O motor de pesquisa de semelhanças vectoriais Milvus [5] é compatível com várias plataformas de aprendizagem profunda, pesquisando milhares de milhões de vectores com uma resposta de apenas milissegundos. Pode explorar mais possibilidades de aplicações de IA com o Milvus com facilidade!

Referência

  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 recomendação de fusão 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

Continue Lendo