rxLogisticRegression: Regressione Logistica

Regressione logistica di Machine Learning

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(), ...)

Arguments

formula

La formula come descritta in rxFormula. I termini di interazione e F() non sono attualmente supportati nel MicrosoftML.

data

Un oggetto sorgente dati o una stringa di caratteri che specifica un file .xdf o un oggetto data frame.

type

Stringa di caratteri che specifica il tipo di regressione logistica: "binary" per la regressione logistica di classificazione binaria predefinita o "multi" per la regressione logistica multinomiale.

l2Weight

Peso di regolarizzazione L2. Il valore deve essere maggiore o uguale a 0 e il valore predefinito è impostato su 1.

l1Weight

Peso di regolarizzazione L1. Il valore deve essere maggiore o uguale a 0 e il valore predefinito è impostato su 1.

optTol

Valore soglia per la convergenza dell'utilità di ottimizzazione. Se il miglioramento tra iterazioni è inferiore alla soglia, l'algoritmo si arresta e restituisce il modello corrente. I valori più piccoli sono più lenti, ma più accurati. Il valore predefinito è 1e-07.

memorySize

Dimensioni della memoria per L-BFGS, specificando il numero di posizioni e sfumature precedenti da archiviare per il calcolo del passaggio successivo. Questo parametro di ottimizzazione limita la quantità di memoria usata per calcolare la grandezza e la direzione del passaggio successivo. Quando si specifica meno memoria, il training è più veloce ma meno accurato. Deve essere maggiore o uguale a 1 e il valore predefinito è 20.

initWtsScale

Imposta il diametro iniziale dei pesi che specifica l'intervallo da cui vengono disegnati i valori per i pesi iniziali. Questi pesi vengono inizializzati in modo casuale dall'interno di questo intervallo. Ad esempio, se il diametro viene specificato come d, i pesi vengono distribuiti uniformemente tra -d/2 e d/2. Il valore predefinito è 0, che specifica che tutti i pesi vengono inizializzati su 0.

maxIterations

Imposta il numero massimo di iterazioni. Dopo questo numero di passaggi, l'algoritmo si arresta anche se non ha soddisfatto i criteri di convergenza.

showTrainingStats

Specificare per visualizzare TRUE le statistiche dei dati di training e del modello sottoposto a training; in caso contrario, FALSE. Il valore predefinito è FALSE. Per ulteriori informazioni sulle statistiche dei modelli, consulta summary.mlModel.

sgdInitTol

Impostare su un numero maggiore di 0 per usare La discesa sfumata stocastica (SGD) per trovare i parametri iniziali. Un set di valori diverso da zero specifica la tolleranza utilizzata da SGD per determinare la convergenza. Il valore 0 predefinito specifica che SGD non viene usato.

trainThreads

Numero di thread da usare nel training del modello. Deve essere impostato sul numero di core nel computer. Si noti che il multithreading L-BFGS tenta di caricare il set di dati in memoria. In caso di problemi di memoria insufficiente, impostare su trainThreads1 per disattivare il multithreading. Se NULL il numero di thread da usare è determinato internamente. Il valore predefinito è NULL.

denseOptimizer

Se TRUE, forza la densificazione dei vettori di ottimizzazione interna. Se FALSE, abilita l'utilità di ottimizzazione per la regressione logistica usa stati interni di tipo sparse o densi in quanto trova appropriato. L'impostazione denseOptimizer di su TRUE richiede che l'ottimizzatore interno usi uno stato interno denso, che può contribuire ad alleviare il carico nel Garbage Collector per alcune varietà di problemi più grandi.

normalize

