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