Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Usage
microsoftml.rx_fast_linear()
Description
Stochastyczny trener optymalizacji z podwójnym wzniesieniem współrzędnych (SDCA) do liniowej klasyfikacji binarnej i regresji.
Szczegóły
rx_fast_linear jest trenerem opartym na metodzie Stochastic Dual Coordinate Ascent (SDCA), nowoczesnej technice optymalizacji funkcji celowych wypukłych. Algorytm może być skalowany do użycia na dużych zbiorach danych z wyłączeniem pamięci dzięki pół-asynchronicznej implementacji obsługującej wielowątkowość.
Konwergencja jest wspierana przez okresowe wymuszanie synchronizacji między aktualizacjami pierwotnymi a dualnymi w osobnym wątku. Dostępnych jest także kilka opcji funkcji strat. Metoda SDCA łączy kilka najlepszych właściwości i możliwości algorytmów regresji logistycznej i SVM.
Więcej informacji o SDCA można znaleźć w cytowaniach w sekcji referencyjnej.
Tradycyjne algorytmy optymalizacyjne, takie jak stochastyczny gradient descent (SGD), optymalizują bezpośrednio funkcję strat empirycznych. SDCA wybiera inne podejście, które optymalizuje problem dualny. Dualna funkcja strat jest parametryzowana przez wagi dla przykładu. W każdej iteracji, gdy odczytany jest przykład treningowy ze zbioru danych treningowych, odpowiadający mu przykładowi waga jest korygowana tak, aby dualna funkcja strat była optymalizowana względem bieżącego przykładu. SDCA nie wymaga tempa uczenia się do określenia wielkości kroku, jak wymaga to w różnych metodach gradientowego zejścia.
rx_fast_linear Obecnie wspiera klasyfikację binarną za pomocą trzech typów funkcji strat: straty logarytmu, straty zawiasów oraz wygładzonych strat zawiasowych.
Regresja liniowa również wspiera z funkcją strat kwadratowych. Elastyczną nieto regularizację można określić za pomocą parametrów l2_weight i l1_weight . Należy zauważyć, że ma l2_weight wpływ na szybkość zbieżności. Ogólnie rzecz biorąc, im większe , l2_weighttym szybciej SDCA zbiega.
Należy zauważyć, że rx_fast_linear jest to algorytm optymalizacji stochastycznej i strumieniowej. Wyniki zależą od kolejności danych treningowych. Aby uzyskać powtarzalne wyniki, zaleca się ustawienie shuffle na i Falsetrain_threads na 1.
Arguments
formuła
Wzór opisany w revoscalepy.rx_formula.
Terminy interakcji i F() nie są obecnie obsługiwane w języku microsoftml.
dane
Obiekt źródła danych lub ciąg znaków określający plik xdf lub obiekt ramki danych.
metoda
Określa typ modelu za pomocą ciągu znaków: "binary" dla domyślnej klasyfikacji binarnej lub "regression" dla regresji liniowej.
loss_function
Określa funkcję strat empirycznych do optymalizacji. Dla klasyfikacji binarnej dostępne są następujące opcje:
log_loss: Strata logów. Jest to opcja domyślna.hinge_loss: Strata zawiasów SVM. Jego parametr reprezentuje rozmiar marginesu.smooth_hinge_loss: Wygładzone straty zawiasu. Jego parametr reprezentuje stałą wygładzania.
Dla regresji liniowej obecnie obsługiwana jest strata squared_loss kwadratowa. Gdy ten parametr jest ustawiony na Brak, jego wartość domyślna zależy od rodzaju uczenia:
log_lossdla klasyfikacji binarnej.squared_lossdla regresji liniowej.
Poniższy przykład zmienia loss_function na hinge_loss: rx_fast_linear(..., loss_function=hinge_loss()).
l1_weight
Określa wagę regularizacji L1. Wartość musi być albo nieujemna, albo Brak. Jeśli podano Brak , rzeczywista wartość jest automatycznie obliczana na podstawie zbioru danych. Zero jest wartością domyślną.
l2_weight
Określa wagę regularizacji L2. Wartość musi być albo nieujemna, albo Brak. Jeśli podano Brak , rzeczywista wartość jest automatycznie obliczana na podstawie zbioru danych. Zero jest wartością domyślną.
train_threads
Określa, ile wątków współbieżnych można użyć do uruchomienia algorytmu. Gdy ten parametr jest ustawiony na Zero, liczba użytych wątków jest określana na podstawie liczby dostępnych procesorów logicznych oraz rzadkości danych. Ustaw tak, 1 aby algorytm uruchamiał w jednym wątku.
convergence_tolerance
Określa próg tolerancji stosowany jako kryterium zbieżności. Musi być między 0 a 1. Wartość domyślna to 0.1. Algorytm uważa się za zbieżny, jeśli względna luka dualności, czyli stosunek między luką dualności a stratą pierwotną, znajduje się poniżej określonej tolerancji zbieżności.
max_iterations
Określa górną granicę liczby iteracji treningowych. Ten parametr musi być dodatni lub braku. Jeśli podano Brak , rzeczywista wartość jest automatycznie obliczana na podstawie zbioru danych. Każda iteracja wymaga pełnego przejścia danych treningowych. Trening kończy się po osiągnięciu przez całkowitą liczbę iteracji określonej górnej granicy lub gdy funkcja strat zbiegnie, w zależności od tego, co nastąpi wcześniej.
shuffle
Określa, czy należy tasować dane treningowe. Ustaw True tasowanie danych; False nie tasowanie. Wartość domyślna to True. SDCA to stochastyczny algorytm optymalizacji. Jeśli tasowanie jest włączone, dane treningowe są tasowane przy każdej iteracji.
check_frequency
Liczba iteracji, po których funkcja strat jest obliczana i sprawdzana, aby ustalić, czy się zbiega. Podana wartość musi być dodatnia liczba całkowita lub Brak. Jeśli Brak, rzeczywista wartość jest automatycznie obliczana na podstawie zbioru danych. W przeciwnym razie, na przykład, jeśli checkFrequency = 5 jest określona, to funkcja strat jest obliczana, a zbieżność sprawdzana jest co 5 iteracji. Obliczenie funkcji utraty wymaga osobnego, pełnego przejścia danych treningowych.
normalizowanie
Określa typ używanej automatycznej normalizacji:
"Auto": jeśli jest wymagana normalizacja, jest wykonywana automatycznie. Jest to wybór domyślny."No": nie jest wykonywana normalizacja."Yes": jest wykonywana normalizacja."Warn": jeśli jest wymagana normalizacja, zostanie wyświetlony komunikat ostrzegawczy, ale normalizacja nie jest wykonywana.
Normalizacja zmienia skalowanie różnych zakresów danych do standardowej skali. Skalowanie funkcji zapewnia proporcjonalne odległości między punktami danych i umożliwia różne metody optymalizacji, takie jak spadek gradientu, znacznie szybsze. W przypadku normalizacji MaxMin jest używany normalizator. Normalizuje wartości w interwale [a, b] gdzie -1 <= a <= 0 i 0 <= b <= 1 .b - a = 1 Ten normalizator zachowuje rozrzedliwość przez mapowanie zera na zero.
ml_transforms
Określa listę przekształceń MicrosoftML, które mają być wykonywane na danych przed trenowanie lub Brak , jeśli nie mają być wykonywane żadne przekształcenia. Zobacz featurize_text, categoricali categorical_hash, aby zapoznać się z obsługiwanymi przekształceniami.
Te przekształcenia są wykonywane po wszelkich określonych przekształceniach języka Python.
Wartość domyślna to Brak.
ml_transform_vars
Określa wektor znaków nazw zmiennych do użycia w ml_transforms lub Brak , jeśli nie ma być używany.
Wartość domyślna to Brak.
row_selection
NIEOBSŁUGIWANE. Określa wiersze (obserwacje) z zestawu danych, które mają być używane przez model z nazwą zmiennej logicznej z zestawu danych (w cudzysłowie) lub z wyrażeniem logicznym przy użyciu zmiennych w zestawie danych. Przykład:
row_selection = "old"będzie używać tylko obserwacji, w których wartość zmiennejoldtoTrue.row_selection = (age > 20) & (age < 65) & (log(income) > 10)Używa tylko obserwacji, w których wartośćagezmiennej wynosi od 20 do 65, a wartośćlogzmiennejincomejest większa niż 10.
Wybór wiersza jest wykonywany po przetworzeniu wszystkich przekształceń danych (zobacz argumenty transforms lub transform_function). Podobnie jak w przypadku wszystkich wyrażeń, row_selection można zdefiniować poza wywołaniem funkcji przy użyciu expression funkcji.
Przekształca
NIEOBSŁUGIWANE. Wyrażenie formularza reprezentującego pierwszą rundę przekształceń zmiennych. Podobnie jak w przypadku wszystkich wyrażeń transforms (lub row_selection) można zdefiniować poza wywołaniem funkcji przy użyciu expression funkcji .
transform_objects
NIEOBSŁUGIWANE. Nazwana lista zawierająca obiekty, do których można odwoływać się w transformselementach , transform_functioni row_selection.
transform_function
Funkcja przekształcania zmiennej.
transform_variables
Wektor znaków zmiennych zestawu danych wejściowych potrzebnych do funkcji przekształcania.
transform_packages
NIEOBSŁUGIWANE. Wektor znaków określający dodatkowe pakiety języka Python (poza określonymi w ) RxOptions.get_option("transform_packages")do udostępnienia i wstępnie załadowane do użycia w funkcjach przekształcania zmiennych.
Na przykład te jawnie zdefiniowane w funkcjach revoscalepy za pośrednictwem ich transforms argumentów i transform_function lub zdefiniowanych niejawnie za pośrednictwem ich formula lub row_selection argumentów. Argumentem transform_packages może być również Brak wskazujący, że żadne pakiety poza nie RxOptions.get_option("transform_packages") są wstępnie ładowane.
transform_environment
NIEOBSŁUGIWANE. Środowisko zdefiniowane przez użytkownika, które służy jako element nadrzędny dla wszystkich środowisk opracowanych wewnętrznie i używanych do przekształcania danych zmiennych.
Jeśli transform_environment = Nonejest używane nowe środowisko "hash" z nadrzędnym elementem revoscalepy.baseenv.
blocks_per_read
Określa liczbę bloków do odczytu dla każdego fragmentu danych odczytywanych ze źródła danych.
report_progress
Wartość całkowita określająca poziom raportowania postępu przetwarzania wierszy:
0: nie zgłoszono żadnego postępu.1: liczba przetworzonych wierszy jest drukowana i aktualizowana.2: są zgłaszane przetworzone wiersze i chronometraż.3: są zgłaszane wiersze przetworzone i wszystkie chronometraż.
pełny
Wartość całkowita określająca ilość żądanych danych wyjściowych.
Jeśli 0podczas obliczeń nie są drukowane żadne pełne dane wyjściowe. Wartości całkowite z 1 , aby 4 zapewnić coraz większe ilości informacji.
compute_context
Ustawia kontekst, w którym są wykonywane obliczenia określone przy użyciu prawidłowej wersji revoscalepy. RxComputeContext. Obecnie lokalne i revoscalepy. Obsługiwane są konteksty obliczeniowe RxInSqlServer .
Zespół
Parametry sterowania dla ensembling.
Zwroty
FastLinear Obiekt z wytrenowanym modelem.
Note
Ten algorytm jest wielowątkowy i nie będzie próbował ładować całego zbioru danych do pamięci.
References
Skalowanie stochastycznego wznoszenia współrzędnych dualnych
Stochastyczne metody wzrostu współrzędnych dla minimalizacji uregulowanych strat
Przykład klasyfikacji binarnej
'''
Binary Classification.
'''
import numpy
import pandas
from microsoftml import rx_fast_linear, rx_predict
from revoscalepy.etl.RxDataStep import rx_data_step
from microsoftml.datasets.datasets import get_dataset
infert = get_dataset("infert")
import sklearn
if sklearn.__version__ < "0.18":
from sklearn.cross_validation import train_test_split
else:
from sklearn.model_selection import train_test_split
infertdf = infert.as_df()
infertdf["isCase"] = infertdf.case == 1
data_train, data_test, y_train, y_test = train_test_split(infertdf, infertdf.isCase)
forest_model = rx_fast_linear(
formula=" isCase ~ age + parity + education + spontaneous + induced ",
data=data_train)
# RuntimeError: The type (RxTextData) for file is not supported.
score_ds = rx_predict(forest_model, data=data_test,
extra_vars_to_write=["isCase", "Score"])
# Print the first five rows
print(rx_data_step(score_ds, number_rows_read=5))
Output:
Automatically adding a MinMax normalization transform, use 'norm=Warn' or 'norm=No' to turn this behavior off.
Beginning processing data.
Rows Read: 186, Read Time: 0, Transform Time: 0
Beginning processing data.
Beginning processing data.
Rows Read: 186, Read Time: 0, Transform Time: 0
Beginning processing data.
Beginning processing data.
Rows Read: 186, Read Time: 0, Transform Time: 0
Beginning processing data.
Using 2 threads to train.
Automatically choosing a check frequency of 2.
Auto-tuning parameters: maxIterations = 8064.
Auto-tuning parameters: L2 = 2.666837E-05.
Auto-tuning parameters: L1Threshold (L1/L2) = 0.
Using best model from iteration 568.
Not training a calibrator because it is not needed.
Elapsed time: 00:00:00.5810985
Elapsed time: 00:00:00.0084876
Beginning processing data.
Rows Read: 62, Read Time: 0, Transform Time: 0
Beginning processing data.
Elapsed time: 00:00:00.0292334
Finished writing 62 rows.
Writing completed.
Rows Read: 5, Total Rows Processed: 5, Total Chunk Time: Less than .001 seconds
isCase PredictedLabel Score Probability
0 True True 0.990544 0.729195
1 False False -2.307120 0.090535
2 False False -0.608565 0.352387
3 True True 1.028217 0.736570
4 True False -3.913066 0.019588
Przykład regresji
'''
Regression.
'''
import numpy
import pandas
from microsoftml import rx_fast_linear, rx_predict
from revoscalepy.etl.RxDataStep import rx_data_step
from microsoftml.datasets.datasets import get_dataset
attitude = get_dataset("attitude")
import sklearn
if sklearn.__version__ < "0.18":
from sklearn.cross_validation import train_test_split
else:
from sklearn.model_selection import train_test_split
attitudedf = attitude.as_df()
data_train, data_test = train_test_split(attitudedf)
model = rx_fast_linear(
formula="rating ~ complaints + privileges + learning + raises + critical + advance",
method="regression",
data=data_train)
# RuntimeError: The type (RxTextData) for file is not supported.
score_ds = rx_predict(model, data=data_test,
extra_vars_to_write=["rating"])
# Print the first five rows
print(rx_data_step(score_ds, number_rows_read=5))
Output:
Automatically adding a MinMax normalization transform, use 'norm=Warn' or 'norm=No' to turn this behavior off.
Beginning processing data.
Rows Read: 22, Read Time: 0.001, Transform Time: 0
Beginning processing data.
Beginning processing data.
Rows Read: 22, Read Time: 0.001, Transform Time: 0
Beginning processing data.
Beginning processing data.
Rows Read: 22, Read Time: 0, Transform Time: 0
Beginning processing data.
Using 2 threads to train.
Automatically choosing a check frequency of 2.
Auto-tuning parameters: maxIterations = 68180.
Auto-tuning parameters: L2 = 0.01.
Auto-tuning parameters: L1Threshold (L1/L2) = 0.
Using best model from iteration 54.
Not training a calibrator because it is not needed.
Elapsed time: 00:00:00.1114324
Elapsed time: 00:00:00.0090901
Beginning processing data.
Rows Read: 8, Read Time: 0, Transform Time: 0
Beginning processing data.
Elapsed time: 00:00:00.0330772
Finished writing 8 rows.
Writing completed.
Rows Read: 5, Total Rows Processed: 5, Total Chunk Time: Less than .001 seconds
rating Score
0 71.0 72.630440
1 67.0 56.995350
2 67.0 52.958641
3 72.0 80.894539
4 50.0 38.375427
Funkcje straty
microsoftml.log_loss: funkcji utraty dziennika
microsoftml.smoothed_hinge_loss: Wygładzona funkcja utraty zawiasu
Treści powiązane
- microsoftml.hinge_loss: funkcja utraty zawiasu
- microsoftml.log_loss: funkcji utraty dziennika
- microsoftml.smoothed_hinge_loss: Wygładzona funkcja utraty zawiasu
- microsoftml.squared_loss: funkcja strat kwadratowych
- microsoftml.rx_predict: Ocenianie przy użyciu modelu uczenia maszynowego firmy Microsoft