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
Pokyny k cvičení
- Natrénuj model
glmnetna datechoverfittak, abyybylo cílovou proměnnou a všechny ostatní proměnné byly vysvětlující. Nezapomeň použít vlastnítrainControlz předchozího cvičení (myControl). Také použij vlastnítuneGrid, který prozkoumáalpha = 0:1a 20 hodnotlambdamezi 0,0001 a 1 pro každou hodnotu alpha. - Vypiš
modeldo konzole. - Vypiš
max()statistiky ROC zmodel[["results"]]. Přistoupíš k ní přesmodel[["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