Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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
Regressão Logística de Aprendizagem Automática
Detalhes
Regressão Logística é um método de classificação utilizado para prever o valor de uma variável dependente categórica a partir da sua relação com uma ou mais variáveis independentes assumidas como tendo uma distribuição logística. Se a variável dependente tiver apenas dois valores possíveis (sucesso/fracasso), então a regressão logística é binária. Se a variável dependente tiver mais de dois valores possíveis (grupo sanguíneo dado os resultados dos testes diagnósticos), então a regressão logística é multinomial.
A técnica de otimização utilizada para rx_logistic_regression é a memória limitada Broyden-Fletcher-Goldfarb-Shanno (L-BFGS). Tanto os algoritmos L-BFGS como os BFGS regulares utilizam métodos quase-newtonianos para estimar a matriz de Hessiana, que é computacionalmente intensiva, na equação usada pelo método de Newton para calcular os passos. Mas a aproximação L-BFGS usa apenas uma quantidade limitada de memória para calcular a direção do passo seguinte, sendo especialmente adequada para problemas com um grande número de variáveis. O memory_size parâmetro especifica o número de posições e gradientes passados a armazenar para uso no cálculo do passo seguinte.
Este aprendiz pode usar regularização elástica em rede: uma combinação linear de regularizações L1 (laço) e L2 (crista). A regularização é um método que pode tornar um problema mal colocado mais fácil ao impor restrições que fornecem informação para complementar os dados e que previne o sobreajuste penalizando modelos com valores extremos de coeficientes. Isto pode melhorar a generalização do modelo aprendido ao selecionar a complexidade ótima no compromisso viés-variância. A regularização funciona adicionando a penalização associada aos valores dos coeficientes ao erro da hipótese. Um modelo preciso com valores extremos de coeficientes seria mais penalizado, mas um modelo menos preciso com valores mais conservativos seria menos penalizado. A regularização L1 e L2 têm efeitos e usos diferentes que são complementares em certos aspetos.
l1_weight: pode ser aplicado a modelos esparsos, quando se trabalha com dados de alta dimensão. Puxa pequenos pesos e características associadas que são relativamente pouco importantes para 0.l2_weight: é preferível para dados que não são esparsos. Puxa grandes pesos para o zero.
Adicionar a penalização de crista à regularização ultrapassa algumas das limitações do laço. Pode melhorar a sua precisão preditiva, por exemplo, quando o número de preditores é superior ao tamanho da amostra.
Se x = l1_weight e y = l2_weight, ax + by = c define o escuro linear dos termos de regularização. Os valores padrão de x e y são ambos 1. Uma regularização agressiva pode prejudicar a capacidade preditiva ao excluir variáveis importantes do modelo. Por isso, escolher os valores ótimos para os parâmetros de regularização é importante para o desempenho do modelo de regressão logística.
Arguments
fórmula
A fórmula, conforme descrita em termos revoscalepy.rx_formula Interação, não F() é atualmente suportada no microsoftml.
dados
Um objeto fonte de dados ou uma cadeia de caracteres que especifica um ficheiro .xdf ou um objeto data frame.
método
Uma cadeia de caracteres que especifica o tipo de Regressão Logística: "binary" para a classificação binária padrão regressão logística ou "multiClass" para regressão logística multinomial.
l2_weight
O peso de regularização L2. O seu valor deve ser maior ou igual a 0 e o valor padrão é definido como 1.
l1_weight
O peso de regularização L1. O seu valor deve ser maior ou igual a 0 e o valor padrão é definido como 1.
opt_tol
Valor limiar para convergência de otimizadores. Se a melhoria entre iterações for inferior ao limiar, o algoritmo para e devolve o modelo atual. Valores mais pequenos são mais lentos, mas mais precisos.
O valor predefinido é 1e-07.
memory_size
Tamanho de memória para L-BFGS, especificando o número de posições e gradientes passados a armazenar para o cálculo do passo seguinte. Este parâmetro de otimização limita a quantidade de memória utilizada para calcular a magnitude e a direção do passo seguinte. Quando especificas menos memória, o treino é mais rápido mas menos preciso. Deve ser maior ou igual a 1 e o valor padrão é 20.
max_iterations
Define o número máximo de iterações. Após este número de passos, o algoritmo para mesmo que não tenha cumprido os critérios de convergência.
show_training_stats
Especifique True para mostrar as estatísticas dos dados de treino e do modelo treinado; caso contrário, False. O valor predefinido é False. Para informações adicionais sobre estatísticas de modelos, veja summary.ml_model().
sgd_init_tol
Definir para um número superior a 0 para usar a Descida Estocástica do Gradiente (SGD) para encontrar os parâmetros iniciais. Um conjunto de valores não nulo especifica a tolerância que o SGD usa para determinar a convergência.
O valor padrão especifica 0 que SGD não é utilizado.
init_wts_diameter
Define o diâmetro inicial dos pesos que especifica o intervalo a partir do qual os valores são retirados para os pesos iniciais. Estes pesos são inicializados aleatoriamente dentro deste intervalo. Por exemplo, se o diâmetro for especificado como d, então os pesos estão uniformemente distribuídos entre -d/2 e d/2. O valor padrão é 0, que especifica que todos os pesos são inicializados para 0.
train_threads
O número de threads a usar no treino do modelo.
Isto deve ser definido para o número de núcleos na máquina. Note que o multi-threading do L-BFGS tenta carregar o conjunto de dados na memória. Em caso de problemas de falta de memória, defina train_threads para 1 desligar o multi-threading. Se Nenhum , o número de threads a usar é determinado internamente. O valor predefinido é None.
dense_optimizer
Se True, força a densificação dos vetores de otimização internos. Se False, permite o otimizador de regressão logística, use estados internos esparsos ou densos conforme apropriado.
Definir denseOptimizer para True exige que o otimizador interno use um estado interno denso, o que pode ajudar a aliviar a carga sobre o coletor de lixo para algumas variedades de problemas maiores.
normalizar
Especifica o tipo de normalização automática utilizada:
"Auto": se for necessária normalização, ela é realizada automaticamente. Esta é a escolha padrão."No": não é realizada qualquer normalização."Yes": a normalização é realizada."Warn": se for necessária normalização, é exibida uma mensagem de aviso, mas a normalização não é realizada.
A normalização reescala intervalos de dados díspares para uma escala padrão. A escalabilidade de características assegura que as distâncias entre pontos de dados são proporcionais e permite que vários métodos de otimização, como a descida gradiente, convergam muito mais rapidamente. Se for realizada a normalização, é utilizado um MaxMin normalizador. Normaliza valores num intervalo [a, b] onde -1 <= a <= 0 e 0 <= b <= 1 e b - a = 1. Este normalizador preserva a esparsidade ao mapear zero para zero.
ml_transforms
Especifica uma lista de transformações MicrosoftML a realizar nos dados antes do treino ou Nenhuma se não forem realizadas transformações. Veja featurize_text, categorical, e categorical_hash, para transformações que são suportadas.
Estas transformações são realizadas após quaisquer transformações em Python especificadas.
O valor predefinido é None.
ml_transform_vars
Especifica um vetor de caracteres com nomes de variáveis a serem usados em ml_transforms ou Nenhum se não for necessário usar nenhum.
O valor predefinido é None.
row_selection
NÃO SUPORTADO. Especifica as linhas (observações) do conjunto de dados que serão usadas pelo modelo com o nome de uma variável lógica do conjunto de dados (entre aspas) ou com uma expressão lógica usando variáveis do conjunto de dados. Por exemplo:
row_selection = "old"só usará observações em que o valor da variáveloldéTrue.row_selection = (age > 20) & (age < 65) & (log(income) > 10)só utiliza observações em que o valor daagevariável está entre 20 e 65 e o valorlogdaincomevariável é superior a 10.
A seleção de linhas é realizada após o processamento de quaisquer transformações de dados (ver os argumentos transforms ou transform_function). Como em todas as expressões, row_selection pode ser definido fora da chamada de função usando a expression função.
transforma
NÃO SUPORTADO. Uma expressão da forma que representa a primeira ronda de transformações de variáveis. Como em todas as expressões, transforms (ou row_selection) pode ser definido fora da chamada de função usando a expression função.
transform_objects
NÃO SUPORTADO. Uma lista nomeada que contém objetos que podem ser referenciados por transforms, transform_function, e row_selection.
transform_function
A função de transformação de variáveis.
transform_variables
Um vetor de caracteres das variáveis do conjunto de dados de entrada necessárias para a função de transformação.
transform_packages
NÃO SUPORTADO. Um vetor de caracteres que especifica pacotes Python adicionais (para além dos especificados em RxOptions.get_option("transform_packages")) a serem disponibilizados e pré-carregados para uso em funções de transformação de variáveis.
Por exemplo, aquelas definidas explicitamente em funções revoscalepy através dos argumentos e transformstransform_function ou aquelas definidas implicitamente através dos argumentos ou formularow_selection . O transform_packages argumento pode também ser Nenhum, indicando que nenhum pacote externo RxOptions.get_option("transform_packages") está pré-carregado.
transform_environment
NÃO SUPORTADO. Um ambiente definido pelo utilizador para servir como pai de todos os ambientes desenvolvidos internamente e usados para transformação de dados variáveis.
Se transform_environment = None, é utilizado um novo ambiente "hash" com o pai revoscalepy.baseenv.
blocks_per_read
Especifica o número de blocos a ler para cada bloco de dados lido da fonte de dados.
report_progress
Um valor inteiro que especifica o nível de reporte sobre o progresso do processamento da linha:
0: Não há progresso reportado.1: o número de linhas processadas é impresso e atualizado.2: as linhas processadas e os tempos são reportados.3: linhas processadas e todos os tempos são reportados.
verbose
Um valor inteiro que especifica a quantidade de saída desejada.
Se 0, não é impressa nenhuma saída detalhada durante os cálculos. Valores inteiros de 1 para 4 fornecer quantidades crescentes de informação.
compute_context
Define o contexto em que os cálculos são executados, especificado com uma revoscalpy válida. RxComputeContext. Atualmente local e revoscalepy. São suportados contextos de computação RxInSqlServer .
Ensemble
Parâmetros de controlo para a montagem.
Devoluções
Um LogisticRegression objeto com o modelo treinado.
Observação
Este algoritmo tentará carregar todo o conjunto de dados na memória quando train_threads > 1 (multi-threading).
Consulte também
Referências
Wikipédia: Regressão logística
Treino Escalável de Modelos L1-Regularized Log-Linear
Test Run - Regularização L1 e L2 para Aprendizagem Automática
Exemplo de classificação binária
'''
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))
Output:
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
Exemplo de classificação MultiClass
'''
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))
Output:
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