Wykonuję regresję logistyczną elastycznej sieci dla zestawu danych opieki zdrowotnej, używając glmnetpakietu w R, wybierając wartości lambda na siatce od 0 do 1. Mój skrócony kod znajduje się poniżej:
alphalist <- seq(0,1,by=0.1)
elasticnet <- lapply(alphalist, function(a){
cv.glmnet(x, y, alpha=a, family="binomial", lambda.min.ratio=.001)
})
for (i in 1:11) {print(min(elasticnet[[i]]$cvm))}
która wyprowadza średni błąd zwalidowany krzyżowo dla każdej wartości alfa od do z przyrostem :1,0 0,1
[1] 0.2080167
[1] 0.1947478
[1] 0.1949832
[1] 0.1946211
[1] 0.1947906
[1] 0.1953286
[1] 0.194827
[1] 0.1944735
[1] 0.1942612
[1] 0.1944079
[1] 0.1948874
Na podstawie tego, co przeczytałem w literaturze, optymalnym wyborem jest miejsce, w którym błąd cv jest zminimalizowany. Ale istnieje wiele różnic w błędach w zakresie alfa. Widzę kilka lokalnych minimów z globalnym błędem minimalnym dla .0.1942612alpha=0.8
Czy to jest bezpieczne alpha=0.8? Lub, biorąc pod uwagę tę odmianę, czy powinienem ponownie uruchomić cv.glmnetz większą liczbą fałd walidacji krzyżowej (np. zamiast ), czy może większą liczbą przyrostów pomiędzy i, aby uzyskać wyraźny obraz ścieżki błędu CV?10 αalpha=0.01.0
cv.glmnet()bez przekazywania foldidsutworzonego ze znanego losowego materiału siewnego.


caretpakiet, który może powtarzać cv i dostroić zarówno alfa, jak i lambda (obsługuje przetwarzanie wielordzeniowe!). Z pamięci myślę, żeglmnetdokumentacja odradza strojenie alfy tak jak tutaj. Zaleca się utrzymywanie stałych foldidów, jeśli użytkownik dostraja alfa oprócz strojenia lambda dostarczonego przezcv.glmnet.