Megosztás:


microsoftml.rx_logistic_regression: Logisztikai regresszió

Usage

microsoftml.rx_logistic_regression(formula: str,
    data: [revoscalepy.datasource.RxDataSource.RxDataSource,
    pandas.core.frame.DataFrame], method: ['binary',
    'multiClass'] = 'binary', l2_weight: float = 1,
    l1_weight: float = 1, opt_tol: float = 1e-07,
    memory_size: int = 20, init_wts_diameter: float = 0,
    max_iterations: int = 2147483647,
    show_training_stats: bool = False, sgd_init_tol: float = 0,
    train_threads: int = None, dense_optimizer: bool = False,
    normalize: ['No', 'Warn', 'Auto', 'Yes'] = 'Auto',
    ml_transforms: list = None, ml_transform_vars: list = None,
    row_selection: str = None, transforms: dict = None,
    transform_objects: dict = None, transform_function: str = None,
    transform_variables: list = None,
    transform_packages: list = None,
    transform_environment: dict = None, blocks_per_read: int = None,
    report_progress: int = None, verbose: int = 1,
    ensemble: microsoftml.modules.ensemble.EnsembleControl = None,
    compute_context: revoscalepy.computecontext.RxComputeContext.RxComputeContext = None)

Description

Machine Learning Logistic Regresszió

Részletek

A logisztikai regresszió egy besorolási módszer, amellyel előre jelezhető egy kategorikus függő változó értéke a kapcsolatából egy vagy több olyan független változóhoz, amely feltételezi, hogy logisztikai eloszlással rendelkezik. Ha a függő változónak csak két lehetséges értéke van (sikeres/sikertelen), akkor a logisztikai regresszió bináris. Ha a függő változó több mint két lehetséges értékkel rendelkezik (a vértípus diagnosztikai vizsgálati eredmények alapján), akkor a logisztikai regresszió multinomiális.

Az optimalizálási technika a rx_logistic_regression korlátozott memória Broyden-Fletcher-Goldfarb-Shanno (L-BFGS). Mind az L-BFGS, mind a normál BFGS algoritmusok kvázi-newtoni módszerekkel becsülik meg a Newton metódusa által a lépések kiszámításához használt egyenletben a számításigényes Hessian mátrixot. Az L-BFGS-közelítés azonban csak korlátozott mennyiségű memóriát használ a következő lépés irányának kiszámításához, így különösen alkalmas nagy számú változóval kapcsolatos problémákra. A memory_size paraméter megadja, hogy hány múltbeli pozíciót és színátmenetet tároljon a következő lépés számítása során.

Ez a tanuló rugalmas net-regicializálást használhat: az L1 (lasszó) és az L2 (ridge) regicializáció lineáris kombinációját. A rendszeresítés egy olyan módszer, amely egy rosszul jelentett problémát könnyebben kezelhetővé tehet azáltal, hogy olyan korlátozásokat vezet be, amelyek információkat nyújtanak az adatok kiegészítéséhez, és amelyek megakadályozzák a túlillesztést azáltal, hogy szélsőséges együtthatóértékekkel büntetik a modelleket. Ez javíthatja a modell általánosítását a torzítás-variancia kompromisszum optimális összetettségének kiválasztásával. A rendezés úgy működik, hogy hozzáadja az együttható értékekhez tartozó büntetést a hipotézis hibájához. A szélsőséges együtthatóértékekkel rendelkező pontos modelleket jobban büntetnék, de a kevésbé pontos, konzervatívabb értékeket tartalmazó modelleket kevésbé büntetnék. Az L1 és L2 rendszeresítésnek különböző hatásai és felhasználási módjai vannak, amelyek bizonyos szempontból kiegészítik egymást.

  • l1_weight: a ritka modellekre alkalmazható, ha nagy méretű adatokkal dolgozik. Kis súlyú, a 0 felé viszonylag lényegtelen jellemzőket von le.

  • l2_weight: a ritkán használt adatok esetében előnyösebb. Nagy súlyokat húz nullára.

Ha hozzáadja a gerinc büntetést a rendszeresítéshez, a lasszó bizonyos korlátait leküzdi. Javíthatja prediktív pontosságát, például ha a prediktorok száma nagyobb, mint a mintaméret. Ha x = l1_weight és y = l2_weight, ax + by = c a regicializálási kifejezések lineáris tartományát határozza meg. Az x és az y alapértelmezett értékei egyaránt 1. Az agresszív rendezés árthat a prediktív kapacitásnak, ha kizárja a fontos változókat a modellből. Ezért a logisztikai regressziós modell teljesítményének szempontjából fontos a szabályzási paraméterek optimális értékeinek kiválasztása.

Arguments

képlet

A képlet revoscalepy.rx_formula interakciós feltételekben leírtak szerint, és F() a microsoftml jelenleg nem támogatja.

