Začněte nyníZačněte zdarma

glmnet s vlastním trainControl a laděním

Jak jsi viděl/a ve videu, model glmnet ve skutečnosti natrénuje mnoho modelů najednou – to je jedna z jeho velkých výhod. Můžeš toho využít tak, že předáš velké množství hodnot lambda, které kontrolují míru penalizace v modelu. Funkce train() je dostatečně chytrá na to, aby natrénovala pouze jeden model na každou hodnotu alpha a všechny hodnoty lambda předala najednou pro současné vyhodnocení.

Můj oblíbený tuning grid pro modely glmnet je:

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

Tento grid prochází velké množství hodnot lambda (konkrétně 100) – od velmi malých až po velmi velké. (Maximum lambda by šlo zvýšit na 10, ale v tomto cvičení je 1 dostatečná horní mez.)

Pokud chceš prozkoumat méně modelů, použij kratší sekvenci hodnot lambda. Například lambda = seq(0.0001, 1, length = 10) natrénuje 10 modelů na každou hodnotu alpha.

S tímto tuneGrid se také podíváš na dvě formy penalizovaných modelů: ridge regresi a lasso regresi. alpha = 0 odpovídá čisté ridge regresi a alpha = 1 čisté lasso regresi. Jejich kombinaci (tzv. elastic net) dostaneš použitím hodnoty alpha mezi 0 a 1. Například alpha = 0.05 by znamenalo 95 % ridge regrese a 5 % lasso regrese.

V tomto cvičení prozkoumáš jen oba extrémy – čistou ridge a čistou lasso regresi – abys viděl/a, v čem se liší.

Toto cvičení je součástí kurzu

Machine Learning s balíčkem caret v R

Zobrazit kurz

Pokyny k cvičení

  • Natrénuj model glmnet na datech overfit tak, aby y bylo cílovou proměnnou a všechny ostatní proměnné byly vysvětlující. Nezapomeň použít vlastní trainControl z předchozího cvičení (myControl). Také použij vlastní tuneGrid, který prozkoumá alpha = 0:1 a 20 hodnot lambda mezi 0,0001 a 1 pro každou hodnotu alpha.
  • Vypiš model do konzole.
  • Vypiš max() statistiky ROC z model[["results"]]. Přistoupíš k ní přes model[["results"]][["ROC"]].

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

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

# Print model to console


# Print maximum ROC statistic
Upravit a spustit kód