ComenzarEmpieza gratis

glmnet con trainControl y ajuste personalizados

Como viste en el vídeo, el modelo glmnet en realidad ajusta muchos modelos a la vez (una de las grandes ventajas del paquete). Puedes aprovechar esto pasando un gran número de valores de lambda, que controlan la cantidad de penalización en el modelo. train() es lo suficientemente inteligente como para ajustar solo un modelo por valor de alpha y pasar todos los valores de lambda a la vez para un ajuste simultáneo.

Mi cuadrícula de ajuste favorita para modelos glmnet es:

expand.grid(
  alpha = 0:1,
  lambda = seq(0.0001, 1, length = 100)
)

Esta cuadrícula explora un gran número de valores de lambda (100, de hecho), desde uno muy pequeño hasta uno muy grande. (Podrías aumentar el lambda máximo a 10, pero en este ejercicio 1 es un buen límite superior.)

Si quieres explorar menos modelos, puedes usar una secuencia de lambda más corta. Por ejemplo, lambda = seq(0.0001, 1, length = 10) ajustaría 10 modelos por cada valor de alpha.

Con este tuneGrid también examinas las dos formas de modelos penalizados: regresión ridge y regresión lasso. alpha = 0 es regresión ridge pura, y alpha = 1 es regresión lasso pura. Puedes ajustar una mezcla de ambos modelos (es decir, un elastic net) usando un alpha entre 0 y 1. Por ejemplo, alpha = 0.05 sería 95% regresión ridge y 5% regresión lasso.

En este ejercicio solo explorarás los 2 extremos – regresión ridge pura y regresión lasso pura – para ilustrar sus diferencias.

Este ejercicio forma parte del curso

Machine Learning con caret en R

Ver curso

Instrucciones del ejercicio

  • Entrena un modelo glmnet con los datos overfit de forma que y sea la variable respuesta y el resto de variables sean explicativas. Asegúrate de usar tu trainControl personalizado del ejercicio anterior (myControl). Además, usa un tuneGrid personalizado para explorar alpha = 0:1 y 20 valores de lambda entre 0.0001 y 1 por cada valor de alpha.
  • Imprime model en la consola.
  • Imprime el max() de la métrica ROC en model[["results"]]. Puedes acceder a ella con model[["results"]][["ROC"]].

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

# Train glmnet with custom trainControl and tuning: model
model <- train(
  ___, 
  ___,
  tuneGrid = ___(
    ___,
    ___
  ),
  method = ___,
  trControl = ___
)

# Print model to console


# Print maximum ROC statistic
Editar y ejecutar código