Padroneggiare i motori di raccomandazione con la Collaborative Filtering neurale

Esplorando le potenzialità del Collaborative Filtering neurale per dominare i motori di raccomandazione

Questo articolo è la tua guida per creare un motore di raccomandazione con Collaborative Filtering Neurale (NCF). Partendo da una breve introduzione ai motori di raccomandazione, attraverseremo i loro diversi tipi, concentrandoci principalmente sul collaborative filtering basato sui modelli, arrivando fino al funzionamento dei motori di raccomandazione neurali. E per rendere il tutto ancora più interessante, concluderemo con un succoso esempio reale. Siete pronti? Questo sarà un viaggio un po’ interessante.

Disclaimer Questo articolo presume che il lettore sia familiare con i motori di raccomandazione e il collaborative filtering.

INDICE —

  1. Cosa sono i motori di raccomandazione e i loro tipi?
  2. Collaborative Filtering basato sui modelli e NCF
  3. L’algoritmo di lavoro dei modelli NCF puri
  4. Creare un motore di raccomandazione con NCF
  5. Conclusion

1. Cosa sono i motori di raccomandazione e i loro tipi?

I motori di raccomandazione, anche chiamati sistemi di raccomandazione, non sono altro che motori o algoritmi che ci servono contenuti che molto probabilmente guarderemo, compreremo e consumeremo, ecc. Questi sistemi hanno un’importanza significativa su diverse piattaforme online, che spaziano dai siti di e-commerce ai servizi di streaming, passando per i social media e le piattaforme di contenuti. Il loro obiettivo principale è analizzare le preferenze e i comportamenti dell’utente per offrire raccomandazioni personalizzate, migliorando così l’interazione e la soddisfazione dell’utente. L’esempio più comune di questo sono i servizi di streaming online come Netflix, Amazon Prime, ecc., dove spesso ci vengono presentate raccomandazioni di contenuti sulla home page che dicono “Potrebbe piacerti anche…”.

Tipi di motori di raccomandazione:

  • Filtraggio basato sui contenuti
  • Collaborative Filtering
  • Modelli ibridi

Diamo loro un’occhiata veloce —

Il filtraggio basato sui contenuti analizza le caratteristiche e le proprietà degli oggetti con cui gli utenti hanno interagito o cercato in precedenza. Concentrandosi sugli attributi degli oggetti, questi sistemi raccomandano oggetti con proprietà simili. Questo è principalmente utilizzato quando la base degli utenti è ridotta e ci sono più prodotti da servire, ovvero un problema di “avvio a freddo”.

Il Collaborative Filtering (CF) raccomanda oggetti esaminando le preferenze e i comportamenti di un gruppo di utenti. Questo può essere basato sull’utente o sull’oggetto. CF basato sull’utente identifica utenti simili e suggerisce oggetti piaciuti a quegli utenti simili, mentre CF basato sull’oggetto suggerisce oggetti simili a quelli che l’utente ha precedentemente apprezzato.

I motori di raccomandazione ibridi seguono tecniche di ensemble, combinando spesso aspetti sia del filtraggio basato sui contenuti che del collaborative filtering. Integrando diversi approcci, questi modelli mirano a superare le limitazioni individuali, fornendo raccomandazioni più accurate e diverse.

Ora i motori di raccomandazione basati su Collaborative Filtering possono anche essere ulteriormente categorizzati come basati sulla memoria e basati sui modelli.

La differenza principale tra questi due metodi sta nel modo in cui determinano le valutazioni date dagli utenti agli oggetti.

  1. CF basato sulla memoria utilizza un approccio tradizionale, misurando la similarità tra utente/oggetto utilizzando metodi di correlazione (ad esempio la correlazione di Pearson) e quindi facendo una media pesata delle valutazioni per generare una valutazione per un oggetto da parte dell’utente.
  2. CF basato sui modelli utilizza l’apprendimento automatico o modelli statistici per apprendere modelli e relazioni nei dati, che vengono poi utilizzati per determinare le valutazioni degli utenti per gli oggetti.

Indipendentemente da quanto siano interessanti entrambi questi metodi, approfondiremo il Collaborative Filtering basato sui Modelli in questo articolo per giustificarne il titolo!

2. Collaborative Filtering basato sui Modelli e NCF

Il Collaborative Filtering basato sui Modelli, in breve, prevede la creazione di un modello a partire dalle interazioni utente-oggetto per fare previsioni. Utilizza l’apprendimento automatico o modelli statistici per apprendere modelli e relazioni nei dati. Approfondiamo i dettagli di questo approccio.

La CF basata sui modelli tende a creare matrici utente-caratteristica e oggetto-caratteristica, che vengono inizializzate casualmente, puntate e pesate per generare i punteggi di interazione utente-oggetto. Ciò può essere visualizzato nell’immagine qui sotto

