FieldAwareFactorizationMachineTrainer Klasa

Definicja

Element IEstimator<TTransformer> do przewidywania celu przy użyciu modelu maszyny factoryzacji obsługującego pole wyszkolony przy użyciu metody gradientu stochastycznego.

public sealed class FieldAwareFactorizationMachineTrainer : Microsoft.ML.IEstimator<Microsoft.ML.Trainers.FieldAwareFactorizationMachinePredictionTransformer>
type FieldAwareFactorizationMachineTrainer = class
    interface IEstimator<FieldAwareFactorizationMachinePredictionTransformer>
Public NotInheritable Class FieldAwareFactorizationMachineTrainer
Implements IEstimator(Of FieldAwareFactorizationMachinePredictionTransformer)
Dziedziczenie
FieldAwareFactorizationMachineTrainer
Implementuje

Uwagi

Kolumny wejściowe i wyjściowe

Dane kolumny etykiety wejściowej muszą mieć wartość Boolean. Dane wejściowe funkcji kolumny muszą być znanym wektorem o rozmiarze Single.

Ten trener generuje następujące kolumny:

Nazwa kolumny wyjściowej Typ kolumny Opis
Score Single Niezwiązany wynik, który został obliczony przez model.
PredictedLabel Boolean Przewidywana etykieta na podstawie znaku wyniku. Wynik ujemny mapuje na false wartości i wynik dodatni jest mapowy na true.
Probability Single Prawdopodobieństwo obliczone przez kalibrowanie wyniku wartości true jako etykiety. Wartość prawdopodobieństwa jest w zakresie [0, 1].

Aby utworzyć ten trener, użyj metody FieldAwareFactorizationMachineFieldAwareFactorizationMachine lub FieldAwareFactorizationMachine(Options).

W przeciwieństwie do innych klasyfikatorów binarnych, które mogą obsługiwać tylko jedną kolumnę funkcji, maszyna factoryzacja z obsługą pól może korzystać z wielu kolumn funkcji. Każda kolumna jest postrzegana jako kontener niektórych funkcji, a taki kontener jest nazywany polem. Należy pamiętać, że wszystkie kolumny funkcji muszą być wektorami zmiennoprzecinkowymi, ale ich wymiary mogą być różne. Motywacją dzielenia funkcji na różne pola jest modelowanie funkcji z różnych dystrybucji niezależnie. Na przykład w sklepie z grami online funkcje utworzone na podstawie profilu użytkownika i z profilu gry można przypisać do dwóch różnych pól.

Cechy trenera

Zadanie uczenia maszynowego Klasyfikacja binarna
Czy normalizacja jest wymagana? Tak
Czy buforowanie jest wymagane? Nie
Wymagane narzędzie NuGet oprócz Microsoft.ML Brak
Eksportowanie do pliku ONNX Nie

Tło

Rodzina maszyn factorization to zaawansowana grupa modeli do problemów z uczeniem nadzorowanym. Po raz pierwszy został wprowadzony w dokumencie Steffen Rendle Factorization Machines w 2010 roku. Później jedna z uogólnionych wersji, maszyny factoryzacji obsługującej pola, stała się ważnym modułem predykcyjnym w ostatnich systemach rekomendacji i konkursach przewidywania szybkości kliknięć. Aby zapoznać się z przykładami, zobacz zwycięskie rozwiązania w KDD-Cup 2012 (Track 1 i Track 2), Criteo's, Avazu ioutbrain's click prediction challenges on Kaggle.

Maszyny factoryzacji są szczególnie wydajne, gdy połączenia funkcji są bardzo skorelowane z sygnałem, który chcesz przewidzieć. Przykładem par funkcji, które mogą stanowić ważne połączenia, jest identyfikator użytkownika i identyfikator muzyki w rekomendacji dotyczącej muzyki. Gdy zestaw danych składa się tylko z gęstych cech liczbowych, użycie maszyny factoryzacji nie jest zalecane lub należy wykonać pewne cechy.

Funkcja oceniania

