glmnet com trainControl e ajuste personalizados
Como você viu no vídeo, o modelo glmnet na verdade ajusta muitos modelos de uma vez (uma das grandes vantagens do pacote). Você pode aproveitar isso passando um grande número de valores de lambda, que controlam o nível de penalização no modelo. O train() é esperto o suficiente para ajustar apenas um modelo por valor de alpha e passar todos os valores de lambda de uma vez para ajuste simultâneo.
Meu grid de ajuste favorito para modelos glmnet é:
expand.grid(
alpha = 0:1,
lambda = seq(0.0001, 1, length = 100)
)
Esse grid explora um grande número de valores de lambda (100, na verdade), de um valor bem pequeno até um bem grande. (Você poderia aumentar o lambda máximo para 10, mas neste exercício 1 é um bom limite superior.)
Se você quiser explorar menos modelos, pode usar uma sequência de lambda mais curta. Por exemplo, lambda = seq(0.0001, 1, length = 10) ajustaria 10 modelos por valor de alpha.
Você também observa as duas formas de modelos penalizados com esse tuneGrid: regressão ridge e regressão lasso. alpha = 0 é regressão ridge pura, e alpha = 1 é regressão lasso pura. Você pode ajustar uma mistura dos dois modelos (isto é, um elastic net) usando um alpha entre 0 e 1. Por exemplo, alpha = 0.05 seria 95% regressão ridge e 5% regressão lasso.
Neste problema você vai explorar apenas os 2 extremos – regressão ridge pura e regressão lasso pura – para ilustrar suas diferenças.
Este exercício faz parte do curso
Machine Learning com caret em R
Instruções do exercício
- Treine um modelo
glmnetcom os dadosoverfitde forma queyseja a variável resposta e todas as outras sejam variáveis explicativas. Lembre-se de usar seutrainControlpersonalizado do exercício anterior (myControl). Além disso, use umtuneGridpersonalizado para exploraralpha = 0:1e 20 valores delambdaentre 0.0001 e 1 por valor de alpha. - Imprima
modelno console. - Imprima o
max()da estatística ROC emmodel[["results"]]. Você pode acessá-la usandomodel[["results"]][["ROC"]].
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# Train glmnet with custom trainControl and tuning: model
model <- train(
___,
___,
tuneGrid = ___(
___,
___
),
method = ___,
trControl = ___
)
# Print model to console
# Print maximum ROC statistic