Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Usage
microsoftml.rx_fast_linear()
Description
En Stochastic Dual Coordinate Ascent (SDCA) optimeringstränare för linjär binär klassificering och regression.
Detaljer
rx_fast_linear är en tränare baserad på Stochastic Dual Coordinate Ascent (SDCA)-metoden, en toppmodern optimeringsteknik för konvexa målfunktioner. Algoritmen kan skalas för användning på stora datamängder utanför minnet tack vare en semi-asynkroniserad implementation som stödjer multitrådning.
Konvergens underskrivs genom att periodiskt upprätthålla synkronisering mellan primal- och dualuppdateringar i en separat tråd. Flera val av förlustfunktioner erbjuds också. SDCA-metoden kombinerar flera av de bästa egenskaperna och kapaciteterna hos logistisk regression och SVM-algoritmer.
För mer information om SDCA, se källhänvisningarna i referensavsnittet.
Traditionella optimeringsalgoritmer, såsom stokastisk gradientnedstigning (SGD), optimerar den empiriska förlustfunktionen direkt. SDCA väljer istället en annan metod som optimerar det dubbla problemet. Den duala förlustfunktionen parametriseras med vikter per exempel. I varje iteration, när ett träningsexempel från träningsdatamängden läses, justeras motsvarande exempelvikt så att dual förlust-funktionen optimeras med avseende på det aktuella exemplet. Ingen inlärningshastighet behövs av SDCA för att bestämma steglängd, vilket krävs av olika gradientnedstigningsmetoder.
rx_fast_linear stöder binär klassificering med tre typer av förlustfunktioner för närvarande: Logaritmförlust, gångjärnsförlust och slätad gångjärnsförlust.
Linjär regression stödjer också med kvadratförlustfunktion. Elastisk nätregularisering kan specificeras av och-parametrarna l2_weightl1_weight . Observera att har l2_weight en effekt på konvergenshastigheten. Generellt gäller att ju större , l2_weightdesto snabbare konvergerar SDCA.
Observera att rx_fast_linear är en stokastisk och strömmande optimeringsalgoritm. Resultaten beror på ordningen i träningsdatan. För reproducerbara resultat rekommenderas att man ställer shuffle in till False och train_threads till 1.
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
Specificerar modelltypen med en teckensträng: "binary" för standardbinär klassificering eller "regression" för linjär regression.
loss_function
Specificerar den empiriska förlustfunktionen som ska optimeras. För binär klassificering finns följande val:
log_loss: Stockförlusten. Det här är standardinställningen.hinge_loss: SVM-gångjärnsförlusten. Dess parameter representerar marginalstorleken.smooth_hinge_loss: Den utjämnade gångjärnsförlusten. Dess parameter representerar utjämningskonstanten.
För linjär regression stöds kvadraterad förlust squared_loss för tillfället. När denna parameter sätts till Ingen beror dess standardvärde på typen av inlärning:
log_lossför binär klassificering.squared_lossför linjär regression.
Följande exempel ändrar loss_function till hinge_loss: rx_fast_linear(..., loss_function=hinge_loss()).
l1_weight
Specificerar L1-regulariseringsvikten. Värdet måste vara antingen icke-negativt eller Ingen. Om None anges beräknas det faktiska värdet automatiskt baserat på datamängden. Ingen är standardvärdet.
l2_weight
Specificerar L2-regulariseringsvikten. Värdet måste vara antingen icke-negativt eller Ingen. Om None anges beräknas det faktiska värdet automatiskt baserat på datamängden. Ingen är standardvärdet.
train_threads
Specificerar hur många samtidiga trådar som kan användas för att köra algoritmen. När denna parameter sätts till Ingen bestäms antalet använda trådar baserat på antalet logiska processorer tillgängliga för processen samt dataens gleshet. Ställ in den på 1 att köra algoritmen i en enda tråd.
convergence_tolerance
Specificerar toleranströskeln som används som konvergenskriterium. Det måste vara mellan 0 och 1. Standardvärdet är 0.1. Algoritmen anses ha konvergerat om det relativa dualitetsgapet, som är förhållandet mellan dualitetsgapet och den primala förlusten, ligger under den specificerade konvergenstoleransen.
max_iterations
Anger en övre gräns för antalet träningsiterationer. Denna parameter måste vara positiv eller Ingen. Om None anges beräknas det faktiska värdet automatiskt baserat på datamängden. Varje iteration kräver en fullständig genomgång av träningsdatan. Träningen avslutas när det totala antalet iterationer når den angivna övre gränsen eller när förlustfunktionen konvergerar, beroende på vad som inträffar tidigare.
blanda
Specificerar om träningsdata ska blandas. Inställt True på att blanda datan; False inte att blanda. Standardvärdet är True. SDCA är en stokastisk optimeringsalgoritm. Om blandning är aktiverad blandas träningsdata vid varje iteration.
check_frequency
Antalet iterationer efter vilka förlustfunktionen beräknas och kontrolleras för att avgöra om den har konvergerat. Det angivna värdet måste vara ett positivt heltal eller Ingen. Om ingen är det, beräknas det faktiska värdet automatiskt baserat på datamängden. Annars, till exempel, om checkFrequency = 5 specificeras , beräknas förlustfunktionen och konvergens kontrolleras var femte iteration. Beräkningen av förlustfunktionen kräver en separat komplett genomgång av träningsdatan.
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. Ett 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 transforms) definieras utanför funktionsanropet row_selection 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.
omständig
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 FastLinear objekt med den tränade modellen.
Anmärkning
Denna algoritm är multitrådad och kommer inte att försöka ladda hela datamängden i minnet.
References
Uppskalning av stokastisk dubbelkoordinatuppstigning
Stokastiska dualkoordinatuppstigningsmetoder för regulariserad förlustminimering
Exempel på binär klassificering
'''
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))
Resultat:
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
Regressionsexempel
'''
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))
Resultat:
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
Förlustfunktioner
Relaterat innehåll
- microsoftml.hinge_loss: Funktion för gångjärnsförlust
- microsoftml.log_loss: Funktion för loggförlust
- microsoftml.smoothed_hinge_loss: Funktion för utjämnad gångjärnsförlust
- microsoftml.squared_loss: Funktion för kvadratförlust
- microsoftml.rx_predict: Poäng med hjälp av en Microsoft-maskininlärningsmodell