adat

. xdf-fájlt vagy adatkeret-objektumot meghatározó adatforrás-objektum vagy karaktersztring.

metódus

A logisztikai regresszió típusát meghatározó karaktersztring: "binary" az alapértelmezett bináris besorolási logisztikai regresszióhoz vagy "multiClass" a többnomiális logisztikai regresszióhoz.

l2_weight

Az L2-regicializálási súly. Az értékének nagyobbnak vagy egyenlőnek kell lennie, 0 és az alapértelmezett értéknek a következőnek 1kell lennie: .

l1_weight

Az L1 regicializálási súlya. Az értékének nagyobbnak vagy egyenlőnek kell lennie, 0 és az alapértelmezett értéknek a következőnek 1kell lennie: .

opt_tol

Az optimalizálók konvergenciájának küszöbértéke. Ha az iterációk közötti javulás kisebb, mint a küszöbérték, az algoritmus leáll, és visszaadja az aktuális modellt. A kisebb értékek lassabbak, de pontosabbak. Az alapértelmezett érték a 1e-07.

memory_size

Az L-BFGS memóriamérete, amely megadja a következő lépés számításához tárolandó múltbeli pozíciók és színátmenetek számát. Ez az optimalizálási paraméter korlátozza a következő lépés nagyságrendjének és irányának kiszámításához használt memória mennyiségét. Ha kevesebb memóriát ad meg, a betanítás gyorsabb, de kevésbé pontos. Az alapértelmezett értéknek 20nagyobbnak vagy egyenlőnek 1 kell lennie.

max_iterations

Az iterációk maximális számát állítja be. Ennyi lépés után az algoritmus akkor is leáll, ha nem felel meg a konvergenciára vonatkozó feltételeknek.

show_training_stats

Adja meg True a betanítási adatok és a betanított modell statisztikáinak megjelenítését; ellenkező esetben False. Az alapértelmezett érték a False. A modellstatisztikákkal kapcsolatos további információkért lásd: summary.ml_model().

sgd_init_tol

Állítsa be a 0-nál nagyobb számra a sztochasztikus színátmenetes süllyedés (SGD) használatával a kezdeti paraméterek megkereséséhez. A nem nulla értékhalmaz a konvergenciát meghatározó tolerancia SGD-t határozza meg. Az alapértelmezett érték azt adja meg, hogy az 0 SGD nincs használatban.

init_wts_diameter

Beállítja a kezdeti súlyok átmérőjét, amely megadja azt a tartományt, amelyből a kezdeti súlyokhoz értékeket kell rajzolni. Ezek a súlyok véletlenszerűen inicializálódnak ebből a tartományból. Ha például az átmérője meg van advad, akkor a súlyok egyenletesen oszlanak el az és d/2a között-d/2. Az alapértelmezett érték az 0, amely azt határozza meg, hogy az összes súly inicializálva 0legyen.

train_threads

A modell betanításához használandó szálak száma. Ezt a gép magjainak számát kell beállítani. Vegye figyelembe, hogy az L-BFGS többszálas kísérlet az adathalmaz memóriába való betöltésére. Memóriakihasználtság esetén állítsa be train_threads a 1 többszálasság kikapcsolására. Ha nincs, akkor a használandó szálak száma belsőleg van meghatározva. Az alapértelmezett érték: Nincs.

dense_optimizer

Ha True, a belső optimalizálási vektorok denszenzálását kényszeríti. Ha Falselehetővé teszi, hogy a logisztikai regresszióoptimalizáló ritkán vagy sűrű belső állapotokat használjon, ahogy azt megfelelőnek találja. A beállítás denseOptimizer megköveteli, hogy True a belső optimalizáló sűrű belső állapotot használjon, ami segíthet enyhíteni a szemétgyűjtő terhelését a nagyobb problémák egyes fajtái esetében.

Normalizálni

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. categoricalA featurize_texttá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 .True

  • row_selection = (age > 20) & (age < 65) & (log(income) > 10) csak olyan megfigyeléseket használ, amelyekben a age változó értéke 20 és 65 között van, és a logincome vá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.row_selectiontransform_function

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 transform_function argumentumaik vagy argumentumaik transformsformularow_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 LogisticRegression betanított modellel rendelkező objektum.

Megjegyzés:

Ez az algoritmus megkísérli betölteni a teljes adathalmazt a memóriába, amikor train_threads > 1 (többszálas).

Lásd még

rx_predict

Hivatkozások

Wikipédia: L-BFGS

Wikipedia: Logisztikai regresszió

L1-Regularized Log-Linear modellek skálázható betanítása

Tesztfuttatás – L1 és L2– Gépi tanulás rendszeresítése

Bináris besorolási példa

