Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Logistická regrese strojového učení
Usage
rxLogisticRegression(formula = NULL, data, type = c("binary", "multiClass"),
l2Weight = 1, l1Weight = 1, optTol = 1e-07, memorySize = 20,
initWtsScale = 0, maxIterations = 2147483647, showTrainingStats = FALSE,
sgdInitTol = 0, trainThreads = NULL, denseOptimizer = FALSE,
normalize = "auto", mlTransforms = NULL, mlTransformVars = NULL,
rowSelection = NULL, transforms = NULL, transformObjects = NULL,
transformFunc = NULL, transformVars = NULL, transformPackages = NULL,
transformEnvir = NULL, blocksPerRead = rxGetOption("blocksPerRead"),
reportProgress = rxGetOption("reportProgress"), verbose = 1,
computeContext = rxGetOption("computeContext"),
ensemble = ensembleControl(), ...)
Argumenty
formula
Vzorec popsaný v rxFormula. Interakční termíny a F() nejsou v MicrosoftML aktuálně podporovány.
data
Objekt datového zdroje nebo znakový řetězec specifikující soubor .xdf nebo objekt datového rámce.
type
Řetězec znaku, který určuje typ logistické regrese: "binary" pro výchozí logistickou regresi binární klasifikace nebo "multi" pro multinomické logistické regrese.
l2Weight
Hmotnost regularizace L2. Jeho hodnota musí být větší nebo rovna 0 a výchozí hodnota je nastavena na 1.
l1Weight
Hmotnost regularizace L1. Jeho hodnota musí být větší nebo rovna 0 a výchozí hodnota je nastavena na 1.
optTol
Prahová hodnota pro konvergenci optimalizátoru. Pokud je zlepšení mezi iteracemi menší než prahová hodnota, algoritmus se zastaví a vrátí aktuální model. Menší hodnoty jsou pomalejší, ale přesnější. Výchozí hodnota je 1e-07.
memorySize
Velikost paměti pro L-BFGS určující počet minulých pozic a přechodů, které se mají uložit pro výpočet dalšího kroku. Tento parametr optimalizace omezuje velikost paměti, která se používá k výpočtu velikosti a směru dalšího kroku. Když zadáte méně paměti, trénování je rychlejší, ale méně přesné. Musí být větší nebo rovno 1 a výchozí hodnota je 20.
initWtsScale
Nastaví průměr počátečních hmotností, který určuje rozsah, ze kterého jsou hodnoty nakresleny pro počáteční váhy. Tyto váhy se inicializují náhodně z tohoto rozsahu. Pokud je například zadán dprůměr , pak jsou váhy rovnoměrně rozděleny mezi -d/2 a d/2. Výchozí hodnota je 0, která určuje, že všechny váhy jsou inicializovány na 0.
maxIterations
Nastaví maximální počet iterací. Po tomto počtu kroků se algoritmus zastaví, i když nesplňuje kritéria konvergence.
showTrainingStats
Zadejte TRUE , aby se zobrazily statistiky trénovacích dat a vytrénovaného modelu, jinak FALSE. Výchozí hodnota je FALSE. Pro další informace o modelové statistice viz summary.mlModel.
sgdInitTol
Nastavte na číslo větší než 0 pro vyhledání počátečních parametrů pomocí stochastického gradientního sestupu (SGD). Množina nenulových hodnot určuje směroná odchylka, která se používá k určení konvergence. Výchozí hodnota určuje 0 , že SGD se nepoužívá.
trainThreads
Počet vláken, která se mají použít při trénování modelu. To by mělo být nastavené na počet jader na počítači. Všimněte si, že vícevláknové ověřování L-BFGS se pokouší načíst datovou sadu do paměti. Vpřípaděch trainThreads1 Pokud NULL je počet vláken určen interně. Výchozí hodnota je NULL.
denseOptimizer
Pokud TRUE, vynutí densifikace vnitřních optimalizačních vektorů. Pokud FALSEumožňuje optimalizátor logistické regrese používat zhuštěné nebo zhuštěné vnitřní stavy, jak je najde. Nastavení denseOptimizer , které vyžaduje, aby TRUE interní optimalizátor používal hustý vnitřní stav, který může pomoci zmírnit zatížení uvolňování paměti pro některé odrůdy větších problémů.
normalize
Určuje typ použité automatické normalizace:
-
"auto": Pokud je potřeba normalizace, provede se automaticky. Toto je výchozí volba. -
"no": Neprovádí se normalizace. -
"yes": normalizace se provádí. -
"warn": Pokud je potřeba normalizace, zobrazí se zpráva s upozorněním, ale normalizace se neprovede.
Normalizace rescales disparate data ranges to a standard scale. Škálování funkcí zajišťuje, že vzdálenosti mezi datovými body jsou proporcionální a umožňují mnohem rychleji konvergovat různé metody optimalizace, jako je gradientní sestup. Při normalizaciMaxMinse použije normalizátor. Normalizuje hodnoty v intervalu [a, b], kde-1 <= a <= 0a0 <= b <= 1a .b - a = 1Tento normalizátor zachovává sparsity tím, že namapuje nulu na nulu.
mlTransforms
Specifikuje seznam transformací MicrosoftML, které mají být provedeny na datech před trénováním nebo NULL pokud se žádné transformace neprovádějí. Viz featurizeText, categorical, and categoricalHash pro transformace, které jsou podporovány. Tyto transformace se provádějí po jakýchkoli specifikovaných R transformacích. Výchozí hodnota je NULL.
mlTransformVars
Specifikuje vektor znaků s názvy proměnných, které mají být použity v mlTransformsNULL nebo pokud žádné nebudou použity. Výchozí hodnota je NULL.
rowSelection
Určuje řádky (pozorování) ze sady dat, které má model používat s názvem logické proměnné ze sady dat (v uvozovkách) nebo logickým výrazem pomocí proměnných v sadě dat. Například použije pouze pozorování, rowSelection = "old" kde je hodnota proměnné old .TRUE
rowSelection = (age > 20) & (age < 65) & (log(income) > 10) používá pouze pozorování, ve kterých je hodnota age proměnné mezi 20 a 65 a hodnotou logincome proměnné je větší než 10. Výběr řádku se provede po zpracování všech transformací dat (viz argumenty transforms nebo transformFunc). Stejně jako u všech výrazů lze definovat rowSelection i mimo volání funkce pomocí výrazové funkce.
transforms
Výraz tvaru list(name = expression, ``...) , který reprezentuje první kolo transformací proměnných. Stejně jako u všech výrazů lze ( transforms nebo rowSelection) definovat mimo volání funkce pomocí výrazové funkce.
transformObjects
Pojmenovaný seznam obsahující objekty, na které lze odkazovat pomocí transforms, transformsFunca rowSelection.
transformFunc
Proměnná transformační funkce. Podrobnosti viz rxTransform.
transformVars
Znakový vektor vstupních proměnných množiny dat potřebných pro transformační funkci. Podrobnosti viz rxTransform.
transformPackages
Znakový vektor specifikující další balíčky R (mimo ty specifikované v rxGetOption("transformPackages")), které mají být k dispozici a předinstalovány pro použití v transformačních funkcích proměnných. Například ty explicitně definované v RevoScaleR fungují prostřednictvím jejich transforms a argumentů nebo transformFunc ty, které jsou implicitně definovány pomocí jejich formula or rowSelection argumentů. Argument transformPackages může být NULLtaké , což znamená, že žádné balíčky mimo nejsou rxGetOption("transformPackages") předem načtené.
transformEnvir
Uživatelem definované prostředí, které bude sloužit jako nadřazené všem prostředím vyvinutým interně a které se používají k transformaci proměnných dat. Pokud transformEnvir = NULL, místo toho se použije nové "hash" prostředí s rodičem baseenv() .
blocksPerRead
Určuje početblokůch
reportProgress
Celočíselná hodnota, která určuje úroveň generování sestav o průběhu zpracování řádků:
-
0: Nebyl hlášen žádný průběh. -
1: Počet zpracovaných řádků se vytiskne a aktualizuje. -
2: Jsou hlášeny řádky zpracovávané a časování. -
3: Jsou hlášeny řádky zpracovávané a všechna časování.
verbose
Celočíselná hodnota, která určuje požadovanou velikost výstupu. Pokud 0se během výpočtů nevytiskne žádný podrobný výstup. Celočíselné hodnoty, od 1 které se 4 poskytují rostoucí množství informací.
computeContext
Nastavuje kontext, ve kterém jsou výpočty prováděny, specifikovaný platným RxComputeContext. V současnosti jsou podporovány lokální a RxInSqlServer výpočetní kontexty.
ensemble
Kontrolní parametry pro přemíscení
...
Další argumenty budou předány přímo Microsoft Compute Engine.
Podrobnosti
Logistická regrese je klasifikační metoda, která se používá k predikci hodnoty proměnné závislé na kategoriích z jejího vztahu k jedné nebo více nezávislých proměnných, u kterých se předpokládá logistická distribuce. Pokud má závislá proměnná pouze dvě možné hodnoty (úspěch/selhání), pak logistická regrese je binární. Pokud má závislá proměnná více než dvě možné hodnoty (výsledky diagnostického testu krevního typu), je logistická regrese multinomická.
Technika optimalizace používaná pro rxLogisticRegression omezenou paměť Broyden-Fletcher-Goldfarb-Shanno (L-BFGS). Oba L-BFGS i běžné algoritmy BFGS používají kvazi-Newtonovské metody k odhadu výpočetně náročné Hessian matice v rovnici používané Newtonovou metodou k výpočtu kroků. Aproximace L-BFGS ale používá k výpočtu dalšího kroku pouze omezené množství paměti, takže je obzvláště vhodná pro problémy s velkým počtem proměnných. Parametr memorySize určuje počet minulých pozic a přechodů, které se mají uložit pro použití ve výpočtu dalšího kroku.
Tento learner může používat elastické regularizace net: lineární kombinace L1 (laso) a L2 (ridge) regularizace. Regularizace je metoda, která může vykreslit špatně posedlé problémy tím, že uloží omezení, která poskytují informace k doplnění dat a které brání přeurčení tím, že modely s extrémními hodnotami koeficientu. To může zlepšit generalizaci modelu získané výběrem optimální složitosti v kompromisu odchylky. Regularizace funguje tak, že k chybě hypotézy přidá penále, která je přidružená k hodnotám koeficientu. Přesný model s extrémními hodnotami koeficientů by byl penalizován více, ale méně přesný model s konzervativnějšími hodnotami by byl penalizován méně. Regularizace L1 a L2 mají různé účinky a použití, které se doplňují v určitých ohledech.
l1Weight: lze použít u řídkých modelů při práci s vysoce dimenzionálními daty. Táhne malé váhy spojené s funkcemi, které jsou relativně nepodstatné, směrem k nule.
l2Weight: je vhodnější pro data, která nejsou řídká. Táhne velké váhy směrem k nule.
Přidání penalizace hřebene k regularizaci překonává některé z laso
omezení. Může zlepšit prediktivní přesnost, například když je počet prediktorů větší než velikost vzorku.
Pokud x = l1Weight a y = l2Weight, ax + by = c definuje lineární rozsah regulárních termínů. Výchozí hodnoty x a y jsou oba 1. Agresivní regularizace může poškodit prediktivní kapacitu vyloučením důležitých proměnných z modelu. Proto je volba optimálních hodnot pro parametry regularizace důležitá pro výkon modelu logistické regrese.
Hodnota
rxLogisticRegression: Objekt rxLogisticRegression s trénovaným modelem.
LogisticReg: Specifikační objekt třídy maml pro Logistic Reg trenéra.
Poznámky
Tento algoritmus se pokusí načíst celou datovou sadu do paměti, když trainThreads > 1 (více vláken).
Autoři/autori
Microsoft CorporationMicrosoft Technical Support
References
Training of L1-Regularized Log-Linear Models
and L2 Regularization for Machine Learning
Viz také
rxFastTrees, rxFastForest, rxFastLinear, rxNeuralNet, rxOneClassSvm, featurizeText, categorical, categoricalHash, rxPredict.mlModel.
Příklady
# Estimate a logistic regression model
logitModel <- rxLogisticRegression(isCase ~ age + parity + education + spontaneous + induced,
transforms = list(isCase = case == 1),
data = infert)
# Print a summary of the model
summary(logitModel)
# Score to a data frame
scoreDF <- rxPredict(logitModel, data = infert,
extraVarsToWrite = "isCase")
# Compute and plot the Radio Operator Curve and AUC
roc1 <- rxRoc(actualVarName = "isCase", predVarNames = "Probability", data = scoreDF)
plot(roc1)
rxAuc(roc1)
#######################################################################################
# Multi-class logistic regression
testObs <- rnorm(nrow(iris)) > 0
testIris <- iris[testObs,]
trainIris <- iris[!testObs,]
multiLogit <- rxLogisticRegression(
formula = Species~Sepal.Length + Sepal.Width + Petal.Length + Petal.Width,
type = "multiClass", data = trainIris)
# Score the model
scoreMultiDF <- rxPredict(multiLogit, data = testIris,
extraVarsToWrite = "Species")
# Print the first rows of the data frame with scores
head(scoreMultiDF)
# Look at confusion matrix
table(scoreMultiDF$Species, scoreMultiDF$PredictedLabel)
# Look at the observations with incorrect predictions
badPrediction = scoreMultiDF$Species != scoreMultiDF$PredictedLabel
scoreMultiDF[badPrediction,]