Introduzione di fondo
Introduzione di fondo
Con il continuo sviluppo della tecnologia di rete e la continua espansione del commercio elettronico, il numero e la varietà dei prodotti crescono rapidamente e gli utenti devono spendere molto tempo per trovare i prodotti che desiderano acquistare. Si tratta di un sovraccarico di informazioni. Per risolvere questo problema, sono nati i sistemi di raccomandazione.
Il sistema di raccomandazione è un sottoinsieme del sistema di filtraggio delle informazioni, che può essere utilizzato in una serie di settori come i film, la musica, il commercio elettronico e le raccomandazioni di flussi di feed. Il sistema di raccomandazione scopre le esigenze e gli interessi personalizzati dell'utente analizzando e analizzando i suoi comportamenti e raccomanda informazioni o prodotti che possono essere di suo interesse. A differenza dei motori di ricerca, i sistemi di raccomandazione non richiedono agli utenti di descrivere accuratamente le loro esigenze, ma modellano il loro comportamento storico per fornire in modo proattivo le informazioni che soddisfano gli interessi e le esigenze dell'utente.
In questo articolo utilizziamo PaddlePaddle, una piattaforma di deep learning di Baidu, per costruire un modello e combiniamo Milvus, un motore di ricerca a similarità vettoriale, per costruire un sistema di raccomandazione personalizzato in grado di fornire agli utenti informazioni interessanti in modo rapido e accurato.
Preparazione dei dati
Prendiamo come esempio MovieLens Million Dataset (ml-1m) [1]. Il dataset ml-1m contiene 1.000.000 di recensioni di 4.000 film da parte di 6.000 utenti, raccolte dal laboratorio di ricerca GroupLens. I dati originali includono le caratteristiche del film, le caratteristiche dell'utente e la valutazione del film da parte dell'utente; si può fare riferimento a ml-1m-README [2] .
Il dataset ml-1m include 3 articoli .dat: movies.dat、users.dat e ratings.dat.movies.dat include le caratteristiche del film, vedi esempio sotto:
MovieID::Title::Genres
1::ToyStory(1995)::Animation|Children's|Comedy
Questo significa che l'id del film è 1 e il titolo è 《Toy Story》, che è diviso in tre categorie. Queste tre categorie sono animazione, bambini e commedia.
users.dat include le caratteristiche dell'utente, vedi esempio sotto:
UserID::Gender::Age::Occupation::Zip-code
1::F::1::10::48067
Questo significa che l'ID utente è 1, di sesso femminile e di età inferiore ai 18 anni. L'ID dell'occupazione è 10.
ratings.dat include le caratteristiche della valutazione dei film, vedi l'esempio seguente:
UserID::MovieID::Rating::Timestamp 1::1193::5::978300760
Cioè, l'utente 1 valuta il film 1193 con 5 punti.
Modello di raccomandazione a fusione
Nel sistema di raccomandazione personalizzata dei film abbiamo utilizzato il Fusion Recommendation Model [3] che PaddlePaddle ha implementato. Questo modello è stato creato dalla sua pratica industriale.
In primo luogo, si considerano le caratteristiche dell'utente e le caratteristiche del film come input della rete neurale:
- Le caratteristiche dell'utente incorporano quattro informazioni di attributo: ID utente, sesso, occupazione ed età.
- Le caratteristiche del film incorporano tre informazioni: ID del film, ID del tipo di film e nome del film.
Per la caratteristica utente, si mappa l'ID utente in una rappresentazione vettoriale con una dimensione di 256, si inserisce lo strato completamente connesso e si esegue un'elaborazione simile per gli altri tre attributi. Quindi le rappresentazioni delle feature dei quattro attributi vengono connesse completamente e aggiunte separatamente.
Per le caratteristiche dei film, l'ID del film viene elaborato in modo simile all'ID dell'utente. L'ID del tipo di film viene immesso direttamente nello strato fully connected sotto forma di vettore, mentre il nome del film viene rappresentato da un vettore a lunghezza fissa utilizzando una rete neurale convoluzionale testuale. Le rappresentazioni delle caratteristiche dei tre attributi vengono poi connesse completamente e aggiunte separatamente.
Dopo aver ottenuto la rappresentazione vettoriale dell'utente e del film, si calcola la somiglianza del coseno tra loro come punteggio del sistema di raccomandazione personalizzata. Infine, il quadrato della differenza tra il punteggio di somiglianza e il punteggio reale dell'utente viene utilizzato come funzione di perdita del modello di regressione.
1-utente-film-personalizzato-raccomandante-Milvus.jpg
Panoramica del sistema
In combinazione con il modello di raccomandazione a fusione di PaddlePaddle, il vettore di caratteristiche del film generato dal modello viene memorizzato nel motore di ricerca di similarità vettoriale Milvus e la caratteristica dell'utente viene utilizzata come vettore di destinazione da ricercare. La ricerca di similarità viene eseguita in Milvus per ottenere il risultato della query come film raccomandato per l'utente.
2-sistema-overview.jpg
Il metodo del prodotto interno (IP) è fornito in Milvus per calcolare la distanza tra i vettori. Dopo aver normalizzato i dati, la somiglianza del prodotto interno è coerente con il risultato della somiglianza del coseno nel modello di raccomandazione di fusione.
Applicazione del sistema di raccomandazione personale
La costruzione di un sistema di raccomandazione personalizzato con Milvus si articola in tre fasi; per i dettagli sul funzionamento si rimanda al Mivus Bootcamp [4].
Fase 1: Formazione del modello
# run train.py
$ python train.py
L'esecuzione di questo comando genera un modello recommender_system.inference.model nella directory, che può convertire i dati del film e i dati dell'utente in vettori di caratteristiche e generare dati applicativi che Milvus può memorizzare e recuperare.
Passo 2: Preelaborazione dei dati
# Data preprocessing, -f followed by the parameter raw movie data file name
$ python get_movies_data.py -f movies_origin.txt
L'esecuzione di questo comando genera i dati di prova movies_data.txt nella directory per ottenere la pre-elaborazione dei dati dei filmati.
Passo 3: Implementazione del sistema di raccomandazione personale con Milvus
# Implementing personal recommender system based on user conditions
$ python infer_milvus.py -a <age>-g <gender>-j <job>[-i]
L'esecuzione di questo comando implementa raccomandazioni personalizzate per gli utenti specificati.
Il processo principale è:
- Attraverso il load_inference_model, i dati dei film vengono elaborati dal modello per generare un vettore di caratteristiche dei film.
- Caricare il vettore di caratteristiche dei film in Milvus tramite milvus.insert.
- In base all'età / al sesso / all'occupazione dell'utente specificati dai parametri, viene convertito in un vettore di caratteristiche dell'utente, milvus.search_vectors viene utilizzato per il recupero della somiglianza e viene restituito il risultato con la maggiore somiglianza tra l'utente e il film.
Previsione dei primi cinque film a cui l'utente è interessato:
TopIdsTitleScore
03030Yojimbo2.9444923996925354
13871Shane2.8583481907844543
23467Hud2.849525213241577
31809Hana-bi2.826111316680908
43184Montana2.8119677305221558
Sintesi
Inserendo le informazioni dell'utente e quelle del film nel modello di raccomandazione fusion è possibile ottenere punteggi di corrispondenza e quindi ordinare i punteggi di tutti i film in base all'utente per raccomandare i film che potrebbero essere di interesse per l'utente. Questo articolo combina Milvus e PaddlePaddle per costruire un sistema di raccomandazione personalizzato. Milvus, un motore di ricerca vettoriale, viene utilizzato per memorizzare tutti i dati relativi alle caratteristiche dei film, quindi il recupero della somiglianza viene eseguito sulle caratteristiche dell'utente in Milvus. Il risultato della ricerca è la classifica dei film raccomandati dal sistema all'utente.
Il motore di ricerca per similarità vettoriale di Milvus [5] è compatibile con diverse piattaforme di deep learning e cerca miliardi di vettori con una risposta di soli millisecondi. Con Milvus è possibile esplorare facilmente altre possibilità di applicazioni AI!
Riferimento
- MovieLens Million Dataset (ml-1m): http://files.grouplens.org/datasets/movielens/ml-1m.zip
- ml-1m-README: http://files.grouplens.org/datasets/movielens/ml-1m-README.txt
- Modello di raccomandazione a fusione di PaddlePaddle: https://www.paddlepaddle.org.cn/documentation/docs/zh/beginners_guide/basics/recommender_system/index.html#id7
- Bootcamp: https://github.com/milvus-io/bootcamp/tree/master/solutions/recommendation_system
- Milvus: https://milvus.io/
- Preparazione dei dati
- Modello di raccomandazione a fusione
- Panoramica del sistema
- Applicazione del sistema di raccomandazione personale
- Sintesi
- Riferimento
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word