ComeçarComece de graça

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

Ver curso

Instruções do exercício

  • Treine um modelo glmnet com os dados overfit de forma que y seja a variável resposta e todas as outras sejam variáveis explicativas. Lembre-se de usar seu trainControl personalizado do exercício anterior (myControl). Além disso, use um tuneGrid personalizado para explorar alpha = 0:1 e 20 valores de lambda entre 0.0001 e 1 por valor de alpha.
  • Imprima model no console.
  • Imprima o max() da estatística ROC em model[["results"]]. Você pode acessá-la usando model[["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
Editar e executar o código