FieldAwareFactorizationMachineTrainer 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 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 |
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ż
- FieldAwareFactorizationMachineTrainer.Options
- FieldAwareFactorizationMachine(BinaryClassificationCatalog+BinaryClassificationTrainers, String, String, String)
- FieldAwareFactorizationMachine(BinaryClassificationCatalog+BinaryClassificationTrainers, String[], String, String)
- FieldAwareFactorizationMachine(BinaryClassificationCatalog+BinaryClassificationTrainers, FieldAwareFactorizationMachineTrainer+Options)