Maszyna do factoryzacji z obsługą pól to funkcja oceniania, która mapuje wektory funkcji z różnych pól na wynik skalarny. Załóżmy, że wszystkie kolumny funkcji $m$ są łączone w długi wektor funkcji $\textbf{x} \in {\mathbb R}^n$ i ${\mathcal F}(j)$ oznacza wcięcie pola $j$-th funkcji. Odpowiedni wynik to $\hat{y}(\textbf{x}) = \langle \textbf{w}, \textbf{x} \rangle + \sum_{j = 1}^n \sum_{j' = j + 1}^n \langle \textbf{v}_{j, {\mathcal F}(j')}, \textbf{v}_{j', {\mathcal F}(j)} \rangle x_j x_{j'}$, gdzie $\langle \cdot, \cdot \rangle$ jest operatorem produktu wewnętrznego, $\textbf{w} \in {\mathbb R}^n$ przechowuje współczynniki liniowe, i $\textbf{v}_{j, f}\in {\mathbb R}^k$ jest reprezentacją $j$-th funkcji w przestrzeni opóźnianej $f$-th pola. Należy pamiętać, że $k$ jest ukrytym wymiarem określonym przez użytkownika.

Przewidywana etykieta jest znakiem $\hat{y}$. Jeśli $\hat{y} > 0$, ten model przewiduje wartość true. W przeciwnym razie przewiduje wartość false.

Aby zapoznać się z systematycznym wprowadzeniem do maszyny factoryzacji obsługującej pola, zapoznaj się z tym dokumentem

Szczegóły algorytmu trenowania

Algorytm zaimplementowany w programie FieldAwareFactorizationMachineTrainer jest oparty na metodzie gradientu stochastycznego. Szczegóły algorytmu opisano w temacie Algorithm 3 (Algorytm 3) w tym dokumencie online. Zminimalizowana funkcja utraty to utrata logistyczna, więc wytrenowany model można postrzegać jako regresję logistyczną nieliniową.

Zapoznaj się z sekcją Zobacz również, aby uzyskać linki do przykładów użycia.

Metody

Fit(IDataView)

Trenuje i zwraca wartość FieldAwareFactorizationMachinePredictionTransformer.

Fit(IDataView, IDataView, FieldAwareFactorizationMachineModelParameters)

Kontynuuje trenowanie FieldAwareFactorizationMachineTrainer przy użyciu już wytrenowanych modelParameters i/lub danych weryfikacji i zwraca wartość FieldAwareFactorizationMachinePredictionTransformer.

GetOutputSchema(SchemaShape)

Propagacja schematu dla transformatorów. Zwraca schemat wyjściowy danych, jeśli schemat wejściowy jest podobny do podanego.

Metody rozszerzania

AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment)

Dołącz punkt kontrolny buforowania do łańcucha narzędzia do szacowania. Zapewni to, że narzędzia do szacowania podrzędnego zostaną wytrenowane względem buforowanych danych. Warto mieć punkt kontrolny buforowania, zanim trenerzy przejmą wiele danych.

WithOnFitDelegate<TTransformer>(IEstimator<TTransformer>, Action<TTransformer>)

Biorąc pod uwagę narzędzie do szacowania, zwróć obiekt opakowujący, który wywoła delegata po Fit(IDataView) wywołaniu. Często ważne jest, aby narzędzie do szacowania zwracało informacje o tym, co było odpowiednie, dlatego Fit(IDataView) metoda zwraca specjalnie wpisany obiekt, a nie tylko ogólną ITransformerwartość . Jednak w tym samym czasie IEstimator<TTransformer> często są tworzone w potoki z wieloma obiektami, więc może być konieczne utworzenie łańcucha narzędzi do szacowania za pośrednictwem EstimatorChain<TLastTransformer> miejsca, w którym narzędzie do szacowania, dla którego chcemy uzyskać transformator jest pochowany gdzieś w tym łańcuchu. W tym scenariuszu możemy za pomocą tej metody dołączyć delegata, który zostanie wywołany po wywołaniu dopasowania.

Dotyczy

Zobacz też