rxLogisticRegression: Logistische Regression

Machine Learning Logistics Regression

Verwendung

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

Argumente

formula

Die Formel wie in rxFormula beschrieben. Interaktionsbegriffe und F() werden derzeit im MicrosoftML nicht unterstützt.

data

Ein Datenquellenobjekt oder eine Zeichenkette, die eine .xdf-Datei oder ein Datenrahmenobjekt spezifiziert.

type

Eine Zeichenfolge, die den Typ der Logistischen Regression angibt: "binary" für die standardmäßige binäre Klassifikationsregression oder "multi" für die multinomiale logistische Regression.

l2Weight

Das L2-Normalisierungsgewicht. Der Wert muss größer oder gleich 0 sein, und der Standardwert ist auf 1.

l1Weight

Das L1-Normalisierungsgewicht. Der Wert muss größer oder gleich 0 sein, und der Standardwert ist auf 1.

optTol

Schwellenwert für Optimiererkonvergenz. Wenn die Verbesserung zwischen Iterationen kleiner als der Schwellenwert ist, stoppt der Algorithmus und gibt das aktuelle Modell zurück. Kleinere Werte sind langsamer, aber genauer. Der Standardwert ist 1e-07.

memorySize

Die Speichergröße für L-BFGS, die die Anzahl der vergangenen Positionen und Farbverläufe angibt, die für die Berechnung des nächsten Schritts gespeichert werden sollen. Dieser Optimierungsparameter begrenzt die Menge des Arbeitsspeichers, der zum Berechnen der Größe und Richtung des nächsten Schritts verwendet wird. Wenn Sie weniger Arbeitsspeicher angeben, ist das Training schneller, aber weniger genau. Muss größer oder gleich 1 sein, und der Standardwert ist 20.

initWtsScale

Legt den Anfangsgewichtsdurchmesser fest, der den Bereich angibt, aus dem Werte für die Anfangsgewichte gezeichnet werden. Diese Gewichtungen werden zufällig innerhalb dieses Bereichs initialisiert. Wenn beispielsweise der Durchmesser angegeben dist, werden die Gewichte einheitlich zwischen -d/2 und d/2verteilt. Der Standardwert ist 0, der angibt, dass alle Gewichtungen initialisiert 0werden.

maxIterations

Legt die maximale Anzahl von Iterationen fest. Nach dieser Anzahl von Schritten stoppt der Algorithmus auch dann, wenn er keine Konvergenzkriterien erfüllt hat.

showTrainingStats

Geben Sie TRUE an, dass die Statistiken zu Schulungsdaten und das trainierte Modell angezeigt werden sollen; andernfalls FALSE. Der Standardwert ist FALSE. Weitere Informationen zur Modellstatistik finden Sie unter summary.mlModel.

sgdInitTol

Wird auf eine Zahl festgelegt, die größer als 0 ist, um stochastische Farbverlaufsabstiege (SGD) zu verwenden, um die anfänglichen Parameter zu finden. Ein Wertsatz ungleich Null gibt die Toleranz an, die SGD verwendet, um die Konvergenz zu bestimmen. Der Standardwert gibt 0 an, dass SGD nicht verwendet wird.

trainThreads

Die Anzahl der Threads, die beim Trainieren des Modells verwendet werden sollen. Dies sollte auf die Anzahl der Kerne auf dem Computer festgelegt werden. Beachten Sie, dass L-BFGS-Multithreading versucht, Datasets in den Arbeitsspeicher zu laden. Bei Problemen mit out-of-memory,set trainThreads to 1 turn off multithreading. Wenn NULL die Anzahl der zu verwendenden Threads intern bestimmt wird. Der Standardwert ist NULL.

denseOptimizer

Wenn TRUE, erzwingt die Verdichtung der internen Optimierungsvektoren. Wenn FALSE, aktiviert die Logistik Regressionsoptimierer verwenden sparsame oder dichte interne Zustände, wie sie geeignet findet. Die Einstellung denseOptimizer erfordert, dass TRUE der interne Optimierer einen dichten internen Zustand verwendet, der dazu beitragen kann, die Belastung des Garbage Collector für einige Arten größerer Probleme zu verringern.

normalize