Specifica il tipo di normalizzazione automatica utilizzata:

  • "auto": se è necessaria la normalizzazione, viene eseguita automaticamente. Questa è la scelta predefinita.
  • "no": non viene eseguita alcuna normalizzazione.
  • "yes": viene eseguita la normalizzazione.
  • "warn": se è necessaria la normalizzazione, viene visualizzato un messaggio di avviso, ma la normalizzazione non viene eseguita.
    La normalizzazione ridimensiona intervalli di dati diversi a una scala standard. La scalabilità delle funzionalità garantisce che le distanze tra i punti dati siano proporzionali e consentano a vari metodi di ottimizzazione, ad esempio la discesa del gradiente, di convergere molto più velocemente. Se viene eseguita la normalizzazione, viene usato un MaxMin normalizzatore. Normalizza i valori in un intervallo [a, b] dove -1 <= a <= 0e 0 <= b <= 1 e b - a = 1. Questo normalizzatore mantiene la spazità eseguendo il mapping di zero a zero.

mlTransforms

Specifica un elenco di trasformazioni MicrosoftML da eseguire sui dati prima dell'addestramento o NULL se non devono essere eseguite trasformazioni. Vedi featurizeText, categorical e categoricalHash, per le trasformazioni supportate. Queste trasformazioni vengono eseguite dopo qualsiasi trasformazione R specificata. Il valore predefinito è NULL.

mlTransformVars

Specifica un vettore caratteri di nomi variabili da utilizzare in mlTransforms o NULL , se non deve essere utilizzato. Il valore predefinito è NULL.

rowSelection

Specifica le righe (osservazioni) del set di dati che devono essere usate dal modello con il nome di una variabile logica del set di dati (tra virgolette) o con un'espressione logica usando variabili nel set di dati. Ad esempio, rowSelection = "old" userà solo osservazioni in cui il valore della variabile old è TRUE. rowSelection = (age > 20) & (age < 65) & (log(income) > 10) usa solo osservazioni in cui il valore della age variabile è compreso tra 20 e 65 e il valore della logincome variabile è maggiore di 10. La selezione delle righe viene eseguita dopo l'elaborazione di tutte le trasformazioni dei dati (vedere gli transforms argomenti o transformFunc). Come per tutte le espressioni, rowSelection può essere definito al di fuori della chiamata alla funzione usando la funzione di espressione.

transforms

Un'espressione della forma list(name = expression, ``...) che rappresenta il primo ciclo di trasformazioni variabili. Come per tutte le espressioni, transforms (o rowSelection) può essere definito al di fuori della chiamata alla funzione usando la funzione di espressione.

transformObjects

Elenco denominato che contiene oggetti a cui è possibile fare riferimento da transforms, transformsFunce rowSelection.

transformFunc

Funzione di trasformazione della variabile. Vedi rxTransform per i dettagli.

transformVars

Vettore di caratteri delle variabili del set di dati di input necessario per la funzione di trasformazione. Vedi rxTransform per i dettagli.

transformPackages

Un vettore caratteri che specifica ulteriori pacchetti R (oltre a quelli specificati in rxGetOption("transformPackages")) da rendere disponibile e precaricato per l'uso nelle funzioni di trasformazione variabile. Ad esempio, quelle definite esplicitamente nelle funzioni RevoScaleR tramite argomenti e transformstransformFunc o quelle definite implicitamente tramite argomenti or formularowSelection . L'argomento transformPackages può anche essere NULL, indicando che nessun pacchetto esterno rxGetOption("transformPackages") è pre-caricato.

transformEnvir

Ambiente definito dall'utente da usare come padre per tutti gli ambienti sviluppati internamente e usati per la trasformazione dei dati delle variabili. Se transformEnvir = NULL, viene utilizzato invece un nuovo ambiente "hash" con il genitore baseenv() .

blocksPerRead

Specifica il numero di blocchi da leggere per ogni blocco di dati letto dall'origine dati.

reportProgress

Valore intero che specifica il livello di creazione di report sullo stato di elaborazione delle righe:

  • 0: non viene segnalato alcun avanzamento.
  • 1: il numero di righe elaborate viene stampato e aggiornato.
  • 2: vengono segnalate le righe elaborate e le tempistiche.
  • 3: vengono segnalate le righe elaborate e tutte le tempistiche.

verbose

Valore intero che specifica la quantità di output desiderata. Se 0, non viene stampato alcun output dettagliato durante i calcoli. Valori interi da 1 per 4 fornire quantità crescenti di informazioni.

computeContext

