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 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 colonna di output Tipo di colonna Descrizione
Score Single Valore della matrice stimato nella posizione specificata dalle colonne di input (colonna dell'indice di riga e colonna dell'indice di colonna).

Caratteristiche del formatore

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

Background

L'idea di base della fattorizzazione della matrice consiste nel trovare due matrici di fattori di rango basso per approssimare la matrice di training. In questo modulo i dati di training previsti (matrice fattorizzata) sono un elenco di tuple. Ogni tupla è costituita da un indice di colonna, da un indice di riga e dal 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, pertanto la fattorizzazione della matrice può essere usata per riempire i valori mancanti. Questo comportamento è molto utile quando si creano sistemi di raccomandazione.

Per fornire una migliore comprensione degli usi pratici della fattorizzazione della matrice, si consideri la raccomandazione musicale come esempio. Si supponga che gli ID utente e gli ID musicali vengano usati rispettivamente come indici di riga e colonna e che i valori della matrice siano le classificazioni fornite da tali utenti. Ovvero, la classificazione $r$ alla riga $u$ e la 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 propri feedback a tutti i prodotti (ad esempio, nessuno può valutare dieci milioni di brani). Si supponga che $R\in{\mathbb R}^{m\times n}$ sia una matrice di classificazione m-by-n e che il rango delle 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 alla riga $u$-th e la colonna $v$-th in $R$ sarebbe il prodotto interno della riga $u$-th di $P$ e la riga $v$-th di $Q$; vale a dire, $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 chiamato approssimazione a basso rango di $R$.

Questo formatore include un metodo di gradiente 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 di 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 la fattorizzazione della matrice a una classe 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 la sezione Vedere anche i collegamenti agli esempi di utilizzo.

Proprietà

Info

TrainerInfo Contiene parametri generali per questo formatore.

Metodi

Fit(IDataView) Esegue il training e restituisce un oggetto MatrixFactorizationPredictionTransformer.
Fit(IDataView, IDataView)

Esegue il training di un MatrixFactorizationTrainer oggetto usando sia i dati di training che di convalida, 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.

Si applica a

Vedi anche