Gibt den Typ der verwendeten automatischen Normalisierung an:

  • "auto": Wenn die Normalisierung erforderlich ist, wird sie automatisch ausgeführt. Dies ist die Standardauswahl.
  • "no": Es wird keine Normalisierung durchgeführt.
  • "yes": Normalisierung wird durchgeführt.
  • "warn": Wenn die Normalisierung erforderlich ist, wird eine Warnmeldung angezeigt, die Normalisierung wird jedoch nicht ausgeführt.
    Durch die Normalisierung werden unterschiedliche Datenbereiche auf eine Standardskala skaliert. Die Featureskalierung stellt die Abstände zwischen Datenpunkten proportional dar und ermöglicht verschiedene Optimierungsmethoden wie Farbverlaufsabstieg viel schneller zu konvergen. Wenn die Normalisierung durchgeführt wird, wird ein MaxMin Normalisierer verwendet. Sie normalisiert Werte in einem Intervall [a, b], wobei -1 <= a <= 0und 0 <= b <= 1 und b - a = 1. Dieser Normalisierer behält Sparsamkeit bei, indem null zu Null zugeordnet wird.

mlTransforms

Spezifiziert eine Liste von MicrosoftML-Transformationen, die auf den Daten vor dem Training oder NULL falls keine Transformationen durchgeführt werden sollen, durchgeführt werden sollen. Siehe featurizeText, categorical und categoricalHash für unterstützte Transformationen. Diese Transformationen werden nach bestimmten R-Transformationen durchgeführt. Der Standardwert ist NULL.

mlTransformVars

Spezifiziert einen Zeichenvektor von Variablennamen, die verwendet werden sollen oder mlTransformsNULL falls keine verwendet werden sollen. Der Standardwert ist NULL.

rowSelection

Gibt die Zeilen (Beobachtungen) aus dem Dataset an, die vom Modell mit dem Namen einer logischen Variablen aus dem Dataset (in Anführungszeichen) oder mit einem logischen Ausdruck mithilfe von Variablen im Dataset verwendet werden sollen. Zum Beispiel werden nur Beobachtungen verwendet, rowSelection = "old" bei denen der Wert der Variablen old ist TRUE. rowSelection = (age > 20) & (age < 65) & (log(income) > 10) verwendet nur Beobachtungen, in denen der Wert der age Variablen zwischen 20 und 65 liegt und der Wert der logincome Variablen größer als 10 ist. Die Zeilenauswahl erfolgt nach der Verarbeitung von Datentransformationen (siehe die Argumente transforms oder transformFunc). Wie bei allen Ausdrücken kann außerhalb rowSelection des Funktionsaufrufs mit der Ausdrucksfunktion definiert werden.

transforms

Ein Ausdruck der Form, list(name = expression, ``...) der die erste Runde von Variablentransformationen darstellt. Wie bei allen Ausdrücken kann (oder rowSelection) außerhalb des Funktionsaufrufs mit der Ausdrucksfunktion transforms definiert werden.

transformObjects

Eine benannte Liste, die Objekte enthält, auf die von transforms, und transformsFunc.rowSelection

transformFunc

Die Variable Transformationsfunktion. Siehe rxTransform für Details.

transformVars

Ein Zeichenvektor von Eingabedatensatzvariablen, die für die Transformationsfunktion erforderlich sind. Siehe rxTransform für Details.

transformPackages

Ein Zeichenvektor, der zusätzliche R-Pakete angibt (außerhalb derjenigen, die in rxGetOption("transformPackages")angegeben sind), die für die Verwendung in Variablentransformationsfunktionen bereitgestellt und vorgeladen werden sollen. Zum Beispiel funktionieren explizit in RevoScaleR definierte Funktionen über ihre transforms und transformFunc Argumente oder solche, die implizit über ihre formula oder rowSelection Argumente definiert sind. Das Argument transformPackages kann auch sein NULL, was darauf hinweist, dass keine externen rxGetOption("transformPackages") Pakete vorgeladen sind.

transformEnvir

Eine benutzerdefinierte Umgebung, die als übergeordnetes Element für alle Umgebungen dient, die intern entwickelt und für die Variable Datentransformation verwendet werden. Wenn transformEnvir = NULL, wird stattdessen eine neue "Hash"-Umgebung mit Elternumgebung baseenv() verwendet.

blocksPerRead

Gibt die Anzahl der zu lesenden Blöcke für jeden Datenabschnitt an, der aus der Datenquelle gelesen werden soll.

reportProgress

Ein ganzzahliger Wert, der die Berichtsebene für den Fortschritt der Zeilenverarbeitung angibt:

  • 0: Es wird kein Fortschritt gemeldet.
  • 1: Die Anzahl der verarbeiteten Zeilen wird gedruckt und aktualisiert.
  • 2: Verarbeitete Zeilen und Anzeigedauern werden gemeldet.
  • 3: Verarbeitete Zeilen und alle Anzeigedauern werden gemeldet.

verbose

Ein ganzzahliger Wert, der die gewünschte Ausgabemenge angibt. Wird 0bei Berechnungen keine ausführliche Ausgabe gedruckt. Ganzzahlige Werte von 1 bis hin zu 4 steigenden Informationsmengen.