Imposta il contesto in cui vengono eseguiti i calcoli, specificato con un RxComputeContext valido. Attualmente sono supportati contesti di calcolo locali e RxInSqlServer.

ensemble

Parametri di controllo per l'incenso.

...

Ulteriori argomenti da trasmettere direttamente al Microsoft Compute Engine.

dettagli

La regressione logistica è un metodo di classificazione usato per stimare il valore di una variabile dipendente categorica dalla relazione a una o più variabili indipendenti presupponendo una distribuzione logistica. Se la variabile dipendente ha solo due valori possibili (esito positivo/negativo), la regressione logistica è binaria. Se la variabile dipendente ha più di due valori possibili (tipo di sangue dato i risultati del test diagnostico), la regressione logistica è multinomiale.

La tecnica di ottimizzazione usata per rxLogisticRegression è la memoria limitata Broyden-Fletcher-Goldfarb-Shanno (L-BFGS). Sia gli algoritmi L-BFGS che i normali algoritmi BFGS usano metodi quasi newtoniani per stimare la matrice hessiana a elevato utilizzo di calcolo nell'equazione usata dal metodo di Newton per calcolare i passaggi. Tuttavia, l'approssimazione L-BFGS usa solo una quantità limitata di memoria per calcolare la direzione del passaggio successivo, in modo che sia particolarmente adatta per problemi con un numero elevato di variabili. Il memorySize parametro specifica il numero di posizioni e sfumature passate da archiviare per l'uso nel calcolo del passaggio successivo.

Questo strumento di apprendimento può usare la regolarizzazione della rete elastica: una combinazione lineare di regolarizzazioni L1 (lasso) e L2 (cresta). La regolarizzazione è un metodo che può rendere più trattabile un problema mal posto imponendo vincoli che forniscono informazioni per integrare i dati e che impedisce l'overfitting penalizzando i modelli con valori di coefficiente estremi. Ciò può migliorare la generalizzazione del modello appreso selezionando la complessità ottimale nel compromesso di varianza di distorsione. La regolarizzazione funziona aggiungendo la penalità associata ai valori del coefficiente all'errore dell'ipotesi. Un modello accurato con valori di coefficiente estremo sarebbe più penalizzato, ma un modello meno accurato con valori più conservativi verrebbe penalizzato meno. La regolarizzazione L1 e L2 hanno effetti e usi diversi che sono complementari in determinati aspetti.

l1Weight: può essere applicato ai modelli di tipo sparse, quando si utilizzano dati di dimensioni elevate. Attira piccoli pesi associate a caratteristiche che sono relativamente poco importanti verso 0.

l2Weight: è preferibile per i dati non di tipo sparse. Porta grandi pesi verso lo zero.

Aggiungere la penalità di cresta alla regolarizzazione compensa alcune delle penalità del lazo
limitazioni. Può migliorare la precisione predittiva, ad esempio, quando il numero di predittori è maggiore della dimensione del campione. Se x = l1Weight e y = l2Weight, ax + by = c definisce l'intervallo lineare dei termini di regolarizzazione. I valori predefiniti di x e y sono entrambi 1. Una regolarizzazione aggressiva può danneggiare la capacità predittiva escludendo variabili importanti fuori dal modello. Pertanto, la scelta dei valori ottimali per i parametri di regolarizzazione è importante per le prestazioni del modello di regressione logistica.

Value

rxLogisticRegression: Un rxLogisticRegression oggetto con il modello addestrato.

LogisticReg: Oggetto di specifica maml per studenti per il formatore di Logistic Reg.

Note

Questo algoritmo tenterà di caricare l'intero set di dati in memoria quando trainThreads > 1 (multithreading).

Autore(i)

Microsoft CorporationMicrosoft Technical Support

References

Wikipedia: L-BFGS

regression

Training of L1-Regularized Log-Linear Models

and L2 Regularization for Machine Learning

Vedere anche

rxFastTrees, rxFastForest, rxFastLinear, rxNeuralNet, rxOneClassSvm, featurizeText, categorical, categoricalHash, rxPredict.mlModel.

Examples


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