Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
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
Logistisk regression för maskininlärning
Detaljer
Logistisk regression är en klassificeringsmetod som används för att förutsäga värdet för en kategorisk beroende variabel från relationen till en eller flera oberoende variabler som antas ha en logistisk distribution. Om den beroende variabeln bara har två möjliga värden (lyckade/misslyckade) är den logistiska regressionen binär. Om den beroende variabeln har fler än två möjliga värden (blodtyp givet diagnostiska testresultat) är den logistiska regressionen multinomiell.
Optimeringstekniken som används för rx_logistic_regression är det begränsade minnet Broyden-Fletcher-Goldfarb-Shanno (L-BFGS). Både L-BFGS- och vanliga BFGS-algoritmer använder kvasi-newtonska metoder för att uppskatta den beräkningsintensiva hessiska matrisen i den ekvation som används av Newtons metod för att beräkna steg. Men L-BFGS-uppskattningen använder bara en begränsad mängd minne för att beräkna nästa stegriktning, så att den är särskilt lämplig för problem med ett stort antal variabler. Parametern memory_size anger antalet tidigare positioner och toningar som ska lagras för användning i beräkningen av nästa steg.
Den här eleven kan använda elastisk net regularisering: en linjär kombination av L1-regulariseringar (lasso) och L2 (ås). Regularisering är en metod som kan göra ett illa ställt problem mer lätthanterligt genom att införa begränsningar som ger information för att komplettera data och som förhindrar överanpassning genom att straffa modeller med extrema koefficientvärden. Detta kan förbättra generaliseringen av modellen som lärts genom att välja den optimala komplexiteten i kompromissen mellan bias och varians. Regularisering fungerar genom att lägga till straffvärdet som är associerat med koefficientvärden i hypotesens fel. En korrekt modell med extrema koefficientvärden skulle straffas mer, men en mindre exakt modell med mer konservativa värden skulle straffas mindre. L1- och L2-regularisering har olika effekter och användningsområden som kompletterar varandra i vissa avseenden.
l1_weight: kan tillämpas på glesa modeller när du arbetar med högdimensionella data. Den hämtar små vikter associerade funktioner som är relativt oviktiga mot 0.l2_weight: är att föredra för data som inte är glesa. Den drar stora vikter mot noll.
Att lägga till åsstraffet till regulariseringen övervinner några av lassos begränsningar. Det kan förbättra dess förutsägelsenoggrannhet, till exempel när antalet prediktorer är större än urvalsstorleken.
If x = l1_weight och y = l2_weight, ax + by = c definierar det linjära intervallet för regulariseringstermerna. Standardvärdena för x och y är båda 1. En aggressiv regularisering kan skada förutsägelsekapaciteten genom att undanta viktiga variabler från modellen. Därför är det viktigt att välja de optimala värdena för regulariseringsparametrarna för prestanda för den logistiska regressionsmodellen.
Arguments
formel
Formeln som beskrivs i revoscalepy.rx_formula Interaktionsvillkor och F() stöds för närvarande inte i microsoftml.
data
Ett datakällobjekt eller en teckensträng som anger en .xdf-fil eller ett dataramobjekt.
method
En teckensträng som anger typen av logistisk regression: "binary" för standardlogikregression för binär klassificering eller "multiClass" för multinom logistisk regression.
l2_weight
L2-regulariseringsvikten. Dess värde måste vara större än eller lika med 0 och standardvärdet är inställt på 1.
l1_weight
L1-regulariseringsvikten. Dess värde måste vara större än eller lika med 0 och standardvärdet är inställt på 1.
opt_tol
Tröskelvärde för optimerarkonvergens. Om förbättringen mellan iterationer är mindre än tröskelvärdet stoppas algoritmen och returnerar den aktuella modellen. Mindre värden är långsammare, men mer exakta.
Standardvärdet är 1e-07.
memory_size
Minnesstorlek för L-BFGS, som anger antalet tidigare positioner och toningar som ska lagras för beräkningen av nästa steg. Den här optimeringsparametern begränsar mängden minne som används för att beräkna omfattningen och riktningen för nästa steg. När du anger mindre minne är träningen snabbare men mindre exakt. Måste vara större än eller lika med 1 och standardvärdet är 20.
max_iterations
Anger det maximala antalet iterationer. Efter det här antalet steg stoppas algoritmen även om den inte uppfyller konvergenskriterierna.
show_training_stats
Ange True för att visa statistik för träningsdata och den tränade modellen, Falseannars . Standardvärdet är False. Mer information om modellstatistik finns i summary.ml_model().
sgd_init_tol
Ange till ett tal större än 0 för att använda SGD (Stochastic Gradient Descent) för att hitta de inledande parametrarna. En värdeuppsättning som inte är noll anger den tolerans som SGD använder för att fastställa konvergens.
Standardvärdet anger 0 att SGD inte används.
init_wts_diameter
Anger den inledande viktdiametern som anger det intervall från vilket värden ritas för de initiala vikterna. Dessa vikter initieras slumpmässigt från det här intervallet. Om diametern till exempel anges som d, fördelas vikterna jämnt mellan -d/2 och d/2. Standardvärdet är 0, som anger att alla vikter initieras till 0.
train_threads
Antalet trådar som ska användas för att träna modellen.
Detta bör anges till antalet kärnor på datorn. Observera att L-BFGS försöker läsa in datamängden i minnet. Om det uppstår problem med att minnet är slut ställer du in train_threads1 på att inaktivera multitrådning. Om Ingen bestäms antalet trådar som ska användas internt. Standardvärdet är Ingen.
dense_optimizer
Om Truetvingar fram förtätning av de interna optimeringsvektorerna. Om Falseaktiverar aktiverar den logistiska regressionsoptimeraren använder glesa eller täta interna tillstånd som det finner lämpligt.
Inställningen denseOptimizer kräver att True den interna optimeraren använder ett tätt internt tillstånd, vilket kan hjälpa till att minska belastningen på skräpinsamlaren för vissa sorter av större problem.
Normalisera
Anger vilken typ av automatisk normalisering som används:
"Auto": Om normalisering behövs utförs den automatiskt. Det här är standardalternativet."No": ingen normalisering utförs."Yes": normalisering utförs."Warn": Om normalisering behövs visas ett varningsmeddelande, men normaliseringen utförs inte.
Normaliseringen skalar om olika dataintervall till en standardskala. Funktionsskalning försäkrar att avstånden mellan datapunkter är proportionella och gör det möjligt för olika optimeringsmetoder som gradient descent att konvergera mycket snabbare. Om normalisering utförs används en MaxMin normaliserare. Det normaliserar värden i ett intervall [a, b] var -1 <= a <= 0 och 0 <= b <= 1 och b - a = 1. Den här normaliseraren bevarar gleshet genom att mappa noll till noll.
ml_transforms
Anger en lista över MicrosoftML-transformeringar som ska utföras på data före träning eller Ingen om inga transformeringar ska utföras. Se featurize_text, categoricaloch categorical_hash, för transformeringar som stöds.
Dessa transformeringar utförs efter alla angivna Python-transformeringar.
Standardvärdet är Ingen.
ml_transform_vars
Anger en teckenvektor med variabelnamn som ska användas i ml_transforms eller Ingen om ingen ska användas.
Standardvärdet är Ingen.
row_selection
STÖDS INTE. Anger raderna (observationer) från datauppsättningen som ska användas av modellen med namnet på en logisk variabel från datauppsättningen (inom citattecken) eller med ett logiskt uttryck med variabler i datauppsättningen. Till exempel:
row_selection = "old"använder endast observationer där värdet för variabelnoldärTrue.row_selection = (age > 20) & (age < 65) & (log(income) > 10)använder endast observationer där variabelnsagevärde är mellan 20 och 65 och värdet för variabelnlogincomeär större än 10.
Radmarkeringen utförs efter bearbetning av datatransformeringar (se argumenten transforms eller transform_function). Som med alla uttryck kan definieras utanför funktionsanropet row_selection med hjälp av expression funktionen.
Förvandlar
STÖDS INTE. Ett uttryck för formuläret som representerar den första omgången av variabeltransformeringar. Precis som med alla uttryck kan (eller row_selection) definieras utanför funktionsanropet transforms med hjälp expression av funktionen.
transform_objects
STÖDS INTE. En namngiven lista som innehåller objekt som kan refereras till av transforms, transform_functionoch row_selection.
transform_function
Funktionen för variabeltransformeringen.
transform_variables
En teckenvektor för indatauppsättningsvariabler som behövs för transformeringsfunktionen.
transform_packages
STÖDS INTE. En teckenvektor som anger ytterligare Python-paket (utanför de som anges i RxOptions.get_option("transform_packages")) som ska göras tillgängliga och förinlästa för användning i variabeltransformeringsfunktioner.
Till exempel de som uttryckligen definieras i revoscalepy-funktioner via deras transforms argument och transform_function argument eller de som definieras implicit via deras formula eller row_selection argument. Argumentet transform_packages kan också vara Ingen, vilket indikerar att inga paket utanför RxOptions.get_option("transform_packages") är förinstallerade.
transform_environment
STÖDS INTE. En användardefinierad miljö som fungerar som överordnad till alla miljöer som utvecklats internt och används för variabel datatransformering.
Om transform_environment = Noneanvänds en ny "hash"-miljö med överordnad revoscalepy.baseenv i stället.
blocks_per_read
Anger antalet block som ska läsas för varje segment av data som läss från datakällan.
report_progress
Ett heltalsvärde som anger rapporteringsnivån för radbearbetningsförloppet:
0: Inga förlopp rapporteras.1: Antalet bearbetade rader skrivs ut och uppdateras.2: Rader som bearbetas och tidsinställningar rapporteras.3: bearbetade rader och alla tidsinställningar rapporteras.
verbose
Ett heltalsvärde som anger önskad mängd utdata.
Om 0skrivs inga utförliga utdata ut under beräkningar. Heltalsvärden från 1 för att 4 ge ökande mängder information.
compute_context
Anger kontexten där beräkningar körs, som anges med en giltig revoscalepy. RxComputeContext. För närvarande lokal och revoscalepy. RxInSqlServer-beräkningskontexter stöds.
Ensemble
Kontrollparametrar för montering.
Retur
Ett LogisticRegression objekt med den tränade modellen.
Anmärkning
Den här algoritmen försöker läsa in hela datamängden i minnet när train_threads > 1 (flera trådar).
Se även
Referenser
Wikipedia: Logistisk regression
Skalbar träning av L1-Regularized Log-Linear modeller
Testkörning – L1- och L2-regularisering för Machine Learning
Exempel på binär klassificering
'''
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))
Utdata:
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
Exempel på MultiClass-klassificering
'''
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))
Utdata:
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