Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Usage
microsoftml.rx_fast_linear()
Description
Egy sztochasztikus kettős koordináta emelkedés (SDCA) optimalizálási tréner lineáris bináris osztályozáshoz és regresszióhoz.
Részletek
rx_fast_linear egy tréner, amely a Sztochasztikus Kettős Koordináta Emelkedés (SDCA) módszerén alapul, amely egy korszerű optimalizációs technika konvex célfüggvényekhez. Az algoritmus nagy, memórián kívüli adathalmazokra is skálázható egy félig asinkron megvalósítás révén, amely támogatja a többszálas megoldást.
A konvergenciát egy külön szálban időnként kényszerítik ki a szinkronizáció az elsődleges és kettős frissítések között. Számos veszteségfunkció is elérhető. Az SDCA módszer a logisztikai regresszió és az SVM algoritmusok legjobb tulajdonságait és képességeit ötvözi.
További információért az SDCA-ról lásd a hivatkozások szekciójában.
A hagyományos optimalizálási algoritmusok, mint például a sztochasztikus gradiens leszállás (SGD), közvetlenül optimalizálják az empirikus veszteségfüggvényt. Az SDCA egy másik megközelítést választ, amely inkább a kettős problémát optimalizálja. A duális veszteségfüggvényt példánként változó súlyok paraméterezik. Minden iterációban, amikor egy edzési példát olvasunk a képzési adathalmazból, a megfelelő példás súlyt úgy módosítják, hogy a kettős veszteségfüggvény optimalizált legyen az aktuális példához képest. Az SDCA nem igényel tanulási sebességet a lépésméret meghatározásához, mint ahogy azt a különböző gradiens leereszkedési módszerek is előírják.
rx_fast_linear jelenleg háromféle veszteségfüggvényt támogat bináris osztályozással: logaritmikai veszteség, zsanérvesztés és simított zsanérvesztés.
A lineáris regresszió is támogatja a négyzetes veszteségfüggvényt. Az elasztikus háló regularizáció az l2_weight és l1_weight paraméterekkel határozható meg. Megjegyzendő, hogy hatással l2_weight van a konvergencia sebességére. Általánosságban elmondható, hogy minél nagyobb , l2_weightannál gyorsabban konvergál az SDCA.
Fontos megjegyezni, hogy rx_fast_linear ez egy sztochasztikus és streaming optimalizálási algoritmus. Az eredmények a képzési adatok sorrendjétől függnek. A reprodukálható eredményekhez ajánlott beállítani shuffle és Falsetrain_threads -re 1.
Arguments
képlet
A revoscalepy.rx_formula-ben leírt képlet.
A F() jelenleg nem támogatja az interakciós feltételeket.
adat
. xdf-fájlt vagy adatkeret-objektumot meghatározó adatforrás-objektum vagy karaktersztring.
metódus
Megadja a modelltípust egy karakterlánc-sorozattal: "binary" alapértelmezett bináris osztályozáshoz vagy "regression" lineáris regresszióhoz.
loss_function
Megadja az empirikus veszteségfüggvényt az optimalizáláshoz. Bináris osztályozáshoz a következő lehetőségek állnak rendelkezésre:
log_loss: A fatörzsveszteség. Ez az alapértelmezett beállítás.hinge_loss: Az SVM zsanérvesztése. Paramétere a margó méretet jelöli.smooth_hinge_loss: A simított zsanérvesztés. Paramétere a simító állandót jelöli.
Lineáris regresszió esetén jelenleg a négyzetes veszteség squared_loss támogatott. Ha ezt a paramétert Nincs-re állítjuk, alapértelmezett értéke a tanulás típusától függ:
log_lossbináris besoroláshoz.squared_losslineáris regresszióra.
A következő példa megváltoztatja a loss_function : hinge_lossrx_fast_linear(..., loss_function=hinge_loss()).
l1_weight
Megadja az L1 regularizációs súlyt. Az értéknek vagy nem negatív, vagy nulla. Ha nincs megadva, a tényleges értéket automatikusan az adathalmaz alapján számítják ki. Nincs az alapértelmezett érték.
l2_weight
Megadja az L2 regularizációs súlyt. Az értéknek vagy nem negatív, vagy nulla. Ha nincs megadva, a tényleges értéket automatikusan az adathalmaz alapján számítják ki. Nincs az alapértelmezett érték.
train_threads
Megadja, hány egyidejű szál használható az algoritmus futtatásához. Amikor ezt a paramétert Nincs-re állítjuk, a használt szálak számát a folyamatban rendelkezésre álló logikai processzorok száma, valamint az adatok szűksége alapján határozzák meg. Állítsd be, hogy 1 az algoritmust egyetlen szálban futtasd.
convergence_tolerance
Meghatározza a konvergencia kritériumként használt tűrésküszöböt. 0 és 1 között kell lennie. Az alapértelmezett érték a 0.1. Az algoritmust konvergáltnak tekintik, ha a relatív dualitási rés, amely a dualitási rés és a primális veszteség közötti arány, a megadott konvergencia tűréshatár alá esik.
max_iterations
Felső határt ad a tanítási iterációk számára. Ennek a paraméternek pozitívnak vagy nincsnek kell lennie. Ha nincs megadva, a tényleges értéket automatikusan az adathalmaz alapján számítják ki. Minden iteráció teljes áthaladást igényel a képzési adatok felett. A képzés akkor ér véget, amikor az iterációk teljes száma eléri a megadott felső határt, vagy amikor a veszteségfüggvény konvergál, attól függően, melyik történik korábban.
átrendezés
Megadja, hogy a képzési adatokat keverjük-e. Úgy állítottam True be, hogy keverd az adatokat; False nem keverésre. Az alapértelmezett érték a True. Az SDCA egy sztochasztikus optimalizálási algoritmus. Ha bekapcsolják a keverést, a betanítási adatok minden iterációban összekeverednek.
check_frequency
Az iterációk száma, amelyek után a veszteségfüggvényt kiszámítják és ellenőrizik, hogy megállapítsák, konvergált-e. A megadott értéknek pozitív egész számnak vagy nincsnek kell lennie. Ha nincs, akkor a tényleges értéket automatikusan az adathalmaz alapján számítják ki. Ellenkező esetben, például, ha checkFrequency = 5 meg van jelölve, akkor a veszteségfüggvényt kiszámítják, és a konvergenciát minden 5 iterációban ellenőrizzük. A veszteségfüggvény számításához külön teljes átmenést igényel a tanítási adatok felett.
normalizálás
A használt automatikus normalizálás típusát adja meg:
"Auto": ha normalizálásra van szükség, a rendszer automatikusan végrehajtja. Ez az alapértelmezett választás."No": nem történik normalizálás."Yes": normalizálás történik."Warn": ha normalizálásra van szükség, figyelmeztető üzenet jelenik meg, de a normalizálás nem történik meg.
A normalizálás az adattartományokat standard méretezésre skálázza át. A funkciók skálázása biztosítja az adatpontok közötti távolságok arányosak, és lehetővé teszi a különböző optimalizálási módszereket, például a színátmenetes süllyedést, hogy sokkal gyorsabban konvergáljanak. Normalizálás esetén a rendszer normalizálót MaxMin használ. Normalizálja az értékeket egy intervallumban [a, b] ahol -1 <= a <= 0 és 0 <= b <= 1 .b - a = 1 Ez a normalizáló a nulláról nullára való leképezéssel megőrzi a ritkaságot.
ml_transforms
Megadja azon MicrosoftML-átalakítások listáját, amelyeket betanítás előtt el kell végezni az adatokon, vagy Nincs , ha nem kell átalakításokat végrehajtani.
featurize_textA categoricaltámogatott átalakításokat lásd, és categorical_hashtekintse meg.
Ezek az átalakítások a megadott Python-átalakítások után lesznek végrehajtva.
Az alapértelmezett érték Nincs.
ml_transform_vars
A változónevek ml_transforms karaktervektorát adja meg , ha nincs .
Az alapértelmezett érték Nincs.
row_selection
NEM TÁMOGATOTT. Az adathalmaz azon sorait (megfigyeléseit) adja meg, amelyeket a modell az adathalmazból származó logikai változó nevével (idézőjelekben) vagy az adathalmaz változóit használó logikai kifejezéssel használ. Például:
row_selection = "old"csak olyan megfigyeléseket használ, amelyekben a változóoldértéke .Truerow_selection = (age > 20) & (age < 65) & (log(income) > 10)csak olyan megfigyeléseket használ, amelyekben aageváltozó értéke 20 és 65 között van, és alogincomeváltozó értéke nagyobb, mint 10.
A sorkijelölés az adatátalakítások feldolgozása után történik (lásd az argumentumokat transforms vagy transform_functiona ). Az összes kifejezéshez hasonlóan a row_selection függvényhíváson kívül is definiálható a expression függvény használatával.
Átalakítja
NEM TÁMOGATOTT. Az űrlap kifejezése, amely a változóátalakítások első fordulóját jelöli. Az összes kifejezéshez transforms hasonlóan (vagy row_selection) a függvényhíváson kívül is definiálható a expression függvény használatával.
transform_objects
NEM TÁMOGATOTT. Névvel ellátott lista, amely olyan objektumokat tartalmaz, amelyekre hivatkozni transformslehet.transform_functionrow_selection
transform_function
A változó transzformációs függvénye.
transform_variables
A bemeneti adathalmaz változóinak karaktervektora, amely az átalakítási függvényhez szükséges.
transform_packages
NEM TÁMOGATOTT. Egy karaktervektor, amely további Python-csomagokat határoz meg (a megadottakon RxOptions.get_option("transform_packages")kívül), amelyeket elérhetővé kell tenni és előre be kell tölteni a változóátalakítási függvényekben való használatra.
A revoscalepy függvényekben explicit módon definiált függvények például azok és transforms argumentumaik vagy argumentumaik transform_functionformularow_selection által implicit módon definiált függvények. Az transform_packages argumentum lehet Nincs is, ami azt jelzi, hogy nincsenek előre betöltött csomagok RxOptions.get_option("transform_packages") .
transform_environment
NEM TÁMOGATOTT. Felhasználó által definiált környezet, amely szülőként szolgál minden belső fejlesztésű és változó adatátalakításhoz használt környezethez.
Ha transform_environment = Nonea rendszer ehelyett egy új "kivonat" környezetet használ a szülő revoscalepy.baseenv használatával.
blocks_per_read
Megadja az adatforrásból beolvasott adattömbök olvasási blokkjainak számát.
report_progress
Egész számérték, amely a sorfeldolgozási folyamat jelentési szintjét határozza meg:
0: nem jelent előrehaladást.1: a feldolgozott sorok száma ki lesz nyomtatva és frissítve.2: a feldolgozott sorok és az időzítések jelentése.3: feldolgozott sorok és az összes időzítés jelentése.
bővebb
Egy egész szám, amely meghatározza a kívánt kimenet mennyiségét.
Ha 0, a számítások során a rendszer nem nyomtat részletes kimenetet. Egész számértékek a 1 növekvő mennyiségű információ biztosításához 4 .
compute_context
Beállítja a számítások végrehajtásának környezetét egy érvényes revoscalepy-val megadva. RxComputeContext. Jelenleg helyi és revoscalepy. Az RxInSqlServer számítási környezetek támogatottak.
Együttes
Vezérlési paraméterek a ensemblinghez.
Visszatérítések
A FastLinear betanított modellel rendelkező objektum.
Note
Ez az algoritmus többszálú, és nem próbálja meg betölteni az egész adathalmazt a memóriába.
References
A sztochasztikus kettős koordináta felemelkedés felskálázása
Sztochasztikus kettős koordináta emelkedési módszerek a regulárisított veszteség minimalizálásához
Bináris besorolási példa
'''
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
Regressziós példa
'''
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
Veszteségfüggvények
Kapcsolódó tartalom
- microsoftml.hinge_loss: A zsanérveszteség függvény
- microsoftml.log_loss: Naplóveszteség függvény
- microsoftml.smoothed_hinge_loss: Simított csuklópánt veszteség funkció
- microsoftml.squared_loss: Négyzetes veszteségfüggvény
- microsoftml.rx_predict: Pontszámok microsoftos gépi tanulási modell használatával