Zagnieżdżone sprawdzanie poprawności wyboru modelu

91

Jak wykorzystać zagnieżdżoną weryfikację krzyżową do wyboru modelu ?

Z tego, co czytam online, zagnieżdżone CV działa w następujący sposób:

  • Istnieje wewnętrzna pętla CV, w której możemy przeprowadzić wyszukiwanie siatki (np. Uruchomienie K-fold dla każdego dostępnego modelu, np. Kombinacja hiperparametrów / funkcji)
  • Istnieje zewnętrzna pętla CV, w której mierzymy wydajność modelu, który wygrał w zakładce wewnętrznej, na osobnej zakładce zewnętrznej.

Pod koniec tego procesu koniec z modelach ( jest liczbą fałd w zewnętrznej pętli). Modele te wygrały w wyszukiwaniu siatki w wewnętrznym CV i prawdopodobnie są różne (np. Maszyny SVM z różnymi jądrami, wyszkolone z możliwie różnymi funkcjami, w zależności od wyszukiwania siatki).K.K.

Jak wybrać model z tego wyjścia? Wydaje mi się, że wybranie najlepszego modelu spośród zwycięskich modeli nie byłoby uczciwym porównaniem, ponieważ każdy model został przeszkolony i przetestowany na różnych częściach zestawu danych.K.

Jak więc użyć zagnieżdżonego CV do wyboru modelu?

Przeczytałem również wątki omawiające, w jaki sposób wybór modelu zagnieżdżonego jest przydatny do analizy procedury uczenia się. Jakie analizy / kontrole mogę zrobić z wynikami uzyskanymi z zewnętrznych K foldów?

Amelio Vazquez-Reina
źródło

Odpowiedzi:

76

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.procedurewszystkich 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:
      1. k
      2. k
      3. 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” .

cbeleity
źródło
Jeżeli model klasyfikatora jest niestabilny, wybierz model Wrt, czy powinniśmy wybrać ten z medianą wydajności wśród najlepszych? Ten wybór byłby analogiczny do Twojej sugestii, aby porównać wydajność wewnętrzną z wydajnością zewnętrzną.
viyps
2
@davips: Jeśli modele są niestabilne, optymalizacja nie będzie działać (niestabilność powoduje dodatkową wariancję). Jednak wybór jednego modelu z medianą (lub średnią) wydajnością nie pomoże. Zamiast tego, jeśli modele są niestabilne, polecam albo wybrać bardziej restrykcyjne modele (np. Silniejszą regularyzację), albo zbudować zespół modeli (który zasadniczo różni się od wyboru jednego modelu).
cbeleites,
1
@ user99889: zobacz zaktualizowaną odpowiedź.
cbeleites
1
@ user99889: tak - ale nie oczekuj tam cudów. Jeśli stabilność jest problemem podczas treningu z 80% przypadków (k = 5), prawdopodobnie będzie to nadal problem z k = 10, tj. 90% n = dodatkowe 12,5% w porównaniu do modeli zastępczych 80% / k = 5.
cbeleites
1
@cbeleites: powiązany hipotetyczny. Załóżmy, że postanowiłem przeszukać przestrzeń parametrów c: [1,2,3]. Wykonuję zagnieżdżone CV na całym zestawie danych i uważam, że wydajność nie jest tak świetna. Dlatego rozszerzam przestrzeń wyszukiwania do c: [0,5,1,1,5,2,2,5,3,3,5,4]. Czy zrobiłem coś bardzo złego? Wygląda na to, że zasadniczo zmieniłem przestrzeń parametrów (która jest częścią procesu modelowania) w oparciu o wiedzę uzyskaną z danych testowych i dlatego muszę oceniać zestaw danych zewnętrzny w stosunku do mojego obecnego zestawu danych? Z przyjemnością sprawię, że będzie to osobne pytanie, jeśli uważasz, że najlepiej.
użytkownik0
27

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.

Dikran Torbacz
źródło
1
Dlaczego trzeba get an idea of the performance?
viyps
1
@davips Zasadniczo, jeśli do celów praktycznych zostanie zastosowana metoda statystyczna, użytkownicy często chcą mieć pojęcie o jej skuteczności (np. medyczny test przesiewowy). Również jeśli opracowujesz algorytm uczenia maszynowego, warto mieć obiektywne oszacowanie jego skuteczności w porównaniu z metodami konkurującymi. Jest to również przydatny sposób sprawdzania, czy metoda faktycznie działa (co jest unieważniane, jeśli walidacja krzyżowa jest używana zarówno do wyboru parametrów, jak i do oszacowania wydajności).
Dikran Torbacz
5
Więc żeby faktycznie zdecydować, jakiego parametru użyć w ostatecznym modelu, zrobiłbyś pętlę wewnętrzną jeden raz? Więc jeśli wewnętrzna pętla miała 10-krotną walidację, trzymałbyś 1/10 ciągu danych każdy model powtórzył to 10 razy, a następnie wybrałeś wartość parametru z najmniejszym średnim błędem? Następnie ponownie przeszkolić model z tą wartością parametru w całym zestawie danych?
emschorsch
2
Tak to jest poprawne. r
Dikran Marsupial
1
@FedericoTedeschi Weryfikacje krzyżowe muszą być zagnieżdżone, a nie tylko inny podział w celu uzyskania obiektywnego oszacowania wydajności (patrz sekcja 5.3 mojego artykułu jmlr.csail.mit.edu/papers/volume11/cawley10a/cawley10a.pdf ) . Zasadniczo używam LOOCV tylko do wyboru modelu dla modeli, w których można go obliczyć wydajnie, i używałbym ładowania początkowego / workowania dla modeli małych zestawów danych (z błędem OOB zastępującym zewnętrzną walidację krzyżową).
Dikran Marsupial,
7

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.

anselal
źródło
3
dla wyjaśnienia, w python scikit-learn, 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
Paul
Masz rację co do opcji remontu. Po prostu stwierdziłem, że jestem oczywisty !!
anselal
„model z GridSearch nie jest twoim ostatecznym modelem”. Chodzi mi jednak o to, że model wyszukiwania siatki z refit = True jest modelem ostatecznym. Masz na myśli, że ty i ja jesteśmy na tej samej stronie? Ale nadal nie widzę, gdzie się dzieje zagnieżdżanie w wyszukiwaniu siatki za pomocą CV. Wydaje mi się, że to jedna warstwa CV (np. 5-krotne CV w wyszukiwaniu siatki to pojedyncza warstwa CV).
Paul
Jesteśmy na tej samej stronie dotyczącej remontu. Ale z zagnieżdżonym CV mamy na myśli, że tworzysz kolejną pętlę CV poza GridSearch, pozostawiając niektóre dane ze szkolenia i testując ostateczny model, aby sprawdzić, czy uogólnia (dokonuje dobrych prognoz na nieznane dane)
anselal