Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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 do Machine Learning
Detalhes
Regressão Logística é um método de classificação usado para prever o valor de uma variável dependente categórica de sua relação com uma ou mais variáveis independentes consideradas com uma distribuição logística. Se a variável dependente tiver apenas dois valores possíveis (êxito/falha), a regressão logística será binária. Se a variável dependente tiver mais de dois valores possíveis (tipo sanguíneo dado os resultados do teste de diagnóstico), a regressão logística será multinomial.
A técnica de otimização usada rx_logistic_regression é a memória limitada Broyden-Fletcher-Goldfarb-Shanno (L-BFGS). Os algoritmos L-BFGS e BFGS regulares usam métodos quase newtonianos para estimar a matriz hessiana computacionalmente intensiva na equação usada pelo método de Newton para calcular etapas. Mas a aproximação L-BFGS usa apenas uma quantidade limitada de memória para calcular a direção da próxima etapa, de modo que ela seja 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 anteriores a serem armazenados para uso na computação da próxima etapa.
Esse aprendiz pode usar a regularização de rede elástica: uma combinação linear de regularizações L1 (laço) e L2 (ridge). A regularização é um método que pode tornar um problema mal representado mais tratável impondo restrições que fornecem informações para complementar os dados e que impede a sobreajuste penalizando modelos com valores de coeficiente extremos. Isso pode melhorar a generalização do modelo aprendido selecionando a complexidade ideal na compensação de variação de viés. A regularização funciona adicionando a penalidade associada a valores de coeficiente ao erro da hipótese. Um modelo preciso com valores de coeficiente extremos seria mais penalizado, mas um modelo menos preciso com valores mais conservadores seria menos penalizado. A regularização L1 e L2 tem efeitos e usos diferentes complementares em determinados aspectos.
l1_weight: pode ser aplicado a modelos esparsos ao trabalhar com dados de alta dimensão. Ele puxa pequenos pesos associados a recursos que são relativamente pouco importantes para 0.l2_weight: é preferível para dados que não são esparsos. Ele puxa grandes pesos para zero.
Adicionar a penalidade de cume à regularização supera algumas das limitações do laço. Ele pode melhorar sua precisão preditiva, por exemplo, quando o número de preditores é maior que o tamanho da amostra.
Se x = l1_weight e y = l2_weight, ax + by = c define o intervalo 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 excluindo variáveis importantes do modelo. Portanto, escolher os valores ideais 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 descrito em termos de interação revoscalepy.rx_formula, F() não tem suporte no microsoftml no momento.
dados
Um objeto de fonte de dados ou uma cadeia de caracteres especificando um arquivo .xdf ou um objeto de quadro de dados.
método
Uma cadeia de caracteres que especifica o tipo de Regressão Logística: "binary" para a regressão logística de classificação binária padrão ou "multiClass" para regressão logística multinomial.
l2_weight
O peso da regularização L2. Seu valor deve ser maior ou igual a 0 e o valor padrão é definido como 1.
l1_weight
O peso da regularização L1. Seu valor deve ser maior ou igual a 0 e o valor padrão é definido como 1.
opt_tol
Valor de limite para convergência do otimizador. Se a melhoria entre iterações for menor que o limite, o algoritmo será interrompido e retornará o modelo atual. Valores menores são mais lentos, mas mais precisos.
O valor padrão é 1e-07.
memory_size
Tamanho da memória para L-BFGS, especificando o número de posições e gradientes anteriores a serem armazenados para a computação da próxima etapa. Esse parâmetro de otimização limita a quantidade de memória usada para calcular a magnitude e a direção da próxima etapa. Quando você especifica menos memória, o treinamento é 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 esse número de etapas, o algoritmo será interrompido mesmo que não tenha atendido aos critérios de convergência.
show_training_stats
Especifique True para mostrar as estatísticas dos dados de treinamento e do modelo treinado; caso contrário, False. O valor padrão é False. Para obter informações adicionais sobre estatísticas de modelo, consulte summary.ml_model().
sgd_init_tol
Defina como um número maior que 0 para usar SGD (Descendente de Gradiente Estocástico) para localizar os parâmetros iniciais. Um conjunto de valores não zero especifica o SGD de tolerância usado para determinar a convergência.
O valor padrão é 0 especificar que o SGD não é usado.
init_wts_diameter
Define o diâmetro dos pesos iniciais que especifica o intervalo do qual os valores são desenhados para os pesos iniciais. Esses pesos são inicializados aleatoriamente dentro desse intervalo. Por exemplo, se o diâmetro for especificado como sendo d, os pesos serão distribuídos uniformemente 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 serem usados no treinamento do modelo.
Isso deve ser definido como o número de núcleos no computador. Observe que o L-BFGS multi-threading tenta carregar o conjunto de dados na memória. No caso de problemas de memória insuficiente, defina train_threads para 1 desativar vários threadings. Se Nenhum o número de threads a serem usados for determinado internamente. O valor padrão é None.
dense_optimizer
Se True, força a densificação dos vetores de otimização interna. Se Falseo otimizador de regressão logística habilitar o uso de estados internos esparsos ou densos conforme apropriado.
A configuração denseOptimizer para True exigir que o otimizador interno use um estado interno denso, o que pode ajudar a aliviar a carga no coletor de lixo para algumas variedades de problemas maiores.
Normalizar
Especifica o tipo de normalização automática usado:
"Auto": se a normalização for necessária, ela será executada automaticamente. Essa é a opção padrão."No": nenhuma normalização é executada."Yes": a normalização é executada."Warn": se a normalização for necessária, uma mensagem de aviso será exibida, mas a normalização não será executada.
A normalização redimensiona intervalos de dados diferentes para uma escala padrão. O dimensionamento de recursos garante que as distâncias entre os pontos de dados sejam proporcionais e permite que vários métodos de otimização, como descendente de gradiente, convergam muito mais rapidamente. Se a normalização for executada, um MaxMin normalizador será usado. Normaliza valores em um intervalo [a, b] onde -1 <= a <= 0 e 0 <= b <= 1b - a = 1. Esse normalizador preserva a moderação mapeando zero a zero.
ml_transforms
Especifica uma lista de transformações do MicrosoftML a serem executadas nos dados antes do treinamento ou Nenhuma se nenhuma transformação deve ser executada. Consulte featurize_text, categoricale categorical_hash, para transformações com suporte.
Essas transformações são executadas após quaisquer transformações do Python especificadas.
O valor padrão é None.
ml_transform_vars
Especifica um vetor de caracteres de nomes de variáveis a serem usados ou ml_transformsNenhum se nenhum for usado.
O valor padrão é None.
row_selection
SEM SUPORTE. Especifica as linhas (observações) do conjunto de dados que devem ser 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 no conjunto de dados. Por exemplo:
row_selection = "old"usará apenas observações nas quais o valor da variáveloldéTrue.row_selection = (age > 20) & (age < 65) & (log(income) > 10)usa apenas observações nas quais o valor daagevariável está entre 20 e 65 e o valor dalogincomevariável é maior que 10.
A seleção de linha é executada após o processamento de transformações de dados (consulte os argumentos transforms ou transform_function). Assim como acontece com todas as expressões, row_selection pode ser definido fora da chamada de função usando a expression função.
Transforma
SEM SUPORTE. Uma expressão do formulário que representa a primeira rodada de transformações variáveis. Assim como acontece com todas as expressões, transforms (ou row_selection) pode ser definido fora da chamada de função usando a expression função.
transform_objects
SEM SUPORTE. Uma lista nomeada que contém objetos que podem ser referenciados por transforms, transform_functione row_selection.
transform_function
A função de transformação variável.
transform_variables
Um vetor de caractere das variáveis de conjunto de dados de entrada necessárias para a função de transformação.
transform_packages
SEM SUPORTE. Um vetor de caracteres que especifica pacotes python adicionais (fora daqueles especificados em RxOptions.get_option("transform_packages")) a serem disponibilizados e pré-carregados para uso em funções de transformação variável.
Por exemplo, aqueles explicitamente definidos em funções revoscalepy por meio de seus transforms argumentos ou transform_function argumentos ou aqueles definidos implicitamente por meio de seus formula argumentos ou row_selection argumentos. O transform_packages argumento também pode ser Nenhum, indicando que nenhum pacote externo RxOptions.get_option("transform_packages") está pré-carregado.
transform_environment
SEM SUPORTE. Um ambiente definido pelo usuário para servir como pai para todos os ambientes desenvolvidos internamente e usados para transformação de dados variáveis.
Se transform_environment = None, um novo ambiente "hash" com parent revoscalepy.baseenv será usado em vez disso.
blocks_per_read
Especifica o número de blocos a serem lidos para cada parte dos dados lidos da fonte de dados.
report_progress
Um valor inteiro que especifica o nível de relatório sobre o progresso do processamento de linhas:
0: nenhum progresso é relatado.1: o número de linhas processadas é impresso e atualizado.2: linhas processadas e intervalos são relatados.3: linhas processadas e todos os intervalos são relatados.
detalhada
Um valor inteiro que especifica a quantidade de saída desejada.
Se 0, nenhuma saída detalhada será impressa durante os cálculos. Valores inteiros de 1 para 4 fornecer quantidades crescentes de informações.
compute_context
Define o contexto no qual os cálculos são executados, especificado com um revoscalepy válido. RxComputeContext. Atualmente local e revoscalepy. Há suporte para contextos de computação RxInSqlServer .
Conjunto
Controlar parâmetros para ensembling.
Devoluções
Um LogisticRegression objeto com o modelo treinado.
Observação
Esse algoritmo tentará carregar todo o conjunto de dados na memória quando train_threads > 1 (vários threadings).
Consulte também
Referências
Wikipédia: Regressão logística
Treinamento escalonável de modelos de L1-Regularized Log-Linear
Execução de teste – Regularização L1 e L2 para Machine Learning
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))
Saída:
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 multiclasse
'''
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))
Saída:
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