Walidacja wstrzymania a walidacja krzyżowa


54

Wydaje mi się, że walidacja wstrzymania jest bezużyteczna. Oznacza to, że podzielenie oryginalnego zestawu danych na dwie części (szkolenie i testowanie) i wykorzystanie wyniku testu jako miary uogólnienia jest nieco bezużyteczne.

Walidacja krzyżowa K-fold wydaje się dawać lepsze przybliżenia uogólnienia (ponieważ trenuje i testuje w każdym punkcie). Dlaczego więc mielibyśmy używać standardowej walidacji wstrzymania? A może nawet o tym rozmawiać?


10
dlaczego uważasz, że to bezużyteczne? Możesz przeczytać część 7 teorii statystycznej nauki, aby uzyskać formalną analizę jego zalet i wad. Statystycznie rzecz biorąc, k-fold jest lepszy, ale użycie zestawu testowego niekoniecznie jest złe. Intuicyjnie należy wziąć pod uwagę, że zestaw testowy (przy prawidłowym użyciu) jest rzeczywiście zestawem danych, który w ogóle nie był używany podczas szkolenia. Jest więc zdecydowanie przydatny w pewnym sensie do oceny modelu. Również k-fold jest bardzo drogi, więc trzymanie się jest swego rodzaju „przybliżeniem” tego, co robi k-fold (ale dla kogoś o niskiej mocy obliczeniowej).
Charlie Parker,

Pewnie. Z teoretycznego punktu widzenia składanie K jest bardziej precyzyjne, ale LEKKO droższe obliczeniowo. Pytanie brzmiało: dlaczego NIE ZAWSZE przeprowadzać walidację krzyżową K-fold?

2
Widzę. Twierdziłbym, że powodem jest zawsze zawsze obliczenie. K-krotnie lepiej przybliża błąd uogólnienia, więc z statystycznego punktu widzenia K-krotnie jest metodą z wyboru. Hold-out jest znacznie prostszy do wdrożenia ORAZ nie wymaga szkolenia tak wielu modeli. W praktyce szkolenie modelu może być dość kosztowne.
Charlie Parker,

1
Racja - ale myślę, że argument „zbyt kosztowny obliczeniowo” jest dość kruchy. Niemal cały czas dążymy do opracowania najdokładniejszych modeli. Istnieje jednak paradoks, w którym wiele eksperymentów przeprowadzonych w literaturze ma tylko jeden zestaw walidacji.

1
Pytanie - Elementy teorii uczenia statystycznego, sekcja 7.10.1, zatytułowane „K-krotna walidacja krzyżowa” wydaje się wskazywać, że utrzymywanie danych testowych całkowicie osobno od danych treningowych (jak w przypadku walidacji typu out-out) jest idealne, a walidacja k-krotna jest tylko kompromisem, ponieważ dane są wielokrotnie niedostępne. Nadal jestem całkiem nowy w statystyce, czy mógłbyś wskazać, w jaki sposób krzyżowa walidacja jest w rzeczywistości bardziej precyzyjna?
numX

Odpowiedzi:


21

Domyślam się tylko, że możesz wytrzymać z trzema godzinami doświadczenia w programowaniu; drugi zajmuje tydzień zasadniczo i sześć miesięcy w praktyce.

Zasadniczo jest to proste, ale pisanie kodu jest żmudne i czasochłonne. Jak słynie Linus Torvalds: „Źli programiści martwią się o kod. Dobrzy programiści martwią się strukturami danych i ich relacjami”. Wiele osób zajmujących się statystykami jest złymi programistami, nie z własnej winy. Skuteczne wykonywanie k-krotnej weryfikacji krzyżowej (a to znaczy w sposób, który nie jest strasznie frustrujący przy debugowaniu i użyciu więcej niż raz) w R wymaga niejasnego zrozumienia struktur danych, ale struktury danych są zwykle pomijane w „intro” do samouczków programowania statystycznego. To tak, jak stara osoba po raz pierwszy korzystająca z Internetu. To naprawdę nie jest trudne, po prostu zajmuje to dodatkowe pół godziny, ale jest zupełnie nowy i sprawia, że ​​jest mylący, więc łatwo go zignorować.

