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
Instrucciones del ejercicio
- Entrena un modelo
glmnetcon los datosoverfitde forma queysea la variable respuesta y el resto de variables sean explicativas. Asegúrate de usar tutrainControlpersonalizado del ejercicio anterior (myControl). Además, usa untuneGridpersonalizado para exploraralpha = 0:1y 20 valores delambdaentre 0.0001 y 1 por cada valor de alpha. - Imprime
modelen la consola. - Imprime el
max()de la métrica ROC enmodel[["results"]]. Puedes acceder a ella conmodel[["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