FieldAwareFactorizationMachineTrainer Classe

Definizione

Oggetto IEstimator<TTransformer> per stimare una destinazione usando un modello di macchina a fattorizzazione compatibile con il campo sottoposto a training usando un metodo gradiente stocastico.

public sealed class FieldAwareFactorizationMachineTrainer : Microsoft.ML.IEstimator<Microsoft.ML.Trainers.FieldAwareFactorizationMachinePredictionTransformer>
type FieldAwareFactorizationMachineTrainer = class
    interface IEstimator<FieldAwareFactorizationMachinePredictionTransformer>
Public NotInheritable Class FieldAwareFactorizationMachineTrainer
Implements IEstimator(Of FieldAwareFactorizationMachinePredictionTransformer)
Ereditarietà
FieldAwareFactorizationMachineTrainer
Implementazioni

Commenti

Colonne di input e output

I dati della colonna dell'etichetta di input devono essere Boolean. Le caratteristiche di input dei dati della colonna devono essere un vettore di dimensioni note di Single.

Questo formatore restituisce le colonne seguenti:

Nome della colonna di output Tipo di colonna Descrizione
Score Single Punteggio non associato calcolato dal modello.
PredictedLabel Boolean Etichetta prevista, in base al segno del punteggio. Un punteggio negativo corrisponde a false e un punteggio positivo corrisponde a true.
Probability Single Probabilità calcolata calibrando il punteggio di avere true come etichetta. Il valore di probabilità è compreso nell'intervallo [0, 1].

Per creare questo formatore, usare FieldAwareFactorizationMachineFieldAwareFactorizationMachine o FieldAwareFactorizationMachine(Options).To create this trainer, use FieldAwareFactorizationMachine(Options).

A differenza di altri classificatori binari, che possono supportare una sola colonna di funzionalità, il computer di fattorizzazione compatibile con i campi può utilizzare più colonne di funzionalità. Ogni colonna viene visualizzata come contenitore di alcune funzionalità e tale contenitore è denominato campo. Si noti che tutte le colonne di funzionalità devono essere vettori float, ma le relative dimensioni possono essere diverse. La motivazione della suddivisione delle funzionalità in campi diversi consiste nel modellare le funzionalità di distribuzioni diverse in modo indipendente. Ad esempio, nello store di giochi online, le funzionalità create dal profilo utente e quelle del profilo di gioco possono essere assegnate a due campi diversi.

Caratteristiche del trainer

Attività di Machine Learning Classificazione binaria
La normalizzazione è necessaria? Yes
La memorizzazione nella cache è necessaria? No
NuGet necessario oltre a Microsoft.ML Nessuno
Esportabile in ONNX No

Sfondo

La famiglia di macchine di factorizzazione è un gruppo di modelli potente per problemi di apprendimento supervisionati. È stato introdotto per la prima volta nel 2010 nella carta Macchine per la factorizzazione di Steffen Rendle. Successivamente, una delle sue versioni generalizzate, macchina a fattorizzazione compatibile con il campo, divenne un importante modulo predittivo nei sistemi di raccomandazione recenti e concorsi di stima della frequenza click-through. Per esempi, vedi soluzioni vincenti nel KDD-Cup 2012 di Steffen Rendle (Track 1 e Track 2), Criteo's, Avazu e Le sfide di previsione click di Outbrain su Kaggle.

I computer di factorizzazione sono particolarmente potenti quando le congiunzioni di funzionalità sono estremamente correlate al segnale che si vuole stimare. Un esempio di coppie di caratteristiche che possono formare congiunzioni importanti è l'ID utente e l'ID musica nella raccomandazione musicale. Quando un set di dati è costituito solo da funzionalità numeriche dense, l'utilizzo del computer di fattorizzazione non è consigliato o è consigliabile eseguire alcune caratteristiche.

Funzione di assegnazione dei punteggi

La macchina per la fattorizzazione compatibile con i campi è una funzione di assegnazione dei punteggi che esegue il mapping dei vettori di funzionalità da campi diversi a un punteggio scalare. Si supponga che tutte le colonne di funzionalità $m$ siano concatenate in un vettore di funzionalità lungo $\textbf{x} \in {\mathbb R}^n$ e ${\mathcal F}(j)$ denota il rientro del campo della funzionalità $j$-th. Il punteggio corrispondente è $\hat{y}(\textbf{x}) = \langle \textbf{w}, \textbf{x} \rangle + \sum_{j = 1}^n \sum_{j' = j + 1}^n \langle \textbf{v}_{j, {\mathcal F}(j')}, \textbf{v}_{j', {\mathcal F}(j)} \rangolo x_j x_{j'}$, dove $\langle \cdot, \cdot \rangle$ è l'operatore interno del prodotto, $\textbf{w} \in {\mathbb R}^n$ archivia i coefficienti lineari, e $\textbf{v}_{j, f}\in {\mathbb R}^k$ è la rappresentazione della caratteristica $j$-th nello spazio latente del campo $f$-th. Si noti che $k$ è la dimensione latente specificata dall'utente.

L'etichetta stimata è il segno di $\hat{y}$. Se $\hat{y} > 0$, questo modello stima true. In caso contrario, prevede false.

Per un'introduzione sistematica alla macchina a fattorizzazione compatibile con il campo, vedere questo documento

Dettagli algoritmo di training

L'algoritmo implementato in FieldAwareFactorizationMachineTrainer si basa su un metodo sfumato stocastico. I dettagli dell'algoritmo sono descritti nell'algoritmo 3 in questo documento online. La funzione di perdita ridotta è la perdita logistica, quindi il modello sottoposto a training può essere considerato come una regressione logistica non lineare.

Vedere anche la sezione Vedere anche i collegamenti agli esempi di utilizzo.

Metodi

Nome Descrizione
Fit(IDataView, IDataView, FieldAwareFactorizationMachineModelParameters)

Continua il training di un FieldAwareFactorizationMachineTrainer oggetto usando un oggetto già sottoposto a modelParameters training e/o dati di convalida e restituisce un oggetto FieldAwareFactorizationMachinePredictionTransformer.

Fit(IDataView)

Esegue il training e restituisce un oggetto FieldAwareFactorizationMachinePredictionTransformer.

GetOutputSchema(SchemaShape)

Propagazione dello schema per i trasformatori. Restituisce lo schema di output dei dati, se lo schema di input è simile a quello fornito.

Metodi di estensione

Nome Descrizione
AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment)

Aggiungere un "checkpoint di memorizzazione nella cache" alla catena di stima. In questo modo si garantisce che gli estimatori downstream vengano sottoposti a training su dati memorizzati nella cache. È utile disporre di un checkpoint di memorizzazione nella cache prima che i formatori eseseguono più passaggi di dati.

WithOnFitDelegate<TTransformer>(IEstimator<TTransformer>, Action<TTransformer>)

Dato uno strumento di stima, restituire un oggetto wrapping che chiamerà un delegato una volta Fit(IDataView) chiamato. È spesso importante che uno strumento di stima restituisca informazioni sulle dimensioni, motivo per cui il Fit(IDataView) metodo restituisce un oggetto tipizzato in modo specifico, anziché solo un oggetto generale ITransformer. Tuttavia, allo stesso tempo, IEstimator<TTransformer> vengono spesso formati in pipeline con molti oggetti, quindi potrebbe essere necessario creare una catena di estimatori tramite EstimatorChain<TLastTransformer> dove lo strumento di stima per il quale si vuole ottenere il trasformatore è sepolto in una posizione in questa catena. Per questo scenario, è possibile collegare un delegato che verrà chiamato una volta chiamato fit.

Si applica a

Vedi anche