ПочатиПочніть безкоштовно

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
Редагувати та запускати код