Jak wybrać model z tego wyjścia [zewnętrzna weryfikacja krzyżowa]?
Krótka odpowiedź: nie.
Traktuj wewnętrzną walidację krzyżową jako część procedury dopasowania modelu. Oznacza to, że dopasowanie, w tym dopasowanie hiperparametrów (tutaj kryje się wewnętrzna walidacja krzyżowa), jest jak każda inna procedura esitmacji modelu.
Zewnętrzna walidacja krzyżowa szacuje wydajność tego podejścia do dopasowania modelu. W tym celu stosuje się zwykłe założenia
- te k zewnętrzne modele zastępcze są równoważne do „prawdziwego” modelu zbudowanego przez
model.fitting.procedure
wszystkich danych.
- k
k
Jak więc użyć zagnieżdżonego CV do wyboru modelu?
Wewnętrzna CV ma wybór.
Wydaje mi się, że wybranie najlepszego modelu spośród zwycięskich modeli K nie byłoby uczciwym porównaniem, ponieważ każdy model został przeszkolony i przetestowany na różnych częściach zestawu danych.
k
- Brak takich samych danych testowych: ponieważ chcesz później twierdzić, że wyniki testu uogólniają się na dane nigdy nie widziane, nie może to mieć znaczenia.
- Brak tych samych danych treningowych:
- jeśli modele są stabilne, nie robi to różnicy: Stabilność tutaj oznacza, że model nie zmienia się (dużo), jeśli dane treningowe są „zaburzone” przez zastąpienie kilku przypadków innymi przypadkami.
- jeśli modele nie są stabilne, ważne są trzy kwestie:
- k
- k
- Jeśli niestabilność stanowi prawdziwy problem, nie można dobrze ekstrapolować na wydajność modelu „rzeczywistego”.
Co prowadzi mnie do twojego ostatniego pytania:
Jakie analizy / kontrole mogę zrobić z wynikami uzyskanymi z zewnętrznych K foldów?
- sprawdź stabilność prognoz (użyj iterowanej / powtarzanej walidacji krzyżowej)
sprawdź stabilność / zmienność zoptymalizowanych hiperparametrów.
Po pierwsze, gwałtownie rozpraszające hiper-parametry mogą wskazywać, że wewnętrzna optymalizacja nie zadziałała. Po drugie, może to pozwolić ci zdecydować o hiperparametrach bez kosztownego kroku optymalizacji w podobnych sytuacjach w przyszłości. Z kosztownymi nie odnoszę się do zasobów obliczeniowych, ale do faktu, że ta „kosztowna” informacja może być lepiej wykorzystana do oszacowania „normalnych” parametrów modelu.
sprawdź różnicę między wewnętrznym i zewnętrznym oszacowaniem wybranego modelu. Jeśli istnieje duża różnica (wewnętrzna jest zbyt optymistyczna), istnieje ryzyko, że wewnętrzna optymalizacja nie działała dobrze z powodu przeregulowania.
aktualizacja @ pytanie użytkownika user99889: Co zrobić, jeśli zewnętrzne CV znajdzie niestabilność?
Po pierwsze, wykrycie w zewnętrznej pętli CV, że modele nie dają stabilnych prognoz w tym zakresie, tak naprawdę nie różni się od wykrycia, że błąd predykcji jest zbyt wysoki dla aplikacji. Jest to jeden z możliwych wyników walidacji (lub weryfikacji) modelu, co oznacza, że model, który mamy, nie jest odpowiedni do swoich celów.
W komentarzu do @davips zastanawiałem się nad rozwiązaniem problemu niestabilności w wewnętrznym CV - czyli w ramach procesu optymalizacji modelu.
Ale z pewnością masz rację: jeśli zmienimy nasz model w oparciu o ustalenia zewnętrznego CV, konieczna jest kolejna runda niezależnych testów zmienionego modelu.
Jednak niestabilność w zewnętrznym CV byłaby również znakiem, że optymalizacja nie była dobrze skonfigurowana - więc znalezienie niestabilności w zewnętrznym CV oznacza, że wewnętrzne CV nie karało niestabilności w niezbędny sposób - to byłby mój główny punkt krytyka w takiej sytuacji. Innymi słowy, dlaczego optymalizacja pozwala / prowadzi do modeli o wysokim stopniu dopasowania?
Jest jednak jedna osobliwość, że IMHO może usprawiedliwić dalszą zmianę „ostatecznego” modelu po starannym rozważeniu dokładnych okoliczności : Ponieważ wykryliśmy nadmierne dopasowanie, każda proponowana zmiana (mniej df / bardziej restrykcyjnych lub agregujących) w modelu być w kierunku mniej nadmiernego dopasowania (lub przynajmniej hiperparametrów, które są mniej podatne na nadmierne dopasowanie). Celem niezależnych testów jest wykrycie przeregulowania - niedopasowanie można wykryć na podstawie danych, które zostały już wykorzystane w procesie szkolenia.
Więc jeśli mówimy, powiedzmy, o dalszym zmniejszeniu liczby ukrytych zmiennych w modelu PLS, które byłyby porównywalnie łagodne (jeśli proponowana zmiana byłaby zupełnie innym typem modelu, powiedzmy PLS zamiast SVM, wszystkie zakłady byłyby wyłączone ) i byłbym jeszcze bardziej zrelaksowany, gdybym wiedział, że i tak jesteśmy na pośrednim etapie modelowania - w końcu jeśli zoptymalizowane modele są nadal niestabilne, nie ma wątpliwości, że potrzeba więcej przypadków. Ponadto w wielu sytuacjach konieczne będzie przeprowadzenie badań, które mają na celu prawidłowe przetestowanie różnych aspektów wydajności (np. Uogólnienie na dane pozyskane w przyszłości). Nadal jednak nalegam, aby należało zgłosić pełny proces modelowania i że konsekwencje tych późnych zmian trzeba będzie dokładnie omówić.
Również agregacja, w tym oszacowanie wydajności analogowego CV po wyjęciu z torby, byłoby możliwe na podstawie już dostępnych wyników - co jest drugim rodzajem „przetwarzania końcowego” modelu, który chciałbym tutaj rozważyć jako łagodny. Po raz kolejny byłoby lepiej, gdyby badanie zostało zaprojektowane od początku w celu sprawdzenia, czy agregacja nie daje przewagi nad poszczególnymi predykcjami (co jest innym sposobem stwierdzenia, że poszczególne modele są stabilne).
Aktualizacja (2019): im więcej myślę o tych sytuacjach, tym bardziej przychylam się do podejścia „walidacja krzyżowa zagnieżdżona najwyraźniej bez zagnieżdżania” .
Oprócz doskonałej odpowiedzi cebeleitów (+1), podstawową ideą jest to, że walidacja krzyżowa służy do oceny wydajności metody dopasowania modelu, a nie samego modelu. Jeśli musisz dokonać wyboru modelu, musisz to zrobić niezależnie w każdej zakładce procedury weryfikacji krzyżowej, ponieważ jest to integralna część procedury dopasowania modelu. Jeśli zastosujesz procedurę wyboru modelu opartą na weryfikacji krzyżowej, oznacza to, że skończysz na zagnieżdżonej weryfikacji krzyżowej. Pomocne jest rozważenie celu każdej walidacji krzyżowej - jedna służy do wyboru modelu, a druga do oceny wydajności.
Ostateczny model wykonałbym, dopasowując model (w tym wybór modelu) do całego zestawu danych, po użyciu zagnieżdżonej weryfikacji krzyżowej, aby uzyskać wyobrażenie o wydajności, jakiej można oczekiwać od tego modelu.
źródło
get an idea of the performance
?Nie sądzę, żeby ktokolwiek tak naprawdę odpowiedział na pierwsze pytanie. Przez „Nested cross-validation” myślę, że miał na myśli połączenie go z GridSearch. Zwykle GridSearch ma wbudowane CV i pobiera parametr określający, ile fałd chcemy przetestować. Łącząc te dwa, uważam, że to dobra praktyka, ale model GridSearch i CrossValidation nie jest twoim ostatecznym modelem. Powinieneś wybrać najlepsze parametry i ostatecznie wyszkolić nowy model ze wszystkimi swoimi danymi, a nawet zrobić CrossValidation tutaj również na niewidocznych danych, a następnie, jeśli model naprawdę jest tak dobry, trenuj go na wszystkich swoich danych. To jest twój ostateczny model.
źródło
GridSearchCV(refit=True)
faktycznie naprawia model na PEŁNYCH danych przy użyciu najlepszych parametrów, więc dodatkowy krok nie jest konieczny. Zobacz dokumenty