rxLogisticRegresión: Regresión logística

Regresión logística de Machine Learning

Uso

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

Argumentos

formula

La fórmula tal como se describe en rxFormula. Actualmente no están soportados F() en MicrosoftML.

data

Un objeto fuente de datos o una cadena de caracteres que especifica un archivo .xdf o un objeto de trama de datos.

type

Cadena de caracteres que especifica el tipo de Regresión logística: "binary" para la regresión logística de clasificación binaria predeterminada o "multi" para la regresión logística multinómica.

l2Weight

Peso de regularización L2. Su valor debe ser mayor o igual que 0 y el valor predeterminado se establece en 1.

l1Weight

Peso de regularización L1. Su valor debe ser mayor o igual que 0 y el valor predeterminado se establece en 1.

optTol

Valor de umbral para la convergencia del optimizador. Si la mejora entre iteraciones es menor que el umbral, el algoritmo se detiene y devuelve el modelo actual. Los valores más pequeños son más lentos, pero más precisos. El valor por defecto es 1e-07.

memorySize

Tamaño de memoria para L-BFGS, especificando el número de posiciones y degradados anteriores que se van a almacenar para el cálculo del paso siguiente. Este parámetro de optimización limita la cantidad de memoria que se usa para calcular la magnitud y la dirección del paso siguiente. Cuando se especifica menos memoria, el entrenamiento es más rápido pero menos preciso. Debe ser mayor o igual que 1 y el valor predeterminado es 20.

initWtsScale

Establece el diámetro de pesos iniciales que especifica el intervalo desde el que se dibujan los valores para los pesos iniciales. Estos pesos se inicializan aleatoriamente desde dentro de este intervalo. Por ejemplo, si se especifica que el diámetro sea d, los pesos se distribuyen uniformemente entre -d/2 y d/2. El valor predeterminado es 0, que especifica que todos los pesos se inicializan en 0.

maxIterations

Establece el número máximo de iteraciones. Después de este número de pasos, el algoritmo se detiene incluso si no cumple los criterios de convergencia.

showTrainingStats

Especifique TRUE para mostrar las estadísticas de los datos de entrenamiento y el modelo entrenado; en caso contrario, FALSE. El valor por defecto es FALSE. Para información adicional sobre estadísticas de modelos, consulte summary.mlModel.

sgdInitTol

Establézcalo en un número mayor que 0 para usar el descenso de degradado estocástico (SGD) para buscar los parámetros iniciales. Un conjunto de valores distinto de cero especifica los usos de SGD de tolerancia para determinar la convergencia. El valor predeterminado es 0 especificar que no se usa SGD.

trainThreads

Número de subprocesos que se van a usar en el entrenamiento del modelo. Debe establecerse en el número de núcleos de la máquina. Tenga en cuenta que L-BFGS multiproceso intenta cargar el conjunto de datos en memoria. En caso de problemas de memoria insuficiente, establezca en trainThreads1 para desactivar el subproceso múltiple. Si NULL el número de hilos a usar se determina internamente. El valor por defecto es NULL.

denseOptimizer

Si TRUEes , fuerza la densificación de los vectores de optimización internos. Si FALSEes , habilita el optimizador de regresión logística usa estados internos dispersos o densos, ya que encuentra lo adecuado. Establecer denseOptimizer en TRUE requiere que el optimizador interno use un estado interno denso, lo que puede ayudar a aliviar la carga en el recolector de elementos no utilizados para algunas variedades de problemas más grandes.

normalize

Especifica el tipo de normalización automática usada:

  • "auto": si se necesita normalización, se realiza automáticamente. Esta es la opción predeterminada.
  • "no": no se realiza ninguna normalización.
  • "yes": se realiza la normalización.
  • "warn": si se necesita normalización, se muestra un mensaje de advertencia, pero no se realiza la normalización.
    La normalización vuelve a escalar intervalos de datos dispares a una escala estándar. El escalado de características garantiza que las distancias entre los puntos de datos son proporcionales y permite que varios métodos de optimización, como el descenso de degradado converjan mucho más rápido. Si se realiza la normalización, se usa un MaxMin normalizador. Normaliza valores en un intervalo [a, b] donde -1 <= a <= 0y 0 <= b <= 1 y b - a = 1. Este normalizador conserva la dispersidad asignando cero a cero.

mlTransforms

Especifica una lista de transformaciones MicrosoftML que deben realizarse sobre los datos antes del entrenamiento o NULL si no se deben realizar transformaciones. Consulta featurizeText, categorical y categoricalHash, para las transformaciones que están soportadas. Estas transformaciones se realizan después de cualquier transformación R especificada. El valor por defecto es NULL.

mlTransformVars

Especifica un vector de caracteres con nombres de variables a usar en mlTransforms o NULL si no se va a usar ninguno. El valor por defecto es NULL.

rowSelection

Especifica las filas (observaciones) del conjunto de datos que va a usar el modelo con el nombre de una variable lógica del conjunto de datos (entre comillas) o con una expresión lógica mediante variables del conjunto de datos. Por ejemplo, rowSelection = "old" solo usará observaciones en las que el valor de la variable old es TRUE. rowSelection = (age > 20) & (age < 65) & (log(income) > 10) solo usa observaciones en las que el valor de la age variable está comprendido entre 20 y 65 y el valor de log la income variable es mayor que 10. La selección de filas se realiza después de procesar las transformaciones de datos (vea los argumentos transforms o transformFunc). Como con todas las expresiones, rowSelection puede definirse fuera de la llamada a la función usando la función de expresión.

transforms

