MatrixFactorizationTrainer Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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.
- Pro vícevláknové implementace použité stochastické gradientní metody, viz A Fast Parallel Stochastic Gradient Method for Matrix Factorization in Shared Memory Systems.For A Fast Parallel Stochastic Gradient Method for Matrix Factorization in Shared Memory Systems.
- Informace o výpočtech probíhajících v jednom vlákně najdete v tématu Plán rychlosti učení pro metody stochastického přechodu na faktorizaci matice.
- Použití metody paralelního sestupu souřadnic a vzorce faktorizace matice jedné třídy najdete v tématu Výběr negativních vzorků pro faktorizaci matice jedné třídy.
- Podrobnosti o použité podkladové knihovně najdete v tématu LIBMF: Knihovna pro paralelní faktorizaci matice v systémech se sdílenou pamětí.
V části Viz také najdete odkazy na příklady použití.
Vlastnosti
Info |
Obsahuje TrainerInfo obecné parametry pro tohoto školitele. |
Metody
Fit(IDataView) |
|
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. |