Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Regressão Logística de Aprendizagem Automática
Usage
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
A fórmula conforme descrita no rxFormula. Os termos de interação e F() não são atualmente suportados no MicrosoftML.
data
Um objeto fonte de dados ou uma cadeia de caracteres que especifica um ficheiro .xdf ou um objeto data frame.
type
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 "multi" para regressão logística multinomial.
l2Weight
O peso de regularização L2. O seu valor deve ser maior ou igual a 0 e o valor padrão é definido como 1.
l1Weight
O peso de regularização L1. O seu valor deve ser maior ou igual a 0 e o valor padrão é definido como 1.
optTol
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.
memorySize
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.
initWtsScale
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.
maxIterations
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.
showTrainingStats
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, consulte summary.mlModel.
sgdInitTol
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.
trainThreads
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 trainThreads para 1 desligar o multi-threading. Se NULL o número de threads a usar for determinado internamente. O valor predefinido é NULL.
denseOptimizer
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.
normalize
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 umMaxMinnormalizador. Normaliza valores num intervalo [a, b] onde-1 <= a <= 0e0 <= b <= 1eb - a = 1. Este normalizador preserva a esparsidade ao mapear zero para zero.
mlTransforms
Especifica uma lista de transformações MicrosoftML a realizar nos dados antes do treino ou NULL se não forem realizadas transformações. Consulte featurizeText, categorical e categoricalHash, para transformações suportadas. Estas transformações são realizadas após quaisquer transformações R especificadas. O valor predefinido é NULL.
mlTransformVars
Especifica um vetor de caracteres com nomes de variáveis a serem usados em mlTransforms ou NULL , se não forem necessários. O valor predefinido é NULL.
rowSelection
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, rowSelection = "old" só usará observações em que o valor da variável old é TRUE.
rowSelection = (age > 20) & (age < 65) & (log(income) > 10) só utiliza observações em que o valor da age variável está entre 20 e 65 e o valor log da income variá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 transformFunc). Como em todas as expressões, rowSelection pode ser definido fora da chamada de função usando a função de expressão.
transforms
Uma expressão da forma list(name = expression, ``...) que representa a primeira ronda de transformações de variáveis. Como em todas as expressões, transforms (ou rowSelection) pode ser definido fora da chamada de função usando a função de expressão.
transformObjects
Uma lista nomeada que contém objetos que podem ser referenciados por transforms, transformsFunc, e rowSelection.
transformFunc
A função de transformação de variáveis. Consulte rxTransform para mais detalhes.
transformVars
Um vetor de caracteres das variáveis do conjunto de dados de entrada necessárias para a função de transformação. Consulte rxTransform para mais detalhes.
transformPackages
Um vetor de caracteres que especifica pacotes adicionais R (para além dos especificados em rxGetOption("transformPackages")) 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 do RevoScaleR através dos argumentos their transforms and transformFunc ou aquelas definidas implicitamente através dos argumentos their formula or rowSelection . O argumento transformPackages pode também ser NULL, indicando que nenhum pacote externo rxGetOption("transformPackages") está pré-carregado.
transformEnvir
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 transformEnvir = NULL, é utilizado em vez disso um novo ambiente "hash" com o pai baseenv() .
blocksPerRead
Especifica o número de blocos a ler para cada bloco de dados lido da fonte de dados.
reportProgress
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.
computeContext
Define o contexto em que os cálculos são executados, especificado com um RxComputeContext válido. Atualmente, são suportados contextos de computação locais e RxInSqlServer.
ensemble
Parâmetros de controlo para a montagem.
...
Argumentos adicionais a serem transmitidos diretamente ao Microsoft Compute Engine.
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 rxLogisticRegression é 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 memorySize 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.
l1Weight: 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.
l2Weight: é preferível para dados que não são esparsos. Puxa grandes pesos para o zero.
Adicionar a penalização da crista à regularização compensa algumas das falhas do laço
limitações. Pode melhorar a sua precisão preditiva, por exemplo, quando o número de preditores é superior ao tamanho da amostra.
Se x = l1Weight e y = l2Weight, 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.
Value
rxLogisticRegression: Um rxLogisticRegression objeto com o modelo treinado.
LogisticReg: Um objeto de classe maml de especificação de aprendiz para o formador de Registo Logístico.
Notes
Este algoritmo tentará carregar todo o conjunto de dados na memória quando trainThreads > 1 (multi-threading).
Autor(es)
Microsoft CorporationMicrosoft Technical Support
References
Training of L1-Regularized Log-Linear Models
and L2 Regularization for Machine Learning
Ver também
rxFastTrees, rxFastForest, rxFastLinear, rxNeuralNet, rxOneClassSvm, featurizeText, categorical, categoricalHash, rxPredict.mlModel.
Exemplos
# 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,]