Una expresión de la forma list(name = expression, ``...) que representa la primera ronda de transformaciones de variables. Como con todas las expresiones, transforms (o rowSelection) puede definirse fuera de la llamada de función usando la función de expresión.

transformObjects

Lista con nombre que contiene objetos a los que puede hacer referencia transforms, transformsFuncy rowSelection.

transformFunc

Función de transformación de variables. Consulta rxTransform para más detalles.

transformVars

Vector de caracteres de variables del conjunto de datos de entrada necesarias para la función de transformación. Consulta rxTransform para más detalles.

transformPackages

Un vector de caracteres que especifica paquetes adicionales de R (aparte de los especificados en rxGetOption("transformPackages")) que se pondrán a disposición y precargan para su uso en funciones de transformación variable. Por ejemplo, aquellas definidas explícitamente en funciones de RevoScaleR a través de sus transforms argumentos y transformFunc o aquellas definidas implícitamente mediante formula sus argumentos o rowSelection . El transformPackages argumento también puede ser NULL, indicando que ningún paquete fuera rxGetOption("transformPackages") está precargado.

transformEnvir

Un entorno definido por el usuario que sirve como elemento primario para todos los entornos desarrollados internamente y se usa para la transformación de datos variables. Si transformEnvir = NULL, se utiliza un nuevo entorno "hash" con el padre baseenv() en su lugar.

blocksPerRead

Especifica el número de bloques que se van a leer para cada fragmento de datos leídos desde el origen de datos.

reportProgress

Valor entero que especifica el nivel de informes sobre el progreso del procesamiento de filas:

  • 0: no se notifica ningún progreso.
  • 1: el número de filas procesadas se imprime y actualiza.
  • 2: se notifican filas procesadas y tiempos.
  • 3: se notifican filas procesadas y todos los intervalos.

verbose

Valor entero que especifica la cantidad de salida deseada. Si 0es , no se imprime ninguna salida detallada durante los cálculos. Valores enteros de 1 para 4 proporcionar cantidades crecientes de información.

computeContext

Establece el contexto en el que se ejecutan los cálculos, especificado con un RxComputeContext válido. Actualmente se admiten contextos de cómputo locales y RxInSqlServer.

ensemble

Parámetros de control para el montaje.

...

Argumentos adicionales que se transmitirán directamente al Microsoft Compute Engine.

Detalles

Regresión logística es un método de clasificación que se usa para predecir el valor de una variable dependiente categórica de su relación con una o varias variables independientes que se supone que tienen una distribución logística. Si la variable dependiente solo tiene dos valores posibles (correcto/error), la regresión logística es binaria. Si la variable dependiente tiene más de dos valores posibles (tipo sanguíneo dados resultados de pruebas de diagnóstico), la regresión logística es multinomial.

La técnica de optimización utilizada para rxLogisticRegression es la memoria limitada Broyden-Fletcher-Goldfarb-Shanno (L-BFGS). Tanto los algoritmos L-BFGS como los BFGS normales usan métodos cuasi newtonianos para calcular la matriz hessiana de uso computacional en la ecuación utilizada por el método de Newton para calcular los pasos. Pero la aproximación L-BFGS usa solo una cantidad limitada de memoria para calcular la dirección del paso siguiente, de modo que se adapte especialmente a los problemas con un gran número de variables. El memorySize parámetro especifica el número de posiciones anteriores y degradados que se van a almacenar para su uso en el cálculo del paso siguiente.

Este aprendiz puede usar regularización de red elástica: una combinación lineal de regularizaciones L1 (lasso) y L2 (ridge). La regularización es un método que puede representar un problema mal planteado más manejable mediante la imposición de restricciones que proporcionan información para complementar los datos y que impide el sobreajuste penalizando modelos con valores de coeficiente extremos. Esto puede mejorar la generalización del modelo aprendido seleccionando la complejidad óptima en el equilibrio de varianza de sesgo. La regularización funciona agregando la penalización asociada a los valores de coeficiente al error de la hipótesis. Un modelo preciso con valores de coeficiente extremos se penalizaría más, pero un modelo menos preciso con valores más conservadores se penalizaría menos. La regularización L1 y L2 tienen diferentes efectos y usos que son complementarios en ciertos aspectos.

l1Weight: se puede aplicar a modelos dispersos cuando se trabaja con datos de alta dimensión. Arrastra pequeños pesos a características asociadas que son relativamente poco importantes hacia 0.

l2Weight: es preferible para los datos que no son dispersos. Arrastra grandes pesos hacia cero.

Añadir la penalización de cresta a la regularización compensa algunas de las lazos
limitaciones. Puede mejorar su precisión predictiva, por ejemplo, cuando el número de predictores es mayor que el tamaño de la muestra. Si x = l1Weight y y = l2Weight, ax + by = c define el intervalo lineal de los términos de regularización. Los valores predeterminados de x e y son 1. Una regularización agresiva puede dañar la capacidad predictiva excluyendo variables importantes fuera del modelo. Por lo tanto, elegir los valores óptimos para los parámetros de regularización es importante para el rendimiento del modelo de regresión logística.

Value

rxLogisticRegression: Un rxLogisticRegression objeto con el modelo entrenado.

LogisticReg: Objeto de especificación para aprendices de clase maml para el formador de Registro Logístico.

Notas

Este algoritmo intentará cargar todo el conjunto de datos en la memoria cuando trainThreads > 1 (multiproceso).

Autor(es)

Microsoft CorporationMicrosoft Technical Support

References

Wikipedia: L-BFGS

regression

Training of L1-Regularized Log-Linear Models

and L2 Regularization for Machine Learning

Véase también

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

Ejemplos


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