'''
Binary Classification.
'''
import numpy
import pandas
from microsoftml import rx_logistic_regression, 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)

model = rx_logistic_regression(
    formula=" isCase ~ age + parity + education + spontaneous + induced ",
    data=data_train)

print(model.coef_)
    
# RuntimeError: The type (RxTextData) for file is not supported.
score_ds = rx_predict(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))

Kimenet:

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.001, Transform Time: 0
Beginning processing data.
Beginning processing data.
Rows Read: 186, Read Time: 0, Transform Time: 0
Beginning processing data.
LBFGS multi-threading will attempt to load dataset into memory. In case of out-of-memory issues, turn off multi-threading by setting trainThreads to 1.
Beginning optimization
num vars: 6
improvement criterion: Mean Improvement
L1 regularization selected 5 of 6 weights.
Not training a calibrator because it is not needed.
Elapsed time: 00:00:00.0646405
Elapsed time: 00:00:00.0083991
OrderedDict([('(Bias)', -1.2366217374801636), ('spontaneous', 1.9391206502914429), ('induced', 0.7497404217720032), ('parity', -0.31517016887664795), ('age', -3.162723260174971e-06)])
Beginning processing data.
Rows Read: 62, Read Time: 0, Transform Time: 0
Beginning processing data.
Elapsed time: 00:00:00.0287290
Finished writing 62 rows.
Writing completed.
Rows Read: 5, Total Rows Processed: 5, Total Chunk Time: 0.001 seconds 
  isCase PredictedLabel     Score  Probability
0  False          False -1.341681     0.207234
1   True           True  0.597440     0.645070
2  False           True  0.544912     0.632954
3  False          False -1.289152     0.215996
4  False          False -1.019339     0.265156

Többosztályos besorolási példa

'''
MultiClass Classification
'''
import numpy
import pandas
from microsoftml import rx_logistic_regression, rx_predict
from revoscalepy.etl.RxDataStep import rx_data_step
from microsoftml.datasets.datasets import get_dataset

iris = get_dataset("iris")

import sklearn
if sklearn.__version__ < "0.18":
    from sklearn.cross_validation import train_test_split
else:
    from sklearn.model_selection import train_test_split

irisdf = iris.as_df()
irisdf["Species"] = irisdf["Species"].astype("category")
data_train, data_test, y_train, y_test = train_test_split(irisdf, irisdf.Species)

model = rx_logistic_regression(
    formula="  Species ~ Sepal_Length + Sepal_Width + Petal_Length + Petal_Width ",
    method="multiClass",
    data=data_train)

print(model.coef_)
    
# RuntimeError: The type (RxTextData) for file is not supported.
score_ds = rx_predict(model, data=data_test,
                     extra_vars_to_write=["Species", "Score"])
                     
# Print the first five rows
print(rx_data_step(score_ds, number_rows_read=5))

Kimenet:

Automatically adding a MinMax normalization transform, use 'norm=Warn' or 'norm=No' to turn this behavior off.
Beginning processing data.
Rows Read: 112, Read Time: 0, Transform Time: 0
Beginning processing data.
Beginning processing data.
Rows Read: 112, Read Time: 0, Transform Time: 0
Beginning processing data.
Beginning processing data.
Rows Read: 112, Read Time: 0, Transform Time: 0
Beginning processing data.
LBFGS multi-threading will attempt to load dataset into memory. In case of out-of-memory issues, turn off multi-threading by setting trainThreads to 1.
Beginning optimization
num vars: 15
improvement criterion: Mean Improvement
L1 regularization selected 9 of 15 weights.
Not training a calibrator because it is not needed.
Elapsed time: 00:00:00.0493224
Elapsed time: 00:00:00.0080558
OrderedDict([('setosa+(Bias)', 2.074636697769165), ('versicolor+(Bias)', 0.4899507164955139), ('virginica+(Bias)', -2.564580202102661), ('setosa+Petal_Width', -2.8389241695404053), ('setosa+Petal_Length', -2.4824044704437256), ('setosa+Sepal_Width', 0.274869441986084), ('versicolor+Sepal_Width', -0.2645561397075653), ('virginica+Petal_Width', 2.6924400329589844), ('virginica+Petal_Length', 1.5976412296295166)])
Beginning processing data.
Rows Read: 38, Read Time: 0, Transform Time: 0
Beginning processing data.
Elapsed time: 00:00:00.0331861
Finished writing 38 rows.
Writing completed.
Rows Read: 5, Total Rows Processed: 5, Total Chunk Time: 0.001 seconds 
      Species   Score.0   Score.1   Score.2
0   virginica  0.044230  0.364927  0.590843
1      setosa  0.767412  0.210586  0.022002
2      setosa  0.756523  0.221933  0.021543
3      setosa  0.767652  0.211191  0.021157
4  versicolor  0.116369  0.498615  0.385016