Pytań tak: jak zaimplementować walidację hold-out w badania . Żadne przestępstwo nie jest skierowane do pytającego. Ale wiele osób po prostu nie umie obsługiwać kodu. Fakt, że ludzie w ogóle przeprowadzają walidację krzyżową, sprawia, że ​​jestem szczęśliwy.

Brzmi głupio i trywialnie, ale wynika to z osobistego doświadczenia, bycia tym facetem i pracy z wieloma ludźmi, którzy byli tym facetem.


18
Być może jako ktoś, kto ukończył CS, mam nieco wypaczony pogląd na ten temat, ale jeśli potrafisz poprawnie wdrożyć sprawdzanie poprawności wstrzymania (co już oznacza dzielenie zestawu danych na 2 części i wykorzystywanie jednej do szkolenia, a drugiej do testowania), jedyne, co musisz zmienić, to stosunek podziału i umieścić całość w pętli. Trudno uwierzyć, że byłby to duży problem.
Voo

3
@Voo: ponadto umiejętność programowania nie jest tutaj wystarczająca: musisz wystarczająco dobrze zrozumieć problem, aby móc ocenić, które zamieszanie należy uwzględnić podczas procedury podziału. Zobacz np . Stats.stackexchange.com/questions/20010/… . Myślę, że widzę tego rodzaju problemy częściej niż „czyste” problemy z kodowaniem (chociaż nigdy nie wiadomo: ktoś, kto ledwo jest w stanie zakodować zwykłego podziału wierszy w macierzy danych, zwykle popełnia błąd wyższego poziomu, nie dzieląc np. na poziomie pacjenta)
cbeleites wspiera Monikę

Zauważ też, że możesz dokonać właściwego podziału (np. Dzień pacjenta / dzień pomiaru / ...) bez żadnego programowania, oddzielając pliki, które wytwarza instrument pomiarowy ...
cbeleites obsługuje Monikę

5
Do wyborców: zauważ, że zadałem osobne pytanie, które podważa moją logikę. stats.stackexchange.com/q/108345/36229
shadowtalker

1
Nie sądzę, że odpowiedzią wyjaśniającą różnicę między dwiema metodami weryfikacji krzyżowej powinien być zawsze ludzki czas na naukę, absurdalnie stronniczy i nie pomocny
rgalbo

40

Hold-out jest często używany jako synonim walidacji z niezależnym zestawem testowym, chociaż istnieją zasadnicze różnice między losowym dzieleniem danych a zaprojektowaniem eksperymentu walidacyjnego dla niezależnego testowania.

Niezależnych zestawów testowych można użyć do pomiaru wydajności uogólnienia, której nie można zmierzyć przez ponowne próbkowanie lub walidację wstrzymania, np. Wydajność dla nieznanych przyszłych przypadków (= przypadków, które są mierzone później, po zakończeniu szkolenia). Jest to ważne, aby wiedzieć, jak długo istniejący model może być wykorzystywany do nowych danych (pomyśl np. O dryfcie przyrządu). Mówiąc bardziej ogólnie, można to opisać jako pomiar wydajności ekstrapolacji w celu określenia granic możliwości zastosowania.

Innym scenariuszem, w którym wstrzymanie może być rzeczywiście korzystne, jest: bardzo łatwo jest zapewnić prawidłowe oddzielenie danych szkoleniowych i testowych - znacznie łatwiej niż w przypadku walidacji ponownego próbkowania: np.

  1. decyduj o podziale (np. wykonuj losowe przydzielanie spraw)
  2. pomiar
  3. dane pomiarowe i referencyjne przypadków szkoleniowych => modelowanie \ ani modelowanie, ani pomiary, ani odniesienia do przypadków testowych nie są przekazywane.
  4. model końcowy + pomiary przetrzymywanych przypadków => przewidywanie
  5. porównać prognozy z odniesieniem dla przypadków wstrzymanych.

