Condividi tramite


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 sfumato 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. I dati delle colonne delle funzionalità di input devono essere un vettore di dimensioni note di Single.

Questo formatore restituisce le colonne seguenti:

Nome colonna di output Tipo di colonna Descrizione
Score Single Punteggio non associato calcolato dal modello.
PredictedLabel Boolean L'etichetta stimata, in base al segno del punteggio. Un punteggio negativo esegue il mapping a false e un punteggio negativo esegue il mapping 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).

A differenza di altri classificatori binari, che possono supportare una sola colonna di funzionalità, il computer di factorizzazione compatibile con i campi può utilizzare più colonne di funzionalità. Ogni colonna viene visualizzata come contenitore di alcune funzionalità e tale contenitore viene chiamato campo. Si noti che tutte le colonne delle caratteristiche 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, nell'archivio giochi online, le funzionalità create dal profilo utente e quelle del profilo di gioco possono essere assegnate a due campi diversi.

Caratteristiche del formatore

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

Background

La famiglia di computer di factorizzazione è un potente gruppo di modelli per problemi di apprendimento supervisionati. È stato introdotto per la prima volta nel 2010 nel documento Macchine per la factorizzazione di Steffen Rendle. Successivamente, una delle sue versioni generalizzate, macchina a fattorizzazione compatibile con il campo, è diventato un modulo predittivo importante 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 Outbrain's click prediction challenges on Kaggle.

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

Funzione di assegnazione dei punteggi

Il computer di factorizzazione con riconoscimento del campo è 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 delle funzionalità di $m$ siano concatenate in un vettore di funzionalità lungo $\textbf{x} \in {\mathbb R}^n$ e ${\mathcal F}(j)$ indica 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)} \rangle x_j x_{j'}$, dove $\langle \cdot, \cdot \rangle$ è l'operatore di prodotto interno, $\textbf{w} \in {\mathbb R}^n$ archivia i coefficienti lineari, e $\textbf{v}_{j, f}\in {\mathbb R}^k$ è la rappresentazione di $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, stima 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 è basato su un metodo sfumato stocastico. I dettagli dell'algoritmo sono descritti in Algoritmo 3 in questo documento online. La funzione di perdita ridotta è la perdita logistica, quindi il modello sottoposto a training può essere visualizzato come regressione logistica non lineare.

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

Metodi

Fit(IDataView)

Esegue il training e restituisce un oggetto FieldAwareFactorizationMachinePredictionTransformer.

Fit(IDataView, IDataView, FieldAwareFactorizationMachineModelParameters)

Continua il training di un FieldAwareFactorizationMachineTrainer oggetto utilizzando un oggetto già sottoposto modelParameters a training e/o dati di convalida 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

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

Aggiungere un "checkpoint di memorizzazione nella cache" alla catena di stima. Ciò garantisce che gli estimatori downstream vengano sottoposti a training in base ai dati memorizzati nella cache. È utile avere un checkpoint di memorizzazione nella cache prima che i formatori eseseguono più passaggi di dati.

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

Dato un estimator, restituire un oggetto wrapping che chiamerà un delegato una volta Fit(IDataView) chiamato. È spesso importante che uno strumento di stima restituisca informazioni sull'adattamento, 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