glmnet із власними trainControl і підбиранням параметрів
Як ви бачили у відео, модель glmnet насправді навчає багато моделей одночасно (це одна з сильних сторін пакета). Ви можете скористатися цим, передавши велику кількість значень lambda, які контролюють силу штрафу в моделі. train() достатньо розумна, щоб навчити лише одну модель на кожне значення alpha і передати всі значення lambda одразу для паралельного навчання.
Моя улюблена сітка для підбирання параметрів моделей glmnet така:
expand.grid(
alpha = 0:1,
lambda = seq(0.0001, 1, length = 100)
)
Ця сітка досліджує багато значень lambda (фактично 100) — від дуже малого до дуже великого. (Можна збільшити максимальне lambda до 10, але в цій вправі 1 — доречна верхня межа.)
Якщо хочете розглянути менше моделей, використайте коротшу послідовність lambda. Наприклад, lambda = seq(0.0001, 1, length = 10) навчить 10 моделей на кожне значення alpha.
За допомогою цього tuneGrid ви також розглянете дві форми моделей із штрафами: гребеневу регресію (ridge) та ласо-регресію (lasso). alpha = 0 — це чиста гребенева регресія, а alpha = 1 — чиста ласо-регресія. Можна поєднати ці дві моделі (тобто elastic net), використавши alpha між 0 та 1. Наприклад, alpha = 0.05 означає 95% гребеневої та 5% ласо-регресії.
У цій задачі ви розглянете лише два екстремальні випадки — чисту гребеневу та чисту ласо-регресію — щоб проілюструвати їхні відмінності.
Ця вправа є частиною курсу
Machine Learning з пакетом caret в R
Інструкції до вправи
- Навчіть модель
glmnetна данихoverfitтак, щобyбула цільовою змінною, а всі інші змінні — пояснювальними. Обовʼязково використайте власнийtrainControlз попередньої вправи (myControl). Також задайте власнийtuneGrid, щоб дослідитиalpha = 0:1і 20 значеньlambdaміж 0.0001 і 1 для кожного значення alpha. - Виведіть
modelу консоль. - Виведіть
max()статистики ROC уmodel[["results"]]. Дістати її можна так:model[["results"]][["ROC"]].
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# Train glmnet with custom trainControl and tuning: model
model <- train(
___,
___,
tuneGrid = ___(
___,
___
),
method = ___,
trControl = ___
)
# Print model to console
# Print maximum ROC statistic