rxLogisticRegression: Logistická regrese

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 normalizaci MaxMin se použije normalizátor. Normalizuje hodnoty v intervalu [a, b], kde -1 <= a <= 0a 0 <= b <= 1 a .b - a = 1 Tento 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

Wikipedia: L-BFGS

regression

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,]