Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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 unMaxMinnormalizador. Normaliza valores en un intervalo [a, b] donde-1 <= a <= 0y0 <= b <= 1yb - 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
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,]