glmnet z własnym trainControl i strojeniem
Jak widziałeś w filmie, model glmnet dopasowuje wiele modeli jednocześnie – to jedna z największych zalet tego pakietu. Możesz to wykorzystać, podając dużą liczbę wartości lambda, które kontrolują poziom regularyzacji w modelu. Funkcja train() jest na tyle inteligentna, że dopasowuje tylko jeden model na wartość alpha, przekazując wszystkie wartości lambda jednocześnie.
Moja ulubiona siatka strojenia dla modeli glmnet wygląda tak:
expand.grid(
alpha = 0:1,
lambda = seq(0.0001, 1, length = 100)
)
Ta siatka przeszukuje dużą liczbę wartości lambda (100, żeby być precyzyjnym) – od bardzo małych do bardzo dużych. (Możesz zwiększyć maksymalną wartość lambda do 10, ale w tym ćwiczeniu 1 to dobra górna granica.)
Jeśli chcesz przetestować mniej modeli, użyj krótszej sekwencji lambda. Na przykład lambda = seq(0.0001, 1, length = 10) dopasuje 10 modeli na każdą wartość alpha.
Dzięki tej siatce tuneGrid sprawdzisz też dwie formy modeli z regularyzacją: regresję grzbietową i regresję lasso. alpha = 0 oznacza czystą regresję grzbietową, a alpha = 1 – czystą regresję lasso. Możesz również dopasować mieszankę obu modeli (czyli elastic net), używając wartości alpha między 0 a 1. Na przykład alpha = 0.05 to 95% regresji grzbietowej i 5% regresji lasso.
W tym zadaniu skupisz się wyłącznie na dwóch skrajnościach – czystej regresji grzbietowej i czystej regresji lasso – aby zilustrować różnice między nimi.
To ćwiczenie jest częścią kursu
Uczenie maszynowe z caret w R
Instrukcje do ćwiczenia
- Wytrenuj model
glmnetna danychoverfittak, abyybyło zmienną odpowiedzi, a wszystkie pozostałe zmienne – zmiennymi objaśniającymi. Pamiętaj, żeby użyć własnego obiektutrainControlz poprzedniego ćwiczenia (myControl). Użyj też własnej siatkituneGrid, która przeszukaalpha = 0:1i 20 wartościlambdaod 0,0001 do 1 dla każdej wartości alpha. - Wyświetl
modelw konsoli. - Wyświetl wartość
max()statystyki ROC zmodel[["results"]]. Możesz ją uzyskać za pomocąmodel[["results"]][["ROC"]].
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# Train glmnet with custom trainControl and tuning: model
model <- train(
___,
___,
tuneGrid = ___(
___,
___
),
method = ___,
trControl = ___
)
# Print model to console
# Print maximum ROC statistic