Jak wybrać algorytm ML.NET
Dla każdego zadania ML.NET istnieje wiele algorytmów trenowania do wyboru. Wybór zależy od problemu, który próbujesz rozwiązać, właściwości danych oraz dostępnych zasobów obliczeniowych i magazynowych. Należy pamiętać, że trenowanie modelu uczenia maszynowego jest procesem iteracyjnym. Może być konieczne wypróbowanie wielu algorytmów, aby znaleźć ten, który działa najlepiej.
Algorytmy działają na funkcjach. Funkcje to wartości liczbowe obliczane na podstawie danych wejściowych. Są to optymalne dane wejściowe dla algorytmów uczenia maszynowego. Nieprzetworzone dane wejściowe są przekształcane w funkcje przy użyciu co najmniej jednej transformacji danych. Na przykład dane tekstowe są przekształcane w zestaw liczb wyrazów i liczby kombinacji wyrazów. Po wyodrębnieniu funkcji z typu danych pierwotnych przy użyciu przekształceń danych są one określane jako cechowane. Na przykład featurized text (tekst) lub featurized image data (dane obrazów cechowanych).
Trener = algorytm + zadanie
Algorytmem jest matematyka wykonywana w celu utworzenia modelu. Różne algorytmy tworzą modele o różnych cechach.
W przypadku ML.NET ten sam algorytm można zastosować do różnych zadań. Na przykład Stochastic Dwurzędny Ascent może służyć do klasyfikacji binarnej, klasyfikacji wieloklasowej i regresji. Różnica polega na tym, jak dane wyjściowe algorytmu są interpretowane tak, aby odpowiadały zadaniu.
Dla każdej kombinacji algorytmów/zadań ML.NET udostępnia składnik, który wykonuje algorytm trenowania i tworzy interpretację. Te składniki są nazywane trenerami. Na przykład SdcaRegressionTrainer użyto algorytmu StochasticDualCoordinatedAscent zastosowanego do zadania Regresja .
Algorytmy liniowe
Algorytmy liniowe tworzą model, który oblicza wyniki na podstawie liniowej kombinacji danych wejściowych i zestawu wag. Wagi są parametrami modelu szacowanego podczas trenowania.
Algorytmy liniowe działają dobrze w przypadku funkcji, które są liniowo separowalne.
Przed rozpoczęciem trenowania za pomocą algorytmu liniowego funkcje powinny być znormalizowane. Dzięki temu jedna funkcja nie ma większego wpływu na wynik niż inne.
Ogólnie rzecz biorąc, algorytmy liniowe są skalowalne, szybkie, tanie do trenowania i tanie do przewidywania. Są one skalowane według liczby funkcji i w przybliżeniu według rozmiaru zestawu danych treningowych.
Algorytmy liniowe sprawiają, że wiele przechodzi przez dane treningowe. Jeśli zestaw danych mieści się w pamięci, dodanie punktu kontrolnego pamięci podręcznej do potoku ML.NET przed dołączeniem trenera spowoduje szybsze uruchomienie trenowania.
Uśredniony perceptron
Najlepsze w przypadku klasyfikacji tekstu.
Trener | Zadanie | Możliwość eksportowania ONNX |
---|---|---|
AveragedPerceptronTrainer | Klasyfikacja binarna | Tak |
Stochastic podwójny skoordynowany wznosc
Dostrajanie nie jest wymagane w celu uzyskania dobrej wydajności domyślnej.
Trener | Zadanie | Możliwość eksportowania ONNX |
---|---|---|
SdcaLogisticRegressionBinaryTrainer | Klasyfikacja binarna | Tak |
SdcaNonCalibratedBinaryTrainer | Klasyfikacja binarna | Tak |
SdcaMaximumEntropyMulticlassTrainer | Klasyfikacja wieloklasowa | Tak |
SdcaNonCalibratedMulticlassTrainer | Klasyfikacja wieloklasowa | Tak |
SdcaRegressionTrainer | Regresja | Tak |
L-BFGS
Użyj funkcji, gdy liczba funkcji jest duża. Tworzy statystyki trenowania regresji logistycznej, ale nie skaluje się, a także averagedPerceptronTrainer.
Trener | Zadanie | Możliwość eksportowania ONNX |
---|---|---|
LbfgsLogisticRegressionBinaryTrainer | Klasyfikacja binarna | Tak |
LbfgsMaximumEntropyMulticlassTrainer | Klasyfikacja wieloklasowa | Tak |
LbfgsPoissonRegressionTrainer | Regresja | Tak |
Symboliczne spadek gradientu stochastycznego
Najszybszy i najbardziej dokładny liniowy trener klasyfikacji binarnej. Skaluje się dobrze przy użyciu liczby procesorów.
Trener | Zadanie | Możliwość eksportowania ONNX |
---|---|---|
SymbolicSgdLogisticRegressionBinaryTrainer | Klasyfikacja binarna | Tak |
Spadek gradientu online
Implementuje standardowy (niesadowy) stochastyczny spadek gradientu, z wyborem funkcji utraty i opcję zaktualizowania wektora wagi przy użyciu średniej wektorów widocznych w czasie.
Trener | Zadanie | Możliwość eksportowania ONNX |
---|---|---|
OnlineGradientDescentTrainer | Regresja | Tak |
Algorytmy drzewa decyzyjnego
Algorytmy drzewa decyzyjnego tworzą model zawierający serię decyzji: skutecznie wykres przepływowy przez wartości danych.
Aby używać tego typu algorytmu, funkcje nie muszą być rozdzielalne liniowo. Funkcje nie muszą być znormalizowane, ponieważ poszczególne wartości w wektorze funkcji są używane niezależnie w procesie decyzyjnym.
Algorytmy drzewa decyzyjnego są ogólnie bardzo dokładne.
Z wyjątkiem uogólnionych modeli dodawania (GAMs), modele drzewa mogą nie mieć możliwości wyjaśnienia, gdy liczba funkcji jest duża.
Algorytmy drzewa decyzyjnego zajmują więcej zasobów i nie są skalowane, a także liniowe. Działają one dobrze w przypadku zestawów danych, które mogą mieścić się w pamięci.
Wzmocnione drzewa decyzyjne są zespołem małych drzew, w których każde drzewo ocenia dane wejściowe i przekazuje wynik do następnego drzewa, aby uzyskać lepszy wynik i tak dalej, gdzie każde drzewo w zespole poprawia się na poprzedniej stronie.
Maszyna wzmocniona gradientem światła
Najszybsze i najdokładniejsze z binarnych trenerów drzewa klasyfikacji. Bardzo dostrajalne.
Trener | Zadanie | Możliwość eksportowania ONNX |
---|---|---|
LightGbmBinaryTrainer | Klasyfikacja binarna | Tak |
LightGbmMulticlassTrainer | Klasyfikacja wieloklasowa | Tak |
LightGbmRegressionTrainer | Regresja | Tak |
LightGbmRankingTrainer | Rankingi | Nie. |
Szybkie drzewo
Służy do określania cechowanych danych obrazu. Odporne na niezrównoważone dane. Bardzo dostrajalne.
Trener | Zadanie | Możliwość eksportowania ONNX |
---|---|---|
FastTreeBinaryTrainer | Klasyfikacja binarna | Tak |
FastTreeRegressionTrainer | Regresja | Tak |
FastTreeTweedieTrainer | Regresja | Tak |
FastTreeRankingTrainer | Rankingi | Nie. |
Szybki las
Dobrze sprawdza się w przypadku hałaśliwych danych.
Trener | Zadanie | Możliwość eksportowania ONNX |
---|---|---|
FastForestBinaryTrainer | Klasyfikacja binarna | Tak |
FastForestRegressionTrainer | Regresja | Tak |
Uogólniony model dodawania (GAM)
Najlepsze w przypadku problemów, które dobrze działają z algorytmami drzewa, ale gdzie wyjaśnienie jest priorytetem.
Trener | Zadanie | Możliwość eksportowania ONNX |
---|---|---|
GamBinaryTrainer | Klasyfikacja binarna | Nie. |
GamRegressionTrainer | Regresja | Nie. |
Faktoryzacja macierzy
Faktoryzacja macierzy
Służy do wspólnego filtrowania w rekomendacji.
Trener | Zadanie | Możliwość eksportowania ONNX |
---|---|---|
MatrixFactorizationTrainer | Zalecenie | Nie. |
Maszyna do faktoryzacji z rozpoznawaniem pól
Najlepsze dla rozrzednych danych podzielonych na kategorie, z dużymi zestawami danych.
Trener | Zadanie | Możliwość eksportowania ONNX |
---|---|---|
FieldAwareFactorizationMachineTrainer | Klasyfikacja binarna | Nie. |
Algorytmy meta
Ci trenerzy tworzą wieloklasowego trenera od binarnego trenera. Użyj z , AveragedPerceptronTrainer, LbfgsLogisticRegressionBinaryTrainer, LightGbmBinaryTrainerSymbolicSgdLogisticRegressionBinaryTrainer, FastTreeBinaryTrainer, , FastForestBinaryTrainer, GamBinaryTrainer.
Jeden w porównaniu ze wszystkimi
Ten klasyfikator wieloklasowy trenuje jeden klasyfikator binarny dla każdej klasy, który odróżnia tę klasę od wszystkich innych klas. Jest ograniczona w skali według liczby klas do kategoryzowania.
Trener | Zadanie | Możliwość eksportowania ONNX |
---|---|---|
OneVersusAllTrainer | Klasyfikacja wieloklasowa | Tak |
Sprzężenie parowe
Ten klasyfikator wieloklasowy trenuje algorytm klasyfikacji binarnej dla każdej pary klas. Jest ograniczona w skali według liczby klas, ponieważ każda kombinacja dwóch klas musi być wytrenowana.
Trener | Zadanie | Możliwość eksportowania ONNX |
---|---|---|
PairwiseCouplingTrainer | Klasyfikacja wieloklasowa | Nie. |
K-średnich
Służy do klastrowania.
Trener | Zadanie | Możliwość eksportowania ONNX |
---|---|---|
KMeansTrainer | Klastrowanie | Tak |
Analiza głównych składników
Służy do wykrywania anomalii.
Trener | Zadanie | Możliwość eksportowania ONNX |
---|---|---|
RandomizedPcaTrainer | Wykrywanie anomalii | Nie. |
Prosty algorytm Bayesa
Użyj tego wieloklasowego algorytmu klasyfikacji, gdy funkcje są niezależne, a zestaw danych trenowania jest mały.
Trener | Zadanie | Możliwość eksportowania ONNX |
---|---|---|
NaiveBayesMulticlassTrainer | Klasyfikacja wieloklasowa | Tak |
Poprzedni trener
Użyj tego algorytmu klasyfikacji binarnej do odniesienia wydajności innych trenerów. Aby być skutecznym, metryki innych trenerów powinny być lepsze niż poprzedni trener.
Trener | Zadanie | Możliwość eksportowania ONNX |
---|---|---|
PriorTrainer | Klasyfikacja binarna | Tak |
Maszyny wektorów nośnych
Maszyny wektorów nośnych (SVM) to niezwykle popularna i dobrze zbadana klasa nadzorowanych modeli uczenia, które mogą być używane w zadaniach klasyfikacji liniowej i nieliniowej.
Ostatnie badania koncentrowały się na sposobach optymalizacji tych modeli w celu wydajnego skalowania do większych zestawów szkoleniowych.
Liniowy układ wektorów nośnych
Przewiduje element docelowy przy użyciu liniowego modelu klasyfikacji binarnej wytrenowanego za pośrednictwem danych oznaczonych etykietami logicznymi. Alternatywne między stochastycznymi krokami spadku gradientu i krokami projekcji.
Trener | Zadanie | Możliwość eksportowania ONNX |
---|---|---|
LinearSvmTrainer | Klasyfikacja binarna | Tak |
Lokalne głębokie maszyny wektorów nośnych
Przewiduje element docelowy przy użyciu nieliniowego modelu klasyfikacji binarnej. Zmniejsza koszt czasu przewidywania; koszt przewidywania zwiększa się logarytmicznie z rozmiarem zestawu treningowego, a nie liniowo, z tolerowaną utratą dokładności klasyfikacji.
Trener | Zadanie | Możliwość eksportowania ONNX |
---|---|---|
LdSvmTrainer | Klasyfikacja binarna | Tak |
Co najmniej kwadraty
Co najmniej kwadraty (OLS) to jedna z najczęściej używanych technik regresji liniowej.
Zwykłe najmniejsze kwadraty odnoszą się do funkcji utraty, która oblicza błąd jako sumę kwadratu odległości od rzeczywistej wartości do przewidywanej linii i pasuje do modelu, minimalizując błąd kwadratowy. Ta metoda zakłada silną relację liniową między danymi wejściowymi a zmienną zależną.
Trener | Zadanie | Możliwość eksportowania ONNX |
---|---|---|
OlsTrainer | Regresja | Tak |