Come si può vedere, le matrici U e V sono matrici utente-caratteristica e oggetto-caratteristica. Queste sono inizializzate casualmente.

  • La matrice di interazione utente-oggetto (R) è solitamente sparsa poiché la maggior parte degli oggetti non viene valutata dagli utenti.
  • Le matrici U e V vengono puntate per generare i valori previsti per la matrice di interazione utente-oggetto. Questi saranno dei valori casuali derivanti dal prodotto scalare di due matrici casuali (U e V). Chiamiamo questa matrice con valori casuali R`.
  • Come utilizziamo algoritmi di ottimizzazione, ad esempio la discesa del gradiente, nell’ML tradizionale per aggiornare i valori di w e b al fine di minimizzare la perdita tra l’output effettivo e quello previsto, qui viene seguito un approccio simile per aggiornare i valori all’interno delle matrici U e V al fine di minimizzare la differenza tra R e R` tramite la discesa del gradiente.

La discesa del gradiente regola questi pesi casuali ai loro valori più ottimali che minimizzano la differenza tra le valutazioni previste e le valutazioni effettive.

Il modello impara ad assegnare pesi alle caratteristiche latenti nelle matrici U e V. Questi pesi catturano i modelli e le preferenze nei dati di interazione utente-oggetto. I pesi vengono ottimizzati fino a che il modello converge. Le matrici apprese U e V vengono quindi utilizzate per prevedere le voci mancanti nella matrice originale e fare raccomandazioni personalizzate per gli utenti.

Possiamo anche utilizzare livelli di embedding per le caratteristiche utente e oggetto, che possono essere appresi durante l’addestramento del modello tramite la discesa del gradiente.

Questo metodo di scomposizione della matrice di interazione utente-oggetto sparsa in due matrici di rango inferiore (U e V) è chiamato Fattorizzazione della Matrice. Ci sono diversi altri tipi di metodi CF basati sui modelli come —

  • Decomposizione a Valori Singolari (SVD)
  • Fattorizzazione Matriciale Probabilistica (PMF)
  • Fattorizzazione Matriciale Non Negativa (NMF)
  • Macchine di Fattorizzazione
  • Filtraggio Collaborativo Neurale (NCF)
  • Modelli di Deep Learning per le Raccomandazioni — RNN, CNN, Transformer, ecc.

L’essenza di tutti questi metodi CF basati sui modelli è quella di apprendere i modelli di caratteristiche latenti delle interazioni utente-oggetto. Alcuni di questi metodi possono captare solo modelli lineari come la Fattorizzazione della Matrice, SVD, ecc., mentre altri possono catturare non linearità. E uno di questi metodi è NCF!

Filtraggio Collaborativo Neurale

Il Filtraggio Collaborativo Neurale (NCF) sfrutta la potenza espressiva delle reti neurali per modellare relazioni complesse e non lineari nelle interazioni utente-oggetto. Mentre i metodi tradizionali di filtraggio collaborativo catturano modelli lineari, NCF può utilizzare attivazioni come ReLU per catturare non linearità. Incorporando reti neurali nel livello di filtraggio collaborativo, si trasforma efficacemente il problema delle raccomandazioni in un compito di apprendimento automatico mediante l’uso di architetture neurali, tipicamente coinvolgendo Multi-Layer Perceptrons (MLP) o reti neurali profonde.

Andiamo a vedere come sono costruiti i modelli NCF

Algoritmo di funzionamento dei modelli NCF puri

Nella costruzione di modelli tradizionali di filtraggio collaborativo come la Fattorizzazione della Matrice (MF), solitamente partiamo da una matrice sparsa di interazione utente-oggetto, quindi creiamo matrici separate di caratteristiche latenti utente e oggetto U e V, che vengono inizializzate casualmente o create con embedding. Successivamente queste matrici di caratteristiche vengono puntate per generare la matrice R`, che viene quindi utilizzata per aggiornare i valori all’interno delle matrici U e V. NCF incorpora la struttura dei modelli MF e la combina con le reti neurali.

Un modello NCF tipico utilizza gli embedding. L’architettura può essere suddivisa in 3 livelli—

  1. Livello di Fattorizzazione della Matrice (MF) — genera l’output puntato per gli embedding degli utenti e degli oggetti — R`. La matrice R` cattura le interazioni lineari tra gli utenti e gli oggetti.
  2. Livello di Rete Neurale (NN) — genera l’output concatenato degli embedding degli utenti e degli oggetti passato attraverso un MLP. Il livello MLP viene utilizzato per catturare le interazioni non lineari tra gli utenti e gli oggetti.
  3. Livello di output NCF — combina l’output dei livelli MF e NN per generare l’output finale. L’output R` del livello MF viene concatenato con l’output del livello NN. Questo vettore concatenato passa attraverso un livello denso, che genera l’output finale per il modello.
Architettura del Modello NCF

L’unico scopo di incorporare un MLP per l’addestramento è catturare le interazioni non lineari tra le caratteristiche latenti degli utenti e degli elementi.

I modelli possono essere modificati per diverse incorporazioni come la normalizzazione dei batch, livelli di dropout, ottimizzatori come Adam, ecc.

Diamo un’occhiata a un problema pratico per sperimentare un po’.

4. Creazione di un Recommendation Engine con NCF

4.1 Problema

Prenderemo il solito set di problemi di raccomandazione di film, ma avvicinandolo utilizzando NCF invece dei modelli CF tradizionali. È possibile trovare un problema correlato su siti web come Kaggle, il repository di apprendimento automatico UCI, ecc.

4.2 Dataset

Il dataset, dopo il filtraggio e il preprocessing, appare così —

Abbiamo l’ID utente, l’ID del film e le valutazioni date dagli utenti ai film. I metodi di filtraggio collaborativo richiedono solo interazioni tra utente e elemento, poiché apprendono i modelli di queste interazioni indipendentemente da altre caratteristiche dell’utente e dell’elemento. Pertanto, tutto ciò di cui abbiamo bisogno per un modello CF o un modello derivato da CF (come NCF), sono le interazioni tra utente e elemento e nient’altro.

4.3 Matrice di interazione utente-film

La matrice di interazione utente-film indica le valutazioni date dagli utenti ai film. Si tratta di una matrice sparsa poiché gli utenti non hanno visto tutti i film

4.4 Preparazione dei dati per la modellazione

Poiché una rete neurale accetta solo input numerici, abbiamo creato indici per ID utente e ID film. Ciò aiuterà se abbiamo ID utente e ID film in formato categorico o in un altro formato diverso da un numero intero. Successivamente, suddividiamo i dati in una suddivisione casuale dell’80-20 e generiamo i set di addestramento e di validazione.

4.5 Architettura del Modello

Analizzeremo l’architettura del modello passo dopo passo —

  1. Definire gli iperparametri come epoche, dimensione batch, tasso di apprendimento e dimensione dell’incorporamento.
  2. Definire il livello di input del modello utilizzando i livelli di Keras.Input
  3. Definire il livello MF con incorporamenti utente e film. Appiattire gli incorporamenti e prendere il prodotto punto per generare un punteggio di similarità (architettura MF tradizionale).
  4. Definire il livello NN con incorporamenti utente e film, appiattire e concatenare gli incorporamenti e passarli come input attraverso un Multi-Layer Perceptron (MLP) per generare l’output. Aggiungere e modificare modifiche come il numero di neuroni, la normalizzazione dei batch e i livelli di dropout.
  5. Definire il livello NCF concatenando l’output dei livelli MF e NN. Passare il vettore concatenato attraverso un livello Dense con un singolo neurone per generare l’output per l’intero modello.
  6. Costruire e compilare il modello con la perdita ‘MSE’ e l’ottimizzatore a scelta.

4.6 Addestramento e Valutazione del Modello

Addestrare il modello al numero desiderato di epoche e dimensione del batch. Provare con diverse combinazioni di epoche e dimensione del batch per ottenere i migliori risultati.

4.7 Fare previsioni

Dopo il successo dell’addestramento e della valutazione del modello, effettua previsioni sull’intero set di dati per ottenere le valutazioni per i film non valutati.

5. Conclusioni

Imbarcarsi nel viaggio dei motori di raccomandazione rivela un mondo in cui la tecnologia ci comprende meglio di quanto facciamo noi stessi. La Collaborative Filtering Neurale (NCF) non è solo un algoritmo; è un mago che crea percorsi su misura per ogni utente. Grazie all’abilità di NCF, le raccomandazioni non sono solo suggerimenti, ma inviti personalizzati a scoprire nuove passioni ed esperienze. Mentre ci congediamo, abbracciamo l’emozione della tecnologia in evoluzione, sapendo che ogni raccomandazione è una piccola scintilla che accende gioia nelle nostre avventure digitali.

Guarda anche questi —

La potenza delle previsioni di probabilità di clic

CPP, il motore che alimenta gli algoritmi dietro i moderni sistemi di raccomandazione, gli inserzionisti online e molto altro. Questo…

VoAGI.com

Tutto in uno per la regressione logistica

pub.towardsai.net

Un’unica soluzione per le macchine a vettori di supporto

Vettori di supporto? Macchina? E perché non è morto Oswald Mosely?

VoAGI.com