Sdílet prostřednictvím


MatrixFactorizationTrainer Třída

Definice

Predikce IEstimator<TTransformer> prvků v matici pomocí faktorizace matice (označovaná také jako typ filtrování založeného na spolupráci).

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)
Dědičnost
MatrixFactorizationTrainer
Implementuje

Poznámky

Chcete-li vytvořit tohoto školitele, použijte MatrixFactorization nebo MatrixFactorization(Možnosti).

Vstupní a výstupní sloupce

Jsou vyžadovány tři vstupní sloupce, jeden pro indexy řádků matice, jeden pro indexy sloupců matice a jeden pro hodnoty (tj. popisky) v matici. Společně definují matici ve formátu COO . Typ sloupce popisku je vektorem Single , zatímco ostatní dva sloupce jsou skalární typ klíče .

Název výstupního sloupce Typ sloupce Description
Score Single Předpovězená hodnota matice v umístění určeném vstupními sloupci (sloupec indexu řádku a sloupec indexu sloupce).

Charakteristiky trenéra

Úloha strojového učení Doporučovací systémy
Vyžaduje se normalizace? Yes
Vyžaduje se ukládání do mezipaměti? Yes
Kromě Microsoft.ML se vyžaduje NuGet. Microsoft.ML.Recommender
Exportovatelné do ONNX No

Pozadí

Základní myšlenkou faktorizace matice je nalezení dvou matic nízkého pořadí pro přibližnou hodnotu trénovací matice. V tomto modulu jsou očekávaná trénovací data (faktorizovaná matice) seznamem řazených kolekcí členů. Každá řazená kolekce členů se skládá z indexu sloupce, indexu řádku a hodnoty v umístění určeném dvěma indexy. Jako příklad datové struktury řazené kolekce členů můžete použít:

// 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;
}

Všimněte si, že není nutné zadávat všechny položky v trénovací matici, takže lze k vyplnění chybějících hodnot použít faktorizaci matice. Toto chování je velmi užitečné při vytváření doporučovací systémy.

Abychom lépe porozuměli praktickým účelům maticové faktorizace, podívejme se na hudební doporučení jako příklad. Předpokládejme, že id uživatelů a ID hudby se používají jako indexy řádků a sloupců a hodnoty matice jsou hodnocení poskytovaná těmito uživateli. To znamená, že hodnocení $r$ na řádku $u$ a sloupec $v$ znamená, že uživatel $u$ přiděluje $r$ položce $v$. Neúplná matice je velmi běžná, protože ne všichni uživatelé mohou poskytovat zpětnou vazbu ke všem produktům (například nikdo nemůže hodnotit deset milionů skladeb). Předpokládejme, že $R\in{\mathbb R}^{m\times n}$ je matice hodnocení m by n a pořadí dvoufaktorových matic je $P\in {\mathbb R}^{k\times m}$ a $Q\in {\mathbb R}^{k\times n}$, kde $k$ je aproximace. Predikované hodnocení na $u$-tém řádku a $v$-tém sloupci v $R$ by byly vnitřním součinem $u$-tého řádku $P$ a $v$-tého řádku $Q$; to znamená, že $R$ je přibližný součinem transpozice $P$ ($P^T$) a $Q$. Všimněte si, že $k$ je obvykle mnohem menší než $m$ a $n$, takže $P^T Q$ se obvykle nazývá aproximace $R$ nízkého pořadí.

Tento trenér zahrnuje metodu stochastického gradientu a metodu souřadnicového sestupu pro hledání $P$ a $Q$ minimalizací vzdálenosti mezi (chybějící částí) $R$ a její aproximací $P^T Q$. Zahrnutá metoda souřadnicového sestupu je určena speciálně pro faktorizaci matice jedné třídy, kde všechna pozorovaná hodnocení jsou kladné signály (to znamená, že všechny hodnoty hodnocení jsou 1). Všimněte si, že jediným způsobem, jak vyvolat faktorizaci matice jedné třídy, je při volání MatrixFactorization(Options) přiřadit ztrátové ztrátě s jednou třídou. Stručný úvod do standardního faktorizace matice a faktorizace matice jedné třídy najdete tady na stránkách 6 a 28. Výchozí nastavení indukuje standardní faktorizaci matice. Základní knihovnu používanou ve ML.NET maticové faktorizaci najdete v úložišti GitHub.

Uživatelé, kteří mají zájem o matematické podrobnosti, si projděte následující referenční informace.

V části Viz také najdete odkazy na příklady použití.

Vlastnosti

Info

Obsahuje TrainerInfo obecné parametry pro tohoto školitele.

Metody

Fit(IDataView) Natrénuje a vrátí .MatrixFactorizationPredictionTransformer
Fit(IDataView, IDataView)

Vytrénuje s MatrixFactorizationTrainer využitím trénovacích i ověřovacích dat a vrátí .MatrixFactorizationPredictionTransformer

GetOutputSchema(SchemaShape)

Šíření schématu pro transformátory. Vrátí výstupní schéma dat, pokud vstupní schéma odpovídá zadanému schématu.

Platí pro

Viz také