Udostępnij za pośrednictwem


SdcaRegressionTrainer Klasa

Definicja

Element IEstimator<TTransformer> do trenowania modelu regresji przy użyciu metody dwurzędnej współrzędnych dwurzędnych.

public sealed class SdcaRegressionTrainer : Microsoft.ML.Trainers.SdcaTrainerBase<Microsoft.ML.Trainers.SdcaRegressionTrainer.Options,Microsoft.ML.Data.RegressionPredictionTransformer<Microsoft.ML.Trainers.LinearRegressionModelParameters>,Microsoft.ML.Trainers.LinearRegressionModelParameters>
type SdcaRegressionTrainer = class
    inherit SdcaTrainerBase<SdcaRegressionTrainer.Options, RegressionPredictionTransformer<LinearRegressionModelParameters>, LinearRegressionModelParameters>
Public NotInheritable Class SdcaRegressionTrainer
Inherits SdcaTrainerBase(Of SdcaRegressionTrainer.Options, RegressionPredictionTransformer(Of LinearRegressionModelParameters), LinearRegressionModelParameters)
Dziedziczenie

Uwagi

Aby utworzyć ten trener, użyj sdca lub Sdca(Options).

Kolumny wejściowe i wyjściowe

Dane kolumny etykiety wejściowej muszą mieć wartość Single. 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 Niezawiązany wynik, który został przewidywany przez model.

Cechy trenera

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

Szczegóły algorytmu trenowania

Ten trener opiera się na metodzie Stochastic Dual Coordinate Ascent (SDCA), czyli najnowocześniejszej techniki optymalizacji dla funkcji celowych wypukłych. Algorytm można skalować, ponieważ jest to algorytm trenowania przesyłania strumieniowego zgodnie z opisem w najlepszym dokumencie KDD.

Zbieżność jest zastępowana przez okresowe wymuszanie synchronizacji między zmiennymi pierwotnymi i podwójnymi w osobnym wątku. Dostępnych jest również kilka opcji funkcji utraty, takich jak utrata zawiasu i utrata logistyczna. W zależności od używanej utraty wytrenowany model może na przykład obsługiwać maszynę wektorów lub regresję logistyczną. Metoda SDCA łączy kilka najlepszych właściwości, takich jak możliwość uczenia strumieniowego (bez dopasowywania całego zestawu danych do pamięci), osiągając rozsądny wynik z kilkoma skanowaniami całego zestawu danych (na przykład zobacz eksperymenty w tym dokumencie) i nie wydając żadnych obliczeń na zera w rozrzedzonych zestawach danych.

Należy pamiętać, że SDCA jest algorytmem optymalizacji stochastycznej i przesyłania strumieniowego. Wynik zależy od kolejności danych treningowych, ponieważ tolerancja zatrzymywania nie jest wystarczająco napięta. W optymalizacji silnie wypukłej optymalne rozwiązanie jest unikatowe, dlatego każdy ostatecznie osiągnie to samo miejsce. Nawet w przypadkach nie silnie wypukłych uzyskasz równie dobre rozwiązania od uruchomienia do uruchomienia. W przypadku powtarzalnych wyników zaleca się ustawienie wartości "Shuffle" na wartość False i "NumThreads" na 1.

Ta klasa używa empirycznej minimalizacji ryzyka (tj. ERM), aby sformułować problem optymalizacji oparty na zebranych danych. Należy pamiętać, że ryzyko empiryczne jest zwykle mierzone przez zastosowanie funkcji straty na przewidywaniach modelu na zebranych punktach danych. Jeśli dane szkoleniowe nie zawierają wystarczającej ilości punktów danych (na przykład do trenowania modelu liniowego w przestrzeni $n$-wymiarowej, potrzebujemy co najmniej $n$ punktów danych), nadmierne dopasowanie może się zdarzyć tak, że model utworzony przez ERM jest dobry w opisywaniu danych treningowych, ale może nie przewidzieć poprawnych wyników w niezaużytowanych zdarzeniach. Regularyzacja jest powszechną techniką złagodzenia takiego zjawiska poprzez ukaranie wielkości (zwykle mierzonej przez funkcję norm) parametrów modelu. Ten trener obsługuje elastyczną regularizację sieci, która karze liniową kombinację L1-norm (LASSO), $|| \textbf{w}_c || _1$, i L2-norm (ridge), $|| \textbf{w}_c || _2^2$ regularyzacji dla $c=1,\kropki,m$. Regularne normy L1 i L2 mają różne skutki i zastosowania, które uzupełniają się pod pewnymi względami.

Wraz z zaimplementowanym algorytmem optymalizacji regularyzacja L1-norm może zwiększyć rozrzedwienie wag modelu, $\textbf{w}_1,\kropki,\textbf{w}_m$. W przypadku zestawów danych o wysokiej wymiarowości i rozrzedżenia, jeśli użytkownicy starannie wybierają współczynnik L1-norm, można osiągnąć dobrą jakość przewidywania z modelem, który ma tylko kilka niezerowych wag (np. 1% całkowitej wagi modelu) bez wpływu na moc przewidywania. Natomiast L2-norm nie może zwiększyć rozrzedzeniu wytrenowanego modelu, ale nadal może zapobiec nadmiernemu dopasowaniu, unikając dużych wartości parametrów. Czasami użycie normy L2 prowadzi do lepszej jakości przewidywania, więc użytkownicy mogą nadal chcieć spróbować i dostosować współczynniki L1-norm i L2-norm. Należy pamiętać, że użycie normy L1 oznacza, że rozkład wszystkich parametrów modelu jest rozkładem laplace , podczas gdy L2-norm oznacza rozkład Gaussian dla nich.

Agresywna regularyzacja (czyli przypisywanie dużych współczynników do terminów regularnych L1 lub L2-norm) może zaszkodzić wydajności predykcyjnej, wykluczając ważne zmienne z modelu. Na przykład bardzo duży współczynnik normy L1 może wymusić, że wszystkie parametry mają być zerami i prowadzą do prostego modelu. Dlatego wybór odpowiednich współczynników regularyzacji jest ważny w praktyce.

Aby uzyskać więcej informacji, zobacz:

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

Pola

FeatureColumn

Kolumna funkcji, której oczekuje trener.

(Odziedziczone po TrainerEstimatorBase<TTransformer,TModel>)
LabelColumn

Kolumna etykiety, którą oczekuje trener. Może to być nullwartość , która wskazuje, że etykieta nie jest używana do trenowania.

(Odziedziczone po TrainerEstimatorBase<TTransformer,TModel>)
WeightColumn

Kolumna wagi, którą oczekuje trener. Może to być null, co wskazuje, że waga nie jest używana do trenowania.

(Odziedziczone po TrainerEstimatorBase<TTransformer,TModel>)

Właściwości

Info

Element IEstimator<TTransformer> do trenowania modelu regresji przy użyciu metody dwurzędnej współrzędnych dwurzędnych.

(Odziedziczone po StochasticTrainerBase<TTransformer,TModel>)

Metody

Fit(IDataView)

Trenuje i zwraca wartość ITransformer.

(Odziedziczone po TrainerEstimatorBase<TTransformer,TModel>)
GetOutputSchema(SchemaShape)

Element IEstimator<TTransformer> do trenowania modelu regresji przy użyciu metody dwurzędnej współrzędnych dwurzędnych.

(Odziedziczone po TrainerEstimatorBase<TTransformer,TModel>)

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ż