Oharra
Orrialde honetara sartzeak baimena behar du. Saioa hasteko edo direktorioak aldatzen saia zaitezke.
Orrialde honetara sartzeak baimena behar du. Direktorioak aldatzen saia zaitezke.
Usage
microsoftml.rx_logistic_regression(formula: str,
data: [revoscalepy.datasource.RxDataSource.RxDataSource,
pandas.core.frame.DataFrame], method: ['binary',
'multiClass'] = 'binary', l2_weight: float = 1,
l1_weight: float = 1, opt_tol: float = 1e-07,
memory_size: int = 20, init_wts_diameter: float = 0,
max_iterations: int = 2147483647,
show_training_stats: bool = False, sgd_init_tol: float = 0,
train_threads: int = None, dense_optimizer: bool = False,
normalize: ['No', 'Warn', 'Auto', 'Yes'] = 'Auto',
ml_transforms: list = None, ml_transform_vars: list = None,
row_selection: str = None, transforms: dict = None,
transform_objects: dict = None, transform_function: str = None,
transform_variables: list = None,
transform_packages: list = None,
transform_environment: dict = None, blocks_per_read: int = None,
report_progress: int = None, verbose: int = 1,
ensemble: microsoftml.modules.ensemble.EnsembleControl = None,
compute_context: revoscalepy.computecontext.RxComputeContext.RxComputeContext = None)
Description
Regresión logística de Machine Learning
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 rx_logistic_regression 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 memory_size 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.
l1_weight: se puede aplicar a modelos dispersos cuando se trabaja con datos de alta dimensión. Extrae pequeños pesos asociados características que son relativamente poco importantes hacia 0.l2_weight: es preferible para los datos que no son dispersos. Tira grandes pesos hacia cero.
Agregar la penalización de la cresta a la regularización supera algunas de las limitaciones de la lazo. 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 = l1_weight y y = l2_weight, 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.
Arguments
formula
La fórmula tal como se describe en revoscalepy.rx_formula términos de interacción y F() no se admite actualmente en microsoftml.
datos
Objeto de origen de datos o cadena de caracteres que especifica un archivo .xdf o un objeto de trama de datos.
method
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 "multiClass" para la regresión logística multinómica.
l2_weight
Peso de regularización L2. Su valor debe ser mayor o igual que 0 y el valor predeterminado se establece en 1.
l1_weight
Peso de regularización L1. Su valor debe ser mayor o igual que 0 y el valor predeterminado se establece en 1.
opt_tol
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 predeterminado es 1e-07.
memory_size
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.
max_iterations
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.
show_training_stats
Especifique True para mostrar las estadísticas de los datos de entrenamiento y el modelo entrenado; en caso contrario, False. El valor predeterminado es False. Para obtener información adicional sobre las estadísticas del modelo, vea summary.ml_model().
sgd_init_tol
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.
init_wts_diameter
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.
train_threads
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 train_threads1 para desactivar el subproceso múltiple. Si Ninguno , el número de subprocesos que se van a usar se determina internamente. El valor predeterminado es None.
dense_optimizer
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.
normalizar
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 los valores de un intervalo [a, b] donde -1 <= a <= 0 y 0 <= b <= 1 .b - a = 1 Este normalizador conserva la dispersidad asignando cero a cero.
ml_transforms
Especifica una lista de transformaciones de MicrosoftML que se van a realizar en los datos antes del entrenamiento o None si no se va a realizar ninguna transformación. Consulte featurize_text, categoricaly categorical_hash, para ver las transformaciones admitidas.
Estas transformaciones se realizan después de las transformaciones de Python especificadas.
El valor predeterminado es None.
ml_transform_vars
Especifica un vector de caracteres de nombres de variable que se van a usar en ml_transforms o Ninguno si no se va a usar ninguno.
El valor predeterminado es None.
row_selection
NO SE ADMITE. 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:
row_selection = "old"solo usará observaciones en las que el valor de la variableoldesTrue.row_selection = (age > 20) & (age < 65) & (log(income) > 10)solo usa observaciones en las que el valor de laagevariable está comprendido entre 20 y 65 y el valor deloglaincomevariable es mayor que 10.
La selección de filas se realiza después de procesar las transformaciones de datos (vea los argumentos transforms o transform_function). Al igual que con todas las expresiones, row_selection se puede definir fuera de la llamada de función mediante la expression función .
Transforma
NO SE ADMITE. Expresión del formulario que representa la primera ronda de transformaciones de variables. Al igual que con todas las expresiones, transforms (o row_selection) se puede definir fuera de la llamada de función mediante la expression función .
transform_objects
NO SE ADMITE. Lista con nombre que contiene objetos a los que puede hacer referencia transforms, transform_functiony row_selection.
transform_function
Función de transformación de variables.
transform_variables
Vector de caracteres de variables del conjunto de datos de entrada necesarias para la función de transformación.
transform_packages
NO SE ADMITE. Vector de caracteres que especifica paquetes adicionales de Python (fuera de los especificados en RxOptions.get_option("transform_packages")) que se van a poner a disposición y cargar previamente para su uso en las funciones de transformación de variables.
Por ejemplo, los definidos explícitamente en funciones de revoscalepy a través de sus transforms argumentos y transform_function o los definidos implícitamente a través de sus formula argumentos o row_selection . El transform_packages argumento también puede ser None, lo que indica que no hay paquetes externos RxOptions.get_option("transform_packages") cargados previamente.
transform_environment
NO SE ADMITE. 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 transform_environment = Nonees , se usa en su lugar un nuevo entorno "hash" con revoscalepy.baseenv primario.
blocks_per_read
Especifica el número de bloques que se van a leer para cada fragmento de datos leídos desde el origen de datos.
report_progress
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.
compute_context
Establece el contexto en el que se ejecutan los cálculos, especificados con una revoscalepy válida. RxComputeContext. Actualmente local y revoscalepy. Se admiten contextos de proceso RxInSqlServer.
conjunto
Parámetros de control para el montaje.
Devoluciones
Objeto LogisticRegression con el modelo entrenado.
Nota:
Este algoritmo intentará cargar todo el conjunto de datos en la memoria cuando train_threads > 1 (multiproceso).
Consulte también
Referencias
Wikipedia: Regresión logística
Entrenamiento escalable de modelos de L1-Regularized Log-Linear
Ejecución de pruebas: regularización L1 y L2 para Machine Learning
Ejemplo de clasificación binaria
'''
Binary Classification.
'''
import numpy
import pandas
from microsoftml import rx_logistic_regression, rx_predict
from revoscalepy.etl.RxDataStep import rx_data_step
from microsoftml.datasets.datasets import get_dataset
infert = get_dataset("infert")
import sklearn
if sklearn.__version__ < "0.18":
from sklearn.cross_validation import train_test_split
else:
from sklearn.model_selection import train_test_split
infertdf = infert.as_df()
infertdf["isCase"] = infertdf.case == 1
data_train, data_test, y_train, y_test = train_test_split(infertdf, infertdf.isCase)
model = rx_logistic_regression(
formula=" isCase ~ age + parity + education + spontaneous + induced ",
data=data_train)
print(model.coef_)
# RuntimeError: The type (RxTextData) for file is not supported.
score_ds = rx_predict(model, data=data_test,
extra_vars_to_write=["isCase", "Score"])
# Print the first five rows
print(rx_data_step(score_ds, number_rows_read=5))
Salida:
Automatically adding a MinMax normalization transform, use 'norm=Warn' or 'norm=No' to turn this behavior off.
Beginning processing data.
Rows Read: 186, Read Time: 0, Transform Time: 0
Beginning processing data.
Beginning processing data.
Rows Read: 186, Read Time: 0.001, Transform Time: 0
Beginning processing data.
Beginning processing data.
Rows Read: 186, Read Time: 0, Transform Time: 0
Beginning processing data.
LBFGS multi-threading will attempt to load dataset into memory. In case of out-of-memory issues, turn off multi-threading by setting trainThreads to 1.
Beginning optimization
num vars: 6
improvement criterion: Mean Improvement
L1 regularization selected 5 of 6 weights.
Not training a calibrator because it is not needed.
Elapsed time: 00:00:00.0646405
Elapsed time: 00:00:00.0083991
OrderedDict([('(Bias)', -1.2366217374801636), ('spontaneous', 1.9391206502914429), ('induced', 0.7497404217720032), ('parity', -0.31517016887664795), ('age', -3.162723260174971e-06)])
Beginning processing data.
Rows Read: 62, Read Time: 0, Transform Time: 0
Beginning processing data.
Elapsed time: 00:00:00.0287290
Finished writing 62 rows.
Writing completed.
Rows Read: 5, Total Rows Processed: 5, Total Chunk Time: 0.001 seconds
isCase PredictedLabel Score Probability
0 False False -1.341681 0.207234
1 True True 0.597440 0.645070
2 False True 0.544912 0.632954
3 False False -1.289152 0.215996
4 False False -1.019339 0.265156
Ejemplo de clasificación multiclase
'''
MultiClass Classification
'''
import numpy
import pandas
from microsoftml import rx_logistic_regression, rx_predict
from revoscalepy.etl.RxDataStep import rx_data_step
from microsoftml.datasets.datasets import get_dataset
iris = get_dataset("iris")
import sklearn
if sklearn.__version__ < "0.18":
from sklearn.cross_validation import train_test_split
else:
from sklearn.model_selection import train_test_split
irisdf = iris.as_df()
irisdf["Species"] = irisdf["Species"].astype("category")
data_train, data_test, y_train, y_test = train_test_split(irisdf, irisdf.Species)
model = rx_logistic_regression(
formula=" Species ~ Sepal_Length + Sepal_Width + Petal_Length + Petal_Width ",
method="multiClass",
data=data_train)
print(model.coef_)
# RuntimeError: The type (RxTextData) for file is not supported.
score_ds = rx_predict(model, data=data_test,
extra_vars_to_write=["Species", "Score"])
# Print the first five rows
print(rx_data_step(score_ds, number_rows_read=5))
Salida:
Automatically adding a MinMax normalization transform, use 'norm=Warn' or 'norm=No' to turn this behavior off.
Beginning processing data.
Rows Read: 112, Read Time: 0, Transform Time: 0
Beginning processing data.
Beginning processing data.
Rows Read: 112, Read Time: 0, Transform Time: 0
Beginning processing data.
Beginning processing data.
Rows Read: 112, Read Time: 0, Transform Time: 0
Beginning processing data.
LBFGS multi-threading will attempt to load dataset into memory. In case of out-of-memory issues, turn off multi-threading by setting trainThreads to 1.
Beginning optimization
num vars: 15
improvement criterion: Mean Improvement
L1 regularization selected 9 of 15 weights.
Not training a calibrator because it is not needed.
Elapsed time: 00:00:00.0493224
Elapsed time: 00:00:00.0080558
OrderedDict([('setosa+(Bias)', 2.074636697769165), ('versicolor+(Bias)', 0.4899507164955139), ('virginica+(Bias)', -2.564580202102661), ('setosa+Petal_Width', -2.8389241695404053), ('setosa+Petal_Length', -2.4824044704437256), ('setosa+Sepal_Width', 0.274869441986084), ('versicolor+Sepal_Width', -0.2645561397075653), ('virginica+Petal_Width', 2.6924400329589844), ('virginica+Petal_Length', 1.5976412296295166)])
Beginning processing data.
Rows Read: 38, Read Time: 0, Transform Time: 0
Beginning processing data.
Elapsed time: 00:00:00.0331861
Finished writing 38 rows.
Writing completed.
Rows Read: 5, Total Rows Processed: 5, Total Chunk Time: 0.001 seconds
Species Score.0 Score.1 Score.2
0 virginica 0.044230 0.364927 0.590843
1 setosa 0.767412 0.210586 0.022002
2 setosa 0.756523 0.221933 0.021543
3 setosa 0.767652 0.211191 0.021157
4 versicolor 0.116369 0.498615 0.385016