MatrixFactorizationTrainer Classe

Definizione

Oggetto IEstimator<TTransformer> per stimare gli elementi in una matrice usando la fattorizzazione della matrice (noto anche come tipo di filtro collaborativo).

public sealed class MatrixFactorizationTrainer : Microsoft.ML.IEstimator<Microsoft.ML.Trainers.Recommender.MatrixFactorizationPredictionTransformer>, Microsoft.ML.Trainers.ITrainerEstimator<Microsoft.ML.Trainers.Recommender.MatrixFactorizationPredictionTransformer,Microsoft.ML.Trainers.Recommender.MatrixFactorizationModelParameters>
type MatrixFactorizationTrainer = class
    interface ITrainerEstimator<MatrixFactorizationPredictionTransformer, MatrixFactorizationModelParameters>
    interface IEstimator<MatrixFactorizationPredictionTransformer>
Public NotInheritable Class MatrixFactorizationTrainer
Implements IEstimator(Of MatrixFactorizationPredictionTransformer), ITrainerEstimator(Of MatrixFactorizationPredictionTransformer, MatrixFactorizationModelParameters)
Ereditarietà
MatrixFactorizationTrainer
Implementazioni

Commenti

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

Colonne di input e output

Sono necessarie tre colonne di input, una per gli indici di riga matrice, una per gli indici di colonna matrice e una per i valori (ad esempio le etichette) nella matrice. Insieme definiscono una matrice in formato COO . Il tipo per la colonna label è un vettore di Single mentre le altre due colonne sono scalari di tipo chiave.

Nome della colonna di output Tipo di colonna Descrizione
Score Single Valore della matrice stimato nella posizione specificata dalle colonne di input (colonna indice di riga e colonna dell'indice di colonna).

Caratteristiche del trainer

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

Sfondo

L'idea di base della fattorizzazione della matrice consiste nel trovare due matrici di fattori di basso rango per approssimare la matrice di training. In questo modulo, i dati di training previsti (la matrice fattorizzata) sono un elenco di tuple. Ogni tupla è costituita da un indice di colonna, un indice di riga e il valore nella posizione specificata dai due indici. Per una struttura di dati di esempio di una tupla, è possibile usare:

// The following variables defines the shape of a m-by-n matrix. Indexes start with 0; that is, our indexing system
// is 0-based.
const int m = 60;
const int n = 100;

// A tuple of row index, column index, and rating. It specifies a value in the rating matrix.
class MatrixElement
{
    // Matrix column index starts from 0 and is at most n-1.
    [KeyType(n)]
    public uint MatrixColumnIndex;
    // Matrix row index starts from 0 and is at most m-1.
    [KeyType(m)]
    public uint MatrixRowIndex;
    // The rating at the MatrixColumnIndex-th column and the MatrixRowIndex-th row.
    public float Value;
}

Si noti che non è necessario specificare tutte le voci nella matrice di training, quindi la fattorizzazione della matrice può essere usata per riempire i valori mancanti. Questo comportamento è molto utile quando si creano sistemi di raccomandazione.

Per comprendere meglio gli usi pratici della fattorizzazione della matrice, si consideri la raccomandazione musicale come esempio. Si supponga che gli ID utente e gli ID musica vengano usati rispettivamente come indici di riga e colonna e che i valori della matrice siano classificazioni fornite da tali utenti. Ovvero, la valutazione $r$ alla riga $u$ e alla colonna $v$ significa che l'utente $u$ assegna $r$ all'elemento $v$. Una matrice incompleta è molto comune perché non tutti gli utenti possono fornire i loro feedback a tutti i prodotti (ad esempio, nessuno può valutare dieci milioni di canzoni). Si supponga che $R\in{\mathbb R}^{m\times n}$ sia una matrice di valutazione m-by-n e che il rango delle due matrici a due fattori sia $P\in {\mathbb R}^{k\times m}$ e $Q\in {\mathbb R}^{k\times n}$, dove $k$ è il rango di approssimazione. La valutazione stimata nella riga $u$-th e la colonna $v$-th in $R$ sarebbe il prodotto interno della riga $u$-th di $P$ e della $v$-th riga di $Q$; ovvero, $R$ è approssimativo dal prodotto della trasposizione di $P$($P^T$) e $Q$. Si noti che $k$ è in genere molto più piccolo di $m$ e $n$, quindi $P^T Q$ è in genere chiamata approssimazione di basso rango di $R$.

Questo formatore include un metodo sfumato stocastico e un metodo di discesa delle coordinate per trovare $P$ e $Q$ riducendo al minimo la distanza tra (parte non mancante di) $R$ e la relativa approssimazione $P^T Q$. Il metodo di discesa delle coordinate incluso è specifico per la fattorizzazione della matrice a una classe, in cui tutte le classificazioni osservate sono segnali positivi ( ovvero tutti i valori di classificazione sono 1). Si noti che l'unico modo per richiamare una matrice di fattorizzazione consiste nell'assegnare una perdita quadrata a una classe alla funzione di perdita quando si chiama MatrixFactorization(Options). Vedere La pagina 6 e la pagina 28 sono disponibili qui per una breve introduzione alla fattorizzazione della matrice standard e alla fattorizzazione di una matrice a una classe. L'impostazione predefinita induce la fattorizzazione della matrice standard. La libreria sottostante usata in ML.NET fattorizzazione della matrice è disponibile in un repository GitHub.

Per gli utenti interessati ai dettagli matematici, vedere i riferimenti seguenti.

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

Proprietà

Nome Descrizione
Info

TrainerInfo Contiene parametri generali per questo trainer.

Metodi

Nome Descrizione
Fit(IDataView, IDataView)

Esegue il training di un MatrixFactorizationTrainer oggetto usando sia i dati di training che di convalida, restituisce un oggetto MatrixFactorizationPredictionTransformer.

Fit(IDataView) Esegue il training e restituisce un oggetto MatrixFactorizationPredictionTransformer.
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