computeContext

Setzt den Kontext, in dem Berechnungen ausgeführt werden, spezifiziert mit einem gültigen RxComputeContext. Derzeit werden lokale und RxInSqlServer-Rechenkontexte unterstützt.

ensemble

Steuerungsparameter für die Ensembling.

...

Zusätzliche Argumente werden direkt an die Microsoft Compute Engine weitergeleitet.

Details

Logistics Regression ist eine Klassifizierungsmethode, die verwendet wird, um den Wert einer kategorisierten abhängigen Variablen von ihrer Beziehung zu einer oder mehreren unabhängigen Variablen vorherzusagen, die angenommen werden, dass sie eine logistische Verteilung haben. Wenn die abhängige Variable nur über zwei mögliche Werte (Erfolg/Fehler) verfügt, ist die logistische Regression binär. Wenn die abhängige Variable mehr als zwei mögliche Werte aufweist (Bluttyp gegebene Diagnosetestergebnisse), ist die logistische Regression multinomial.

Die optimierungstechnik ist rxLogisticRegression die begrenzte Speicher-Broyden-Fletcher-Goldfarb-Shanno (L-BFGS). Sowohl die L-BFGS- als auch die regulären BFGS-Algorithmen verwenden quasi-Newtonsche Methoden, um die rechenintensive Hessische Matrix in der Formel zu schätzen, die von Newtons Methode zum Berechnen von Schritten verwendet wird. Die L-BFGS-Annäherung verwendet jedoch nur einen begrenzten Arbeitsspeicher, um die nächste Schrittrichtung zu berechnen, sodass sie besonders für Probleme mit einer großen Anzahl von Variablen geeignet ist. Der memorySize Parameter gibt die Anzahl der vergangenen Positionen und Farbverläufe an, die für die Verwendung in der Berechnung des nächsten Schritts gespeichert werden sollen.

Dieser Lernenden kann eine flexible Netznormalisierung verwenden: eine lineare Kombination aus L1 (Lasso) und L2 (Ridge) Regularisierungen. Regularisierung ist eine Methode, die ein unaufgeregtes Problem durch Das Festlegen von Einschränkungen, die Informationen zur Ergänzung der Daten liefern, darstellen kann und die die Überlastung durch Strafen von Modellen mit extremen Koeffizientenwerten verhindert. Dies kann die Generalisierung des modells verbessern, indem die optimale Komplexität im Bias-Varianz-Kompromiss ausgewählt wird. Die Regularisierung funktioniert durch Hinzufügen der Strafe, die mit Koeffizientenwerten verknüpft ist, zum Fehler der Hypothese. Ein genaues Modell mit extremen Koeffizientenwerten würde mehr bestraft, aber ein weniger genaues Modell mit konservativeren Werten würde weniger bestraft. L1- und L2-Regularisierung haben unterschiedliche Auswirkungen und Verwendungen, die sich in bestimmten Punkten ergänzen.

l1Weight: kann beim Arbeiten mit hochdimensionalen Daten auf sparse Modelle angewendet werden. Es zieht kleine Gewichte, die mit relativ unwichtigen Merkmalen verbunden sind, in Richtung 0.

l2Weight: ist für Daten vorzuziehen, die nicht gering sind. Er zieht große Gewichte auf Null zu.

Das Hinzufügen der Ridge-Strafe zur Regularisierung überwindet einige Lassos
Einschränkungen. Sie kann beispielsweise die Prädiktorgenauigkeit verbessern, wenn die Anzahl der Prädiktoren größer als die Stichprobengröße ist. Wenn x = l1Weight und y = l2Weight, ax + by = c definiert die lineare Spanne der Regularisierungsbegriffe. Die Standardwerte von x und y sind beide 1. Eine aggressive Regularisierung kann die Vorhersagekapazität beschädigen, indem wichtige Variablen aus dem Modell ausgeschlossen werden. Daher ist die Auswahl der optimalen Werte für die Regularisierungsparameter für die Leistung des logistischen Regressionsmodells wichtig.

Wert

rxLogisticRegression: Ein rxLogisticRegression Objekt mit dem trainierten Modell.

LogisticReg: Ein Lernspezifikationsobjekt der Klasse maml für den Logistic Reg Trainer.

Hinweise

Dieser Algorithmus versucht, das gesamte Dataset in den Arbeitsspeicher zu laden, wenn trainThreads > 1 (Multithreading).

Autor(en)

Microsoft CorporationMicrosoft Technical Support

Verweise

Wikipedia: L-BFGS

regression

Training of L1-Regularized Log-Linear Models

and L2 Regularization for Machine Learning

Siehe auch

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

Beispiele


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