W zależności od potrzebnego poziomu separacji każdy krok może być wykonany przez kogoś innego. Po pierwsze, nieprzekazanie modelarzowi żadnych danych (nawet pomiarów) przypadków testowych pozwala być bardzo pewnym, że żadne dane testowe nie wyciekną do procesu modelowania. Na drugim poziomie ostateczny model i pomiary przypadków testowych można przekazać jeszcze komuś innemu i tak dalej.

Tak, płacisz za to niższą wydajnością szacunków wstrzymania w porównaniu z weryfikacją ponownego próbkowania. Ale widziałem wiele artykułów, w których podejrzewam, że walidacja ponownego próbkowania nie rozdziela poprawnie przypadków (w mojej dziedzinie mamy wiele danych klastrowych / hierarchicznych / zgrupowanych).

Nauczyłem się lekcji na temat wycieków danych do ponownego próbkowania poprzez wycofanie manuskryptu tydzień po przesłaniu, kiedy dowiedziałem się, że miałem wcześniej niewykrywalny (przez uruchomienie testów permutacji obok) przeciek w mojej procedurze dzielenia (literówka w obliczaniu indeksu).

Czasami wstrzymanie może być bardziej skuteczne niż znalezienie kogoś, kto jest skłonny poświęcić czas na sprawdzenie kodu ponownego próbkowania (np. W przypadku danych klastrowych) w celu uzyskania tego samego poziomu pewności co do wyników. Jednak IMHO zwykle nie jest efektywne, aby to zrobić, zanim przejdziesz do etapu, w którym i tak musisz zmierzyć np. Przyszłą wydajność (pierwszy punkt) - innymi słowy, kiedy i tak musisz skonfigurować eksperyment sprawdzania poprawności dla istniejącego modelu.

OTOH, w sytuacjach z małą próbką, wstrzymanie nie jest opcją: musisz wyciągnąć wystarczającą liczbę przypadków testowych, aby wyniki testów były wystarczająco dokładne, aby pozwolić na wymagany wniosek (pamiętaj: 3 prawidłowe z 3 przypadków testowych do klasyfikacji oznacza dwumianowy 95% przedział ufności, który waha się znacznie poniżej zgadywania 50:50!) Frank Harrell wskazałby na ogólną zasadę, że przynajmniej ok. 100 (testowych) przypadków jest potrzebnych do prawidłowego pomiaru proporcji [takiej jak odsetek prawidłowo przewidywanych przypadków] z użyteczną precyzją.


Aktualizacja: istnieją sytuacje, w których prawidłowe rozdzielenie jest szczególnie trudne do osiągnięcia, a wzajemna weryfikacja staje się niemożliwa. Zastanów się nad problemem związanym z wieloma problemami. Podział jest łatwy, jeśli te pomieszania są ściśle zagnieżdżone (np. Badanie z udziałem kilku pacjentów obejmuje kilka próbek każdego pacjenta i analizuje liczbę komórek każdej próbki): dzielisz się na najwyższym poziomie hierarchii próbkowania (pod względem pacjenta) . Ale możesz mieć niezależne czynniki zakłócające, które nie są zagnieżdżone, np. Zmienność z dnia na dzień lub wariancja spowodowana przez różnych eksperymentujących przeprowadzających test. Następnie musisz upewnić się, że podział jest niezależny dla wszystkichelementy zakłócające na najwyższym poziomie (zagnieżdżone elementy zakłócające będą automatycznie niezależne). Zajęcie się tym jest bardzo trudne, jeśli niektóre pomyłki zostaną zidentyfikowane tylko podczas badania, a zaprojektowanie i przeprowadzenie eksperymentu walidacyjnego może być bardziej wydajne niż radzenie sobie z podziałami, które nie pozostawiają prawie żadnych danych ani do szkolenia, ani do testowania modeli zastępczych.


6
Chciałbym dać więcej niż +1 za tę bardzo dokładną odpowiedź. Szczególnie podobało mi się, że wspomniałeś o swoim problemie z wyciekiem danych, ponieważ skutecznie pokazuje, że wykluczenie takich problemów może być dalekie od trywialnych, nawet dla ekspertów. To dobra kontrola rzeczywistości!
Marc Claesen

Nie błagasz o pytanie? Tak, podział jest trudny z powodu czynników zakłócających, ale jest trudny niezależnie od tego, czy przeprowadzasz pojedynczą walidację typu hold-out czy walidację krzyżową typu k-fold, prawda? (Niezależnie dzięki za wnikliwą odpowiedź!)
Nils von Barth

1
@NilsvonBarth: Nie rozumiem, jak moje argumenty są okrągłe: OP pyta „dlaczego [w ogóle] stosuje walidację wstrzymującą” i podam kilka praktycznych powodów. Statystycznie najbardziej wydajne wykorzystanie ograniczonej liczby przypadków nie zawsze jest najważniejszą właściwością projektu badania. (Choć z mojego doświadczenia wynika, że ​​często, z powodu bardzo ograniczonej liczby przypadków: zdecydowanie częściej zalecam powtarzanie / powtarzanie k-krotnie CV zamiast wstrzymywania się). W przypadku niektórych pomyłek podział fizyczny jest możliwy i łatwy - i bardzo skuteczny sposób, aby zapobiec podglądom. Kto wie, czy znajdziemy to podwójnie ...
cbeleites wspiera Monikę

w pewnym momencie może być potrzebna ślepa analiza danych statystycznych w stosunku do zbyt wielu fałszywie dodatnich dokumentów?
cbeleites obsługuje Monikę

2
@NilsvonBarth: Ostrożnie z blokadą gwarantującą niezależność: łatwo jest zastosować blokadę w taki sposób (poprzez fizyczną blokadę przypadków, tj. Próbki testowe są odkładane i mierzone dopiero po zakończeniu treningu modelowego), ale często termin „wstrzymanie” jest używany do czegoś, co w rzeczywistości jest bardziej podobne do pojedynczego losowego podziału danych - a wtedy wszystkie możliwości popełnienia błędów w podziale można również wykonać przy użyciu wstrzymania!
cbeleites obsługuje Monikę

8

Przydałoby się trochę wyjaśnić terminologię. Jeśli pozwolimy, aby była jakąś liczbą całkowitą mniejszą (lub równą) gdzie jest rozmiarem próbki, i podzielimy próbkę na unikalnych podprób, wówczas to, co nazywacie walidacją wstrzymania, jest tak naprawdę tylko 2-krotnie ( = 2 ) walidacja krzyżowa. Walidacja krzyżowa jest jedynie narzędziem do szacowania wskaźników błędów poza próbą (lub możliwości generalizacji) określonego modelu. Potrzeba oszacowania poziomu błędu poza próbą jest powszechna i zrodziła całą literaturę. Zobacz, na początek, rozdział 7 ESL .n n k kknnkk

Aby odpowiedzieć na pytania:

  1. Po co o tym mówić? Pedagogicznie. Warto pomyśleć o walidacji Hold-out jako szczególnym - i tylko okazjonalnie przydatnym - przypadku skądinąd całkiem przydatnej metody z wieloma, wieloma odmianami.

  2. Po co z tego korzystać? Jeśli ktoś ma szczęście, że ma kolosalny zestaw danych (pod względem obserwacji, ), to podzielenie danych na pół - trening na jedną połowę i testowanie na drugiej - ma sens. Ma to sens ze względów obliczeniowych, ponieważ wszystko, co jest wymagane, to dopasowanie raz i przewidywanie raz (zamiast razy). Ma to sens z perspektywy „oszacowania dużej próby”, ponieważ masz mnóstwo obserwacji, które pasują do twojego modelu.knk

Nauczyłem się ogólnej zasady: gdy jest duże, może być małe, ale gdy jest małe, powinno być bliskie .k n k nnknkn


13
Nie sądzę, że wstrzymanie jest takie samo jak 2-krotna walidacja, ponieważ w 2-krotnej walidacji zmieścisz dwa modele, a następnie uśrednisz błędy w dwóch zestawach wstrzymań.
Alex,

8

Jeśli nie można zakodować procedury wyboru i dopasowania modelu, ponieważ jest to subiektywna, lub częściowo, - polegająca na analizie wykresów i tym podobnych - sprawdzanie poprawności może być najlepsze, co możesz zrobić. (Przypuszczam, że możesz użyć czegoś takiego jak Mechanical Turk w każdym folderze CV, chociaż nigdy nie słyszałem o tym.)


6

Chciałem tylko dodać kilka prostych wskazówek, o których wspominał Andrew Ng w naszej klasie CS 229 w Stanford, dotyczących weryfikacji krzyżowej. Są to praktyki, które stosuje w swojej własnej pracy.

Niech będzie liczbą próbek w zestawie danych. Jeśli użyj krzyżowego sprawdzania poprawności typu „zostaw jeden z nich”.m 20mm20

Jeśli używa k-krotnej walidacji krzyżowej ze względnie dużym pamiętając o kosztach obliczeniowych.k m20<m100km

Jeśli używa regularnej k-krotnej walidacji krzyżowej . Lub, jeśli nie ma wystarczającej mocy obliczeniowej im , skorzystaj z krzyżowej weryfikacji walidacyjnej.( k = 5 ) m > 10 , +000100<m1,000,000(k=5)m>10,000

Jeśli używa krzyżowej walidacji wstrzymującej, ale jeśli dostępna jest moc obliczeniowa, możesz użyć k-krotnej walidacji krzyżowej jeśli chcesz wycisnąć tę dodatkową wydajność z modelu.( K = 5 )m1,000,000(k=5)


5

Krótka odpowiedź:

Polecam zawsze używać CV o wartości co najmniej dla:k=5

  • złożone modele
  • końcowe wyniki, które muszą być zgodne z ograniczeniami ważności

Możesz to zrelaksować dla:

  • szkolenie na naprawdę dużych zestawach danych
  • szkolenie prostych modeli
  • prototypowanie, gdy problemem jest czas

Niektórzy z was wspomnieli, że programowanie w R może być problemem. Polecam zajrzeć do pakietu „mlr” . Pakuje różne pakiety w zunifikowany interfejs, zapewniając również bardzo zaawansowane metody ponownego próbkowania i oceny wydajności.

Zobacz: http://mlr-org.github.io/mlr-tutorial/release/html/resample/ i: http://mlr-org.github.io/mlr-tutorial/release/html/performance/ index.htm

Więcej wyjaśnień - to, co naprawdę robi CV, to przełamanie kompromisu wariancji uprzedzeń:

Problem, który oba podejścia próbują rozwiązać, polega na oszacowaniu błędu uogólnienia, który jest uzależniony od danych użytych do wyszkolenia modelu.

Holdout ma problem z odchyleniem i wariancją:

Zmniejszając ilość danych, które testujemy, wprowadzamy wariancję do naszego szacowanego błędu uogólnienia, ponieważ dane testowe mogą już nie odzwierciedlać bardzo dobrze rozkładu podstawowego. To samo w sobie nie wprowadza uprzedzeń, ponieważ w oczekiwaniu oszacowane wyniki będą prawidłowe.

Zmniejszenie zestawu szkoleniowego wprowadza jednak pesymistyczne nastawienie, ponieważ ponownie podstawowy rozkład nie jest dobrze reprezentowany w danych, a model nie może również pasować do danych. Bardzo małe ustawienie zestawu treningowego wprowadza również wariancję.

Ponieważ wielkość zestawu treningowego i testowego określają się nawzajem, pozostaje nam kompromis: pesymistyczne uprzedzenie vs. duża wariancja.

k - 1k -fold Krzyżowa walidacja rozwiązuje ten problem, utrzymując duży zestaw treningowy (część danych jest wykorzystywana do treningu w każdej iteracji) i radząc sobie z wariancją błędu testu poprzez ponowne próbkowanie . Po wszystkich iteracjach przetestowaliśmy wydajność każdej obserwacji zbioru danych z jednym uczniem. Oczywiście wymaga to więcej czasu obliczeniowego niż zwykłego wstrzymania.k1k

Walidacja krzyżowa jest szczególnie ważna dla bardziej złożonych uczniów (o dużej zmienności). Te są zwykle również droższe obliczeniowo, co może sprawić, że cały proces będzie dość czasochłonny.


3

Wszystkie te są przydatne komentarze. Wystarczy wziąć pod uwagę jeszcze jeden. Gdy masz wystarczającą ilość danych, użycie Hold-Out jest sposobem na ocenę konkretnego modelu (konkretnego modelu SVM, konkretnego modelu CART itp.), Natomiast jeśli używasz innych procedur weryfikacji krzyżowej, oceniasz metodologie (w warunkach problemów) ) zamiast modeli (metodologia SVM, metodologia CART itp.).

Mam nadzieję, że to jest pomocne!


3

Modelowanie przy użyciu poważnych danych czasowych jest dla mnie wyjątkiem. K fold nie może działać w niektórych przypadkach, gdy trzeba przewidzieć przyszłość na podstawie poprzednich danych. Zestawy testowe muszą być przyszłymi danymi i nigdy nie można ich dotknąć na etapie szkolenia. np. przewidywanie sprzedaży lub rynku akcji. Hold out jest przydatny w takich przypadkach.


Poważne dane czasowe?
nro

3

Po prostu; czas. Walidacja krzyżowa uruchamiasz procedurę treningową k razy (tj. Raz dla każdego zestawu podtrzymującego). Jeśli masz duże dane, trenowanie modelu dla jednego zestawu danych może potrwać wiele godzin, a nawet dni, więc pomnóż to przez k, gdy używasz weryfikacji krzyżowej.

Tak więc chociaż sprawdzanie poprawności krzyżowej jest najlepszą metodą, w niektórych okolicznościach jest to niewykonalne, a czas, który by to zajęło, mógł być lepiej poświęcony na modelowanie danych na różne sposoby lub na wypróbowanie różnych funkcji utraty w celu uzyskania lepszego modelu.

Moje osobiste preferencje to pobieranie danych walidacyjnych z całego zestawu danych, więc zamiast pobierać pojedynczy 10% fragment z głowy lub ogona danych, biorę 2% z 5 punktów w zestawie danych. To sprawia, że ​​dane walidacyjne są nieco bardziej reprezentatywne dla danych jako całości.


Mimo że jest to stare pytanie i nowa odpowiedź, głosuję za tym, ponieważ podważa to bezpodstawne twierdzenie, że „K-fold jest bardziej precyzyjny, ale LEKKO droższy obliczeniowo”, które inne odpowiedzi ignorowały lub pomijały zbyt szybko.
The Laconic

0

Należy zauważyć, że nie zawsze można zastosować walidację krzyżową. Zastanów się nad zestawami danych zależnymi od czasu, aby dane historyczne wykorzystać do trenowania modelu predykcyjnego dla przyszłych zachowań. W takim przypadku musisz zastosować walidację wstrzymania.


2
W takim przypadku powinieneś wykonać weryfikację do przodu.
Neil G
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.