Train Wide & Deep Recommender

Questo articolo descrive come usare il componente Train Wide & Deep Recommender nella finestra di progettazione di Azure Machine Learning per eseguire il training di un modello di raccomandazione. Questo componente si basa su Wide & Deep Learning, proposto da Google.

Il componente Train Wide & Deep Recommender legge un set di dati di triple di valutazione degli elementi utente e, facoltativamente, alcune funzionalità utente ed elemento. Restituisce un consigliatore Wide & Deep sottoposto a training. È quindi possibile usare il modello sottoposto a training per generare stime di valutazione o raccomandazioni usando il componente Score Wide e Deep Recommender .

Altre informazioni sui modelli di raccomandazione e sul consigliatore Wide & Deep

L'obiettivo principale di un sistema di raccomandazione è consigliare uno o più elementi agli utenti del sistema. Esempi di un elemento possono essere un film, un ristorante, un libro o una canzone. Un utente può essere una persona, un gruppo di persone o un'altra entità con preferenze di elemento.

Esistono due approcci principali per i sistemi di raccomandazione.

  • Il primo è l'approccio basato sul contenuto, che usa funzionalità sia per gli utenti che per gli elementi. Gli utenti possono essere descritti da proprietà come età e sesso e gli elementi possono essere descritti da proprietà come autore e produttore. Esempi tipici di sistemi di raccomandazione basati sul contenuto sono disponibili nei siti di social matchmaking.
  • Il secondo approccio è il filtro collaborativo, che usa solo gli identificatori degli utenti e gli elementi e ottiene informazioni implicite su queste entità da una matrice di valutazioni (sparse) date dagli utenti agli elementi. È possibile ottenere informazioni su un utente dagli elementi che hanno valutato e da altri utenti che hanno valutato gli stessi elementi.

Wide & Deep recommender combina questi approcci, usando filtri collaborativi con un approccio basato sul contenuto. È quindi considerato un consigliatore ibrido.

Come funziona: quando un utente è relativamente nuovo del sistema, le stime vengono migliorate usando le informazioni sulle funzionalità relative all'utente, risolvendo così il noto problema di "avvio a freddo". Tuttavia, dopo aver raccolto un numero sufficiente di valutazioni da un determinato utente, è possibile effettuare stime completamente personalizzate per loro in base alle valutazioni specifiche anziché solo alle relative funzionalità. Di conseguenza, esiste una transizione uniforme da raccomandazioni basate sul contenuto a raccomandazioni basate su filtri collaborativi. Anche se le funzionalità degli utenti o degli elementi non sono disponibili, Wide & Deep recommender funzionerà comunque nella modalità di filtro collaborativo.

Altri dettagli sul consigliatore Wide & Deep e sull'algoritmo probabilistico sottostante sono disponibili nel documento di ricerca pertinente: Wide & Deep Learning for Recommender Systems.More details on the Wide & Deep recommender recommender algorithm can be found in the relevant research paper: Wide & Deep Learning for Recommender Systems.

Come configurare Train Wide & Deep Recommender

Preparazione dei dati

Prima di provare a usare il componente, assicurarsi che i dati siano nel formato previsto per il modello di raccomandazione. È necessario un set di dati di training di triple di classificazione degli elementi utente, ma è anche possibile includere funzionalità utente e funzionalità degli elementi (se disponibili) in set di dati separati.

Set di dati richiesto di valutazioni degli elementi utente

I dati di input usati per il training devono contenere il tipo corretto di dati nel formato corretto:

  • La prima colonna deve contenere identificatori utente.
  • La seconda colonna deve contenere identificatori di elemento.
  • La terza colonna contiene la classificazione per la coppia di elementi utente. I valori di classificazione devono essere di tipo numerico.

Ad esempio, un set tipico di valutazioni degli elementi utente potrebbe essere simile al seguente:

ID utente MovieId Valutazione
1 68646 10
223 31381 10

Set di dati delle funzionalità utente (facoltativo)

Il set di dati delle funzionalità utente deve contenere identificatori per gli utenti e usare gli stessi identificatori forniti nella prima colonna del set di dati users-items-ratings. Le colonne rimanenti possono contenere un numero qualsiasi di funzionalità che descrivono gli utenti.

Per un esempio, un set tipico di funzionalità utente potrebbe essere simile al seguente:

ID utente Età Genere Interesse Ufficio
1 25 male Drammatico Europa
223 40 female Romanzo Asia

Set di dati delle funzionalità degli elementi (facoltativo)

Il set di dati delle funzionalità dell'elemento deve contenere identificatori di elemento nella prima colonna. Le colonne rimanenti possono contenere un numero qualsiasi di caratteristiche descrittive per gli elementi.

Per un esempio, un set tipico di funzionalità degli elementi potrebbe essere simile al seguente:

MovieId Title Lingua originale Generi Anno
68646 Il padrino italiano Drammatico 1972
31381 Gone with the Wind italiano Cronologia 1939

Eseguire il training del modello

  1. Aggiungere il componente Train Wide and Deep Recommender all'esperimento nella finestra di progettazione e connetterlo al set di dati di training.

  2. Se si dispone di un set di dati separato di funzionalità utente e/o funzionalità degli elementi, connetterle al componente Train Wide e Deep Recommender .

    • Set di dati delle funzionalità utente: connettere il set di dati che descrive gli utenti al secondo input.
    • Set di dati delle funzionalità degli elementi: connettere il set di dati che descrive gli elementi al terzo input.
  3. Periodi: indica quante volte l'algoritmo deve elaborare l'intero dati di training.

    Più alto è questo numero, più adeguato l'addestramento; Tuttavia, il training costa più tempo e può causare l'overfitting.

  4. Dimensioni batch: digitare il numero di esempi di training usati in un unico passaggio di training.

    Questo iperparametro può influenzare la velocità di training. Una dimensione batch più elevata comporta un periodo di costo inferiore, ma può aumentare il tempo di convergenza. Se il batch è troppo grande per adattarsi a GPU/CPU, potrebbe essere generato un errore di memoria.

  5. Ottimizzazione parti estesa: selezionare un ottimizzatore per applicare sfumature alla parte estesa del modello.

  6. Frequenza di apprendimento di Optimizer wide: immettere un numero compreso tra 0,0 e 2,0 che definisce la frequenza di apprendimento dell'ottimizzatore di parti wide.

    Questo iperparametro determina le dimensioni del passaggio in ogni passaggio di training mentre si sposta verso una funzione minima di perdita. Una frequenza di apprendimento elevata può causare un salto di apprendimento oltre i minimi, mentre un tasso di apprendimento troppo ridotto può causare problemi di convergenza.

  7. Dimensione di funzionalità incrociata: digitare la dimensione immettendo gli ID utente e le funzionalità ID elemento desiderati.

    L'utilità di raccomandazione Wide & Deep esegue la trasformazione tra prodotti rispetto alle funzionalità ID utente e ID elemento per impostazione predefinita. Il risultato incrociato verrà sottoposto a hashing in base a questo numero per garantire la dimensione.

  8. Utilità di ottimizzazione completa delle parti: selezionare un ottimizzatore per applicare sfumature alla parte profonda del modello.

  9. Frequenza di apprendimento avanzato di Optimizer: immettere un numero compreso tra 0,0 e 2,0 che definisce la velocità di apprendimento dell'ottimizzatore in parte profonda.

  10. Dimensione di incorporamento utente: digitare un numero intero per specificare la dimensione dell'incorporamento dell'ID utente.

    Lo strumento di raccomandazione Wide & Deep crea gli incorporamenti di ID utente condiviso e id elemento per parti ampie e profonde.

  11. Dimensione di incorporamento dell'elemento: digitare un numero intero per specificare la dimensione dell'incorporamento dell'ID elemento.

  12. Dimensione di incorporamento delle caratteristiche categoriche: immettere un numero intero per specificare le dimensioni degli incorporamenti di funzionalità categoriche.

    In deep component of Wide & Deep recommender, un vettore di incorporamento viene appreso per ogni funzionalità categorica. E questi vettori di incorporamento condividono la stessa dimensione.

  13. Unità nascoste: digitare il numero di nodi nascosti del componente profondo. Il numero di nodi in ogni livello è separato da virgole. Ad esempio, per tipo "1000.500.100", si specifica che il componente profondo ha tre livelli, con il primo livello all'ultimo rispettivamente ha 1000 nodi, 500 nodi e 100 nodi.

  14. Funzione di attivazione: selezionare una funzione di attivazione applicata a ogni livello, l'impostazione predefinita è ReLU.

  15. Rilascio: immettere un numero compreso tra 0,0 e 1,0 per determinare la probabilità che gli output vengano eliminati in ogni livello durante il training.

    Dropout è un metodo di regolarizzazione per impedire l'overfitting delle reti neurali. Una decisione comune per questo valore consiste nell'iniziare con 0,5, che sembra essere vicino a ottimale per un'ampia gamma di reti e attività.

  16. Normalizzazione batch: selezionare questa opzione per usare la normalizzazione batch dopo ogni livello nascosto nel componente profondo.

    La normalizzazione batch è una tecnica per combattere il problema dei turni covariati interni durante il training delle reti. In generale, può contribuire a migliorare la velocità, le prestazioni e la stabilità delle reti.

  17. Esegui la pipeline.

Note tecniche

Wide & Deep esegue congiuntamente il training di modelli lineari ampi e reti neurali profonde per combinare i punti di forza della memorizzazione e della generalizzazione. Il componente wide accetta un set di funzionalità non elaborate e trasformazioni di funzionalità per memorizzare le interazioni delle funzionalità. E con meno progettazione delle caratteristiche, il componente profondo generalizza per le combinazioni di funzionalità non visibile tramite incorporamenti di funzionalità densi a bassa dimensione.

Nell'implementazione di Wide & Deep recommender, il componente usa una struttura del modello predefinita. Il componente wide accetta incorporamenti utente, incorporamenti di elementi e la trasformazione tra prodotti di ID utente e ID elemento come input. Per la parte profonda del modello, viene appreso un vettore di incorporamento per ogni funzionalità categorica. Insieme ad altri vettori di funzionalità numerici, questi vettori vengono quindi inseriti nella rete neurale deep feed-forward. La parte ampia e profonda sono combinate sommando le quote del log di output finale come previsione, che infine va a una funzione di perdita comune per il training congiunto.

Passaggi successivi

Vedere il set di componenti disponibili in Azure Machine Learning.