Udostępnij za pośrednictwem


MatrixFactorizationTrainer Klasa

Definicja

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.

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) Trenuje i zwraca wartość MatrixFactorizationPredictionTransformer.
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.

Dotyczy

Zobacz też