MatrixFactorizationTrainer Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Element IEstimator<TTransformer> do przewidywania elementów w macierzy przy użyciu factoryzacji macierzy (nazywanej również typem filtrowania współpracy).
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)
- Dziedziczenie
-
MatrixFactorizationTrainer
- Implementuje
Uwagi
Aby utworzyć ten trener, użyj metody MatrixFactorization lub MatrixFactorization(Options).
Kolumny wejściowe i wyjściowe
Istnieją trzy wymagane kolumny wejściowe, jeden dla indeksów wierszy macierzy, jeden dla indeksów kolumn macierzy i jeden dla wartości (tj. etykiet) w macierzy. Razem definiują macierz w formacie COO . Typ kolumny etykiety jest wektorem Single , podczas gdy pozostałe dwie kolumny są skalarne typu klucza .
Nazwa kolumny wyjściowej | Typ kolumny | Opis |
---|---|---|
Score |
Single | Przewidywana wartość macierzy w lokalizacji określonej przez kolumny wejściowe (kolumna indeksu wierszy i kolumna indeksu kolumn). |
Cechy trenera
Zadanie uczenia maszynowego | Systemy rekomendatora |
Czy normalizacja jest wymagana? | Tak |
Czy buforowanie jest wymagane? | Tak |
Wymagane narzędzie NuGet oprócz Microsoft.ML | Microsoft.ML.Recommender |
Eksportowanie do pliku ONNX | Nie |
Tło
Podstawową ideą faktoryzacji macierzy jest znalezienie dwóch macierzy o niskiej rangi, aby przybliżyć macierz treningową. W tym module oczekiwane dane treningowe (macierz faktoryzowana) to lista krotki. Każda krotka składa się z indeksu kolumn, indeksu wiersza i wartości w lokalizacji określonej przez dwa indeksy. Na przykładową strukturę danych krotki można użyć:
// 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;
}
Zwróć uwagę, że nie jest konieczne określenie wszystkich wpisów w macierzy treningowej, więc współczynnikizacja macierzy może służyć do wypełniania brakujących wartości. Takie zachowanie jest bardzo przydatne podczas kompilowania systemów rekomendacji.
Aby lepiej zrozumieć praktyczne zastosowania factoryzacji macierzy, rozważmy zalecenie dotyczące muzyki jako przykład. Załóżmy, że identyfikatory użytkowników i identyfikatory muzyki są używane odpowiednio jako indeksy wierszy i kolumn, a wartości macierzy są udostępniane przez tych użytkowników. Oznacza to, że ocena $r$ w wierszu $u$ i kolumny $v$ oznacza, że użytkownik $u$ daje $r$ do elementu $v$. Niekompletna macierz jest bardzo powszechna, ponieważ nie wszyscy użytkownicy mogą przekazywać swoje opinie do wszystkich produktów (na przykład nikt nie może ocenić dziesięciu milionów piosenek). Załóżmy, że $R\in{\mathbb R}^{m\times n}$ to macierz klasyfikacji m-by-n, a ranga dwóch macierzy współczynników jest $P\in {\mathbb R}^{k\times m}$ i $Q\in {\mathbb R}^{k\times n}$, gdzie $k$ jest rangą przybliżenia. Przewidywana ocena w wierszu $u$-th i kolumna $v$-th w $R$ byłaby wewnętrznym produktem $u$-th wiersza $P$ i $v$-th wiersza $Q$; oznacza to, że $R$ jest przybliżony przez produkt transponowania $P$($P^T$) i $Q$. Należy pamiętać, że $k$ jest zwykle znacznie mniejsza niż $m$ i $n$, więc $P^T Q$ jest zwykle nazywane przybliżeniem o niskiej rangi $R$.
Ten trener obejmuje metodę gradientu stochastycznego i metodę spadku współrzędnych do znajdowania $P$ i $Q$ poprzez zminimalizowanie odległości między (nie brakuje części) $R$ i jego przybliżenia $P^T Q$. Uwzględniona metoda spadku współrzędnych jest przeznaczona specjalnie dla faktoryzacji macierzy jednoklasowej, gdzie wszystkie obserwowane oceny są sygnałami dodatnimi (czyli wszystkie wartości klasyfikacji to 1). Zwróć uwagę, że jedynym sposobem wywołania faktoryzacji macierzy jednoklasowej jest przypisanie jednorazowej straty kwadratowej do funkcji utraty podczas wywoływania metody MatrixFactorization(Options). Zobacz stronę 6 i stronę 28 tutaj , aby zapoznać się z krótkim wprowadzeniem do standardowej factoryzacji macierzy i factoryzacji macierzy jednoklasowej. Ustawienie domyślne wywołuje współczynnikizację macierzy standardowej. Podstawowa biblioteka używana w ML.NET factoryzacji macierzy można znaleźć w repozytorium Github.
Aby uzyskać szczegółowe informacje matematyczne dla użytkowników, zapoznaj się z poniższymi odwołaniami.
- Aby zapoznać się z implementacją wielowątkową używanej metody gradientu stochastycznego, zobacz Fast Parallel Stochastic Gradient Method for Matrix Factorization in Shared Memory Systems (Metoda szybkiego równoległego gradientu stochastycznego dla współczynnikowania macierzy w systemach pamięci współdzielonej).
- Aby uzyskać informacje na temat obliczeń w jednym wątku, zobacz Harmonogram uczenia dla metod gradientu stochastycznego do factoryzacji macierzy.
- Aby zapoznać się z użytą metodą zejścia współrzędnych równoległych i formułą factoryzacji macierzy jednoklasowej, zobacz Wybór ujemnych przykładów dla factoryzacji macierzy jednoklasowej.
- Aby uzyskać szczegółowe informacje w używanej bibliotece, zobacz LIBMF: Biblioteka równoległej factoryzacji macierzy w systemach pamięci współdzielonego.
Zapoznaj się z sekcją Zobacz również, aby uzyskać linki do przykładów użycia.
Właściwości
Info |
Zawiera TrainerInfo ogólne parametry dla tego trenera. |
Metody
Fit(IDataView) |
|
Fit(IDataView, IDataView) |
Trenuje MatrixFactorizationTrainer przy użyciu zarówno danych treningowych, jak i weryfikacyjnych, zwraca wartość MatrixFactorizationPredictionTransformer. |
GetOutputSchema(SchemaShape) |
Propagacja schematu dla transformatorów. Zwraca schemat wyjściowy danych, jeśli schemat wejściowy jest podobny do podanego. |