1. Učit se
  2. /
  3. Kurzy
  4. /
  5. Machine Learning s balíčkem caret v R

Connected

Cvičení

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ší.

Pokyny

100 XP
  • 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"]].