Jak mogę pomóc upewnić się, że dane testowe nie przeciekają do danych szkoleniowych?

60

Załóżmy, że mamy kogoś, kto buduje model predykcyjny, ale ten ktoś niekoniecznie jest dobrze obeznany z właściwymi zasadami statystyki lub uczenia maszynowego. Może pomagamy tej osobie w trakcie nauki, a może ta osoba korzysta z pakietu oprogramowania, który wymaga minimalnej wiedzy.

Teraz ta osoba może bardzo dobrze rozpoznać, że prawdziwy test pochodzi z dokładności (lub jakiejkolwiek innej miary) danych spoza próby . Obawiam się jednak, że istnieje wiele subtelności, o które należy się martwić. W prostym przypadku budują swój model i oceniają go na podstawie danych szkoleniowych oraz oceniają na podstawie danych testowych. Niestety czasami może być zbyt łatwo wrócić i poprawić parametry modelowania i sprawdzić wyniki na tych samych „testujących” danych. W tym momencie dane te nie są już prawdziwymi danymi pozapróbowymi, a nadmierne dopasowanie może stać się problemem.

Jednym potencjalnym sposobem rozwiązania tego problemu byłoby zasugerowanie utworzenia wielu zestawów danych spoza próby, tak aby każdy zestaw danych testowych mógł zostać odrzucony po użyciu i w ogóle nie może być ponownie użyty. Wymaga to jednak dużego zarządzania danymi, zwłaszcza że dzielenie musi być wykonane przed analizą (więc trzeba wcześniej wiedzieć, ile podziałów).

Być może bardziej konwencjonalnym podejściem jest k-krotna walidacja krzyżowa. Jednak w pewnym sensie traci to rozróżnienie między zestawem danych „szkoleniowych” i „testujących”, które moim zdaniem mogą być przydatne, szczególnie dla osób, które wciąż się uczą. Nie jestem też przekonany, czy ma to sens dla wszystkich typów modeli predykcyjnych.

Czy istnieje jakiś sposób, który przeoczyłem, aby pomóc w rozwiązaniu problemu nadmiernego dopasowania i testowania wycieków, a jednocześnie pozostawać nieco jasnym dla niedoświadczonego użytkownika?

Michael McGowan
źródło
Michael, zamknąłem duplikat wątku ze strony ML i połączyłem odpowiedzi tutaj. Edytuj to pytanie, aby odzwierciedlić wszelkie zmiany, które chciałeś wprowadzić - nie chcę tego podejmować z obawy przed przypadkową zmianą znaczenia.
whuber
To pytanie jest stare i ma akceptowaną odpowiedź, ale nie mogę wyjść z głowy, że początkowe założenie wydaje się być sprzeczne. Jeśli chodzi o naukę ćwiczeń, najlepszym sposobem na podejście jest pozwolić im upaść i stworzyć model dopasowania, który następnie nie będzie dobrze przewidywał. (Być może trzymaj tajny zestaw danych, który pokazuje im błąd ich postępowania.) Ale to również brzmi, jakbyś miał niewykwalifikowanych ludzi tworzących modele, które ktoś będzie traktował poważnie i działał, a ty próbujesz zminimalizować szkody na wyciągnięcie ręki. Istnieje wiele subtelności, jak mówisz.
Wayne

Odpowiedzi:

50

Masz rację, jest to poważny problem w uczeniu maszynowym / modelowaniu statystycznym. Zasadniczo jedynym sposobem, aby naprawdę rozwiązać ten problem, jest zachowanie niezależnego zestawu testów i trzymanie go do momentu ukończenia badania i wykorzystanie go do ostatecznej weryfikacji.

Jednak nieuchronnie ludzie spojrzą na wyniki zestawu testowego, a następnie odpowiednio zmienią swój model; jednak niekoniecznie spowoduje to poprawę wydajności uogólnienia, ponieważ różnica w wydajności różnych modeli może być w dużej mierze spowodowana konkretną próbką danych testowych, którą mamy. W tym przypadku dokonując wyboru, skutecznie przepełniamy błąd testu.

Aby to ograniczyć, należy zminimalizować wariancję błędu testowego (tj. Zmienność błędu testowego zobaczylibyśmy, gdybyśmy użyli różnych próbek danych jako zestawu testowego, pochodzących z tego samego podstawowego rozkładu). Można to najłatwiej osiągnąć za pomocą dużego zestawu testowego, jeśli jest to możliwe, lub np. Ładowania początkowego lub weryfikacji krzyżowej, jeśli nie ma zbyt wielu danych.

Przekonałem się, że tego rodzaju nadmierne dopasowanie w wyborze modelu jest o wiele bardziej kłopotliwe niż się powszechnie ocenia, szczególnie w odniesieniu do oceny wydajności, patrz

GC Cawley i NLC Talbot, Nadmierne dopasowanie w wyborze modelu i późniejsze odchylenie wyboru w ocenie wydajności, Journal of Machine Learning Research, 2010. Research, vol. 11, s. 2079–2107, lipiec 2010 r. (Www)

Tego rodzaju problem wpływa szczególnie na wykorzystanie zestawów danych wzorcowych, które były wykorzystywane w wielu badaniach, a wyniki każdego z wcześniejszych badań domyślnie wpływają na każde nowe badanie, więc obserwowane wyniki prawdopodobnie będą nadmiernie optymistycznym oszacowaniem prawdziwej wykonanie metody. Staram się to obejść, patrząc na wiele zestawów danych (więc metoda nie jest dostosowana do jednego określonego zestawu danych), a także używam wielu losowych podziałów test / trening do oszacowania wydajności (w celu zmniejszenia wariancji oszacowania). Jednak wyniki wciąż wymagają ostrzeżenia, że ​​te standardy były nadmiernie dopasowane.

Innym przykładem, w którym ma to miejsce, są konkursy uczenia maszynowego z tablicą wyników opartą na zestawie walidacyjnym. Nieuchronnie niektórzy zawodnicy majstrują przy swoim modelu, aby awansować na liderów, ale potem kończą się w końcowym rankingu. Powodem tego jest to, że ich wielokrotne wybory przerosły zestaw walidacyjny (skutecznie ucząc się losowych zmian w małym zestawie walidacyjnym).

Jeśli nie możesz utrzymać statystycznie czystego zestawu testowego, obawiam się, że dwie najlepsze opcje to (i) zebranie nowych danych w celu stworzenia nowego statystycznie czystego zestawu testowego lub (ii) zastrzeżenie, że nowy model był oparty na podstawie wyboru dokonanego po zaobserwowaniu błędu zestawu testów, więc oszacowanie wydajności może mieć optymistyczne nastawienie.

Dikran Torbacz
źródło
1
+1 Jestem pod wrażeniem tego, jak dobrze ta odpowiedź jest oparta na doświadczeniu i jak skutecznie odpowiada na pytanie.
whuber
3
na zdrowie, to był mój główny temat badawczy od kilku lat, i odkryłem, że wiele procedur selekcji modeli szeroko stosowanych w uczeniu maszynowym jest bardzo delikatnych, a im dokładniej są one oceniane, tym gorzej działają. Nie zdziwiłbym się, że wiele metod wykorzystywanych w uczeniu maszynowym nie działa lepiej niż starsze, bardziej proste metody, po prostu z powodu stronniczych procedur wyboru modelu stosowanych podczas oceny wydajności. Pytanie jest naprawdę dobre, ważne jest, aby nie stać się częścią procedury wyboru modelu przez majstrowanie!
Dikran Torbacz
Bardzo interesujące. (Głosowałem również za samym pytaniem, ponieważ twoja odpowiedź sprawiła, że ​​doceniłem to lepiej.)
whuber
2
(+1) Niezła odpowiedź. Wykorzystanie kilku klasyfikatorów w tym samym zbiorze danych, które prowadzą do nadmiernie optymistycznej miary dokładności testu, omówiono w Optymalnym wyborze klasyfikatora i ujemnym odchyleniu w szacowaniu wskaźnika błędów: badanie empiryczne dotyczące prognozowania wielowymiarowego , BMC MRM 2009, 9:85 (z niektórymi slajdami PDF tutaj ), z inną dyskusją na temat odchyleń od wielu reguł w porównaniu reguł klasyfikacji (Yousefi i in., Bioinformatics 2011, 27 (12): 1675).
chl
Dzięki za linki do gazet wyglądają interesująco.
Dikran Torbacz
15

Jednym ze sposobów zapewnienia tego jest upewnienie się, że wszystko, co robisz, aby dopasować się do modelu, zostało zakodowane , nawet „majsterkowanie”. W ten sposób, gdy uruchamiasz proces wielokrotnie, powiedzmy przez cross-validation, zachowujesz spójność między przebiegami. Zapewnia to, że wszystkie potencjalne źródła zmienności są przechwytywane przez proces weryfikacji krzyżowej.

Inną niezwykle ważną rzeczą jest zapewnienie reprezentatywnej próbki w obu zestawach danych. Jeśli Twój zestaw danych nie jest reprezentatywny dla rodzaju danych, których spodziewasz się użyć do przewidywania, to niewiele możesz zrobić. Całe modelowanie opiera się na założeniu, że „indukcja” działa - rzeczy, których nie zaobserwowaliśmy, zachowują się jak rzeczy, które zaobserwowaliśmy.

Zasadniczo trzymaj się z dala od procedur dopasowywania złożonego modelu, chyba że (i) wiesz, co robisz, oraz (ii) wypróbowałeś prostsze metody i okazało się, że nie działają, oraz w jaki sposób metoda złożona naprawia problemy z prostą metodą. „Prosty” i „złożony” oznacza w znaczeniu „prosty” lub „złożony” dla osoby wykonującej dopasowanie. Powodem, dla którego jest to tak ważne, jest to, że pozwala ci zastosować to, co lubię nazywać „testem powąchania” do wyników. Czy wynik wygląda dobrze? Nie możesz „powąchać” wyników z procedury, której nie rozumiesz.

UWAGA: następna, dość długa część mojej odpowiedzi oparta jest na moim doświadczeniu, które znajduje się w obszarze , przy czym może być duże. Jestem prawie pewien, że to, co następuje poniżej nie stosuje się do lub przypadkachN>>p p Np N<p

Gdy masz dużą próbkę, różnica między użyciem a niewykorzystaniem danej obserwacji jest bardzo mała, pod warunkiem, że twoje modelowanie nie jest zbyt „lokalne”. Wynika to z faktu, że wpływ danego punktu danych jest generalnie rzędu . Tak więc w dużych zestawach danych, resztki, które otrzymujesz z „trzymania” zestawu danych testowych, są w zasadzie takie same jak resztki, które otrzymujesz z używania go w zestawie danych treningowych. Możesz to pokazać za pomocą zwykłych najmniejszych kwadratów. Resztka uzyskana z wykluczenia tej obserwacji (tj. Jaki byłby błąd zestawu testowego, gdybyśmy umieścili obserwację w zestawie testowym), to , gdzie jest pozostałym treningiem, a1Nieitest=(1hii)1eitraineitrainhiijest dźwignią tego punktu danych. Teraz mamy , gdzie jest liczbą zmiennych w regresji. Teraz, jeśli , to jest bardzo trudne, aby jakikolwiek był wystarczająco duży, aby wprowadzić znaczącą różnicę między błędami zestawu testowego i zestawu treningowego. Możemy wziąć uproszczony przykład, załóżmy, że (przecięcie i zmienna), macierz obliczeniowa to (zarówno zestawy treningowe, jak i testowe), a dźwignia wynosiiihii=ppN>>phiip=21N×pX

hii=xiT(XTX)1xi=1Nsx2(1xi)(x2¯x¯x¯1)(1xi)=1+x~i2N

Gdzie , , a . Wreszcie, jest znormalizowaną zmienną predykcyjną i mierzy, ile standardowych odchyleń jest od średniej. Wiemy więc od początku, że błąd zestawu testowego będzie znacznie większy niż błąd zestawu treningowego dla obserwacji „na krawędzi” zestawu treningowego. Ale to w zasadzie znowu ten reprezentatywny problem - obserwacje „na brzegu” są mniej reprezentatywne niż obserwacje „na środku”. Dodatkowo jest to zamówienie . Więc jeśli masz obserwacji, nawet jeślix¯=N1ixix2¯=N1ixi2sx2=x2¯x¯2x~i=xix¯sxxi1N100x~i=5 (wartość odstająca w przestrzeni x według większości definicji), oznacza to , a błąd testu jest zaniżony . Jeśli masz duży zestaw danych, powiedzmy , jest on jeszcze mniejszy, , czyli mniej niż . W rzeczywistości dla obserwacji wymagałabyś obserwacji w celu dokonania niedoszacowania błędu zestawu testowego przy użyciu błędu zestawu szkoleniowego.hii=26100126100=7410010000126100001%10000x~=5025%

Tak więc w przypadku dużych zbiorów danych użycie zestawu testowego jest nie tylko nieefektywne, ale także niepotrzebne, o ile . Dotyczy to OLS, a także w przybliżeniu dotyczy GLM (szczegóły są różne dla GLM, ale ogólny wniosek jest taki sam). W więcej niż wymiarach „wartości odstające” są zdefiniowane przez obserwacje z dużymi wynikami „głównego składnika”. Można to pokazać pisząc Gdzie jest (ortogonalną) macierzą wektorów własnych dla , z macierzą wartości własnych . Otrzymujemy gdzieN>>p2hii=xiTEET(XTX)1EETxiEXTXΛhii=ziTΛ1zi=j=1pzji2Λjjzi=ETxijest główną oceną składową .xi

Jeśli Twój zestaw testowy ma obserwacji, otrzymasz wersję macierzową , gdzie i to rzędy macierzy projektowej w zestawie testowym. Tak więc w przypadku regresji OLS wiesz już, jakie byłyby błędy „zestawu testowego” dla wszystkich możliwych podziałów danych na zestawy szkoleniowe i testowe. W tym przypadku ( ) nie ma potrzeby dzielenia danych. Możesz zgłosić błędy zestawu testowego „najlepszy przypadek” i „najgorszy przypadek” niemal dowolnego rozmiaru bez faktycznego podziału danych. Pozwala to zaoszczędzić dużo czasu i zasobów komputera.ke{k}test=(IkH{k})1e{k}trainH{k}=X{k}(XTX)1X{k}TX{k}N>>p

Zasadniczo wszystko to sprowadza się do użycia kary umownej, aby uwzględnić różnicę między błędami szkolenia i testów, takimi jak BIC lub AIC. Skutecznie osiąga ten sam wynik, co przy użyciu zestawu testowego, jednak nie musisz wyrzucać potencjalnie użytecznych informacji. Za pomocą BIC przybliżasz dowody dla modelu, który wygląda matematycznie:

p(D|MiI)=p(y1y2yN|MiI)

Zauważ, że w tej procedurze nie możemy oszacować żadnych parametrów wewnętrznych - każdy model musi być w pełni określony lub mieć zintegrowane parametry wewnętrzne. Możemy jednak sprawić, że będzie to wyglądać jak krzyżowa walidacja (przy użyciu określonej funkcji utraty) poprzez wielokrotne stosowanie reguły produktu, a następnie rejestrowanie wyniku:Mi

p(D|MiI)=p(y1|MiI)p(y2yN|y1MiI)
=p(y1|MiI)p(y2|y1MiI)p(y3yN|y1y2MiI)
==i=1Np(yi|y1yi1MiI)
log[p(D|MiI)]=i=1Nlog[p(yi|y1yi1MiI)]

Sugeruje to formę krzyżowej walidacji, ale w przypadku gdy zestaw treningowy jest stale aktualizowany, jedna obserwacja na raz z zestawu testowego - podobnie jak filtr Kalmana. Przewidujemy kolejną obserwację z zestawu testowego przy użyciu bieżącego zestawu treningowego, mierzymy odchylenie od obserwowanej wartości przy użyciu warunkowego prawdopodobieństwa log, a następnie aktualizujemy zestaw treningowy, aby uwzględnić nową obserwację. Należy jednak pamiętać, że ta procedura w pełni przetwarza wszystkie dostępne dane, jednocześnie upewniając się, że każda obserwacja jest testowana jako przypadek „poza próbą”. Jest również niezmienny, ponieważ nie ma znaczenia, co nazywacie „obserwacją 1” lub „obserwacją 10”; wynik jest taki sam (obliczenia mogą być łatwiejsze dla niektórych permutacji niż innych). Funkcja straty jest również „adaptacyjna”, jeśli zdefiniujemy L i iLi=log[p(yi|y1yi1MiI)] , to ostrość zależy od , ponieważ funkcja utraty jest stale aktualizowana o nowe dane.Lii

Sugerowałbym, że ocena modeli predykcyjnych w ten sposób działałaby całkiem dobrze.

prawdopodobieństwo prawdopodobieństwa
źródło
4
+1 - dobra rada i ciekawa dyskusja na temat dźwigni (dla dużych zestawów danych). Zwykle używam niewielkich zestawów danych, w których prawdopodobne jest nadmierne dopasowanie, aw takich sytuacjach często bardzo łatwo jest przekroczyć krańcowe prawdopodobieństwo („dowody”) i uzyskać gorszy model niż na początku. Podejrzewam, że AIC i BIC są podobnie „kruche”. Zasadniczo optymalizacja jest źródłem wszelkiego zła w statystykach, ponieważ każdy dokonany przez ciebie wybór lub parametr, który dostroisz na podstawie skończonej próbki, wprowadza możliwość nadmiernego dopasowania. Marginalizacja jest znacznie bezpieczniejsza, ale generalnie droga pod względem obliczeniowym.
Dikran Torbacz
2
+1 - szczególnie w trzecim akapicie (najpierw użyj prostych metod). Przypomina dobrą starą zasadę Pareto. Gdyby uczący się maszyn pamiętali o tym, zanim opublikują swoją niewystarczającą próbę udowodnienia wyższości swojego nowego wyhodowanego algorytmu ...
steffen
8

Sądzę, że jedynym sposobem na zagwarantowanie tego jest to, że ktoś inny ma dane testowe . W relacjach klient-konsultant można to dość łatwo zarządzać: klient udostępnia konsultantowi zestaw szkoleniowy, na którym zbudowane są modele, aw ramach tego zestawu szkoleniowego konsultant może dzielić dane w dowolny sposób niezbędny, aby zapewnić, że nadmierne dopasowanie nie spowoduje pojawić się; następnie modele są zwracane klientowi do wykorzystania w danych testowych.

Dla indywidualnego badacza oczywiste jest, że najlepszą praktyką byłoby naśladowanie tego zestawu. Oznaczałoby to wydzielenie części danych do przetestowania po dokonaniu wyboru wszystkich modeli. Niestety, jak mówisz, wielu ludzi tego nie ćwiczy, a nawet ludziom, którzy powinni wiedzieć lepiej!

Jednak ostatecznie zależy to od tego, do czego model jest używany. Jeśli kiedykolwiek interesuje Cię przewidywanie tylko tego pojedynczego zestawu danych, to może możesz dopasować wszystko, co lubisz? Jeśli jednak próbujesz wypromować swój model jako taki, który dobrze się uogólnia lub zastosujesz go w jakiejś aplikacji w świecie rzeczywistym, to oczywiście ma to ogromne znaczenie.

Jest to kwestia, która strona pomyślałem, że powinienem wspomnieć, którym jest to, że nawet jeśli się wszystkie procedury prawidłowo, nadal można skończyć z modeli, które są overfitted, ze względu na danych nie jest prawdziwie IID . Na przykład, jeśli dane zawierają korelacje czasowe, to jeśli weźmiesz wszystkie dane treningowe z czasów 1-3 i przetestujesz w czasie 4, może się okazać, że błąd prognozowania jest większy niż oczekiwano. Alternatywnie mogą istnieć artefakty specyficzne dla eksperymentu, takie jak używane urządzenie pomiarowe lub pula osobników w eksperymentach na ludziach, które powodują, że uogólnienie modeli jest gorsze niż oczekiwano.

tdc
źródło
Tak, zdaję sobie sprawę, że zaskakująco trudno jest stworzyć naprawdę nieobjęty próbą zbiór danych, ponieważ łatwo jest przypadkowo skończyć z korelacjami czasowymi, a co nie.
Michael McGowan
1
Niektóre firmy robią to zgodnie z polityką, wdrażaną np. Przez viewodpowiednie ustawienia uprawnień do bazy danych, w przypadku gdy niektóre zespoły mają dostęp do danych testowych, a inne są ślepe na dane testowe.
ijoseph
6

To bardzo dobre pytanie i bardzo subtelny problem. Oczywiście są błędy o złych intencjach, które pochodzą od kogoś, kto próbuje cię oszukać. Ale istnieje głębsze pytanie, jak uniknąć przypadkowego wycieku i uniknąć uczciwych błędów.

Pozwól mi wymienić kilka dobrych praktyk operacyjnych. Wszystkie wynikają z uczciwych błędów, które popełniłem w pewnym momencie:

  • Podziel dane na trzy grupy: trenuj, weryfikuj i testuj.
  • Zapoznaj się z konfiguracją problemu, aby móc argumentować, co jest uzasadnione, a co nie. Zrozumieć problem, wiele razy subtelne nieporozumienie dotyczące tego, co reprezentują dane, może prowadzić do wycieków. Na przykład, podczas gdy nikt nie trenował i nie testował na tej samej klatce jednego wideo, bardziej subtelne jest, gdy dwie klatki tego samego filmu padają w różnych fałdach, dwie klatki tego samego filmu prawdopodobnie dzielą te same osoby z tym samym oświetleniem i tak dalej .
  • Zachowaj szczególną ostrożność przy wcześniej napisanych procedurach walidacji krzyżowej. Co więcej, z tymi, które nie zostały napisane przez ciebie (LIBSVM jest tutaj dużym przestępcą).
  • Powtórz każdy eksperyment co najmniej dwa razy przed zgłoszeniem czegokolwiek, nawet w przypadku zgłoszenia się do swojego kolegi z biura. Kontrola wersji jest Twoim przyjacielem, przed uruchomieniem eksperymentu zatwierdź i zanotuj wersję uruchomionego kodu.
  • Zachowaj ostrożność podczas normalizacji danych. Wiele razy prowadzi to do myślenia, że ​​będziesz mieć pełny zestaw danych, na którym chcesz testować w tym samym czasie, co często nie jest realistyczne.
carlosdc
źródło
Pojawiło się pytanie dotyczące zestawów szkoleniowych / ewaluacyjnych, a teoretyczny przegląd przedstawiłem na machinelearning.stackexchange.com/a/196/114 - wyjaśniając stratyfikację, k-krotną weryfikację krzyżową i powtarzane eksperymenty. Dla mojego niewykształconego umysłu metody te całkowicie odnoszą się do powyższego pytania, a reszta to po prostu „problem nauczyciela”. Ponadto wszystkie praktyki na twojej liście wydają się naprawiać „po prostu niechlujne, niedopuszczalne błędy” i nie widzę w tym żadnych subtelności. Bardzo zależy mi na zrozumieniu tego, czego mi brakuje - czy możesz to skomentować?
andreister
Zgadzam się, że wszystkie one pochodzą z niechlujstwa. Wspomniałem również, że wcale nie są teoretyczne (mówiąc, że działają). Trochę zmodyfikowałem swój post.
carlosdc
5

Wiele ważnych punktów zostało omówionych w doskonałych odpowiedziach, które już zostały podane.

Ostatnio opracowałem osobistą listę kontrolną dla statystycznej niezależności danych testowych:

  • Podziel dane na najwyższym poziomie hierarchii danych (np. Podział według pacjenta)
  • Podziel także niezależnie dla znanych lub podejrzewanych pomyłek, takich jak codzienne różnice w instrumentach itp.
  • (DoE powinien zająć się losową sekwencją pomiarów **)
  • Wszystkie etapy obliczeń rozpoczynające się od pierwszego (zwykle wstępnego przetwarzania) etapu, który obejmuje więcej niż jednego pacjenta *, muszą zostać powtórzone dla każdego modelu zastępczego podczas walidacji ponownego próbkowania. W celu ustalenia / niezależnej oceny zestawu testów, pacjentów testowych należy rozdzielić przed tym etapem.
    • Jest to niezależnie od tego, czy obliczenia nazywane są przetwarzaniem wstępnym, czy też stanowią część rzeczywistego modelu.
    • Typowi sprawcy: średnie centrowanie, skalowanie wariancji (zwykle tylko niewielki wpływ), zmniejszenie wymiarów, takie jak PCA lub PLS (może powodować duże odchylenie, np. Nie doceniać liczby błędów o rząd wielkości)
  • Każdy rodzaj optymalizacji opartej na danych lub wyboru modelu wymaga innego (zewnętrznego) testowania, aby niezależnie zweryfikować ostateczny model.
  • Istnieją pewne rodzaje wydajności uogólnienia, które można zmierzyć tylko za pomocą określonych niezależnych zestawów testowych, np. Jak pogorszyła się wydajność predykcyjna dla przypadków mierzonych w przyszłości (nie mam do czynienia z prognozowaniem szeregów czasowych, tylko z dryfem instrumentów). Ale to wymaga odpowiednio zaprojektowanego badania walidacyjnego.
  • Istnieje inny szczególny rodzaj wycieku danych w mojej dziedzinie: wykonujemy przestrzennie spektroskopię tkanek biologicznych. Referencyjne oznaczanie widm testowych musi być zaślepione w stosunku do informacji spektroskopowych, nawet jeśli kuszące jest zastosowanie analizy skupień, a następnie po prostu dowiedz się, do której klasy należy każdy skupisko (byłyby to częściowo nadzorowane dane testowe, które nie są w ogóle niezależny).

  • Na koniec, ale na pewno nie najmniej ważne: podczas kodowania sprawdzania poprawności ponownego próbkowania faktycznie sprawdzam, czy obliczone wskaźniki w zbiorze danych nie prowadzą do pobrania wierszy testowych od szkolenia pacjentów, dni itp.

Należy zauważyć, że „podział nie został wykonany w celu zapewnienia niezależności” i „podział przed wystąpieniem jakichkolwiek obliczeń obejmujących więcej niż jeden przypadek” może również wystąpić w przypadku testów, które twierdzą, że używają niezależnego zestawu testów, a ten drugi nawet, jeśli analityk danych jest ślepy na odniesienia do przypadków testowych. Te błędy nie mogą się zdarzyć, jeśli dane testowe zostaną wstrzymane do momentu przedstawienia ostatecznego modelu.

* Używam pacjentów jako najwyższej hierarchii danych tylko ze względu na łatwość opisu.
** Jestem chemikiem analitycznym: znoszenie instrumentów jest znanym problemem. W rzeczywistości częścią walidacji metod analizy chemicznej jest ustalenie, jak często kalibracje muszą być sprawdzane w stosunku do próbek walidacyjnych i jak często kalibracja musi być powtarzana.


FWIW: W praktyce zajmuję się aplikacjami gdzie

  • p jest rzędu wielkości ,102103
  • pnrows jest zwykle większy niż , alep
  • n p a t i e n t sp 10 0 - 10 1 10 2nbiol.replicates lub to (rząd wielkości: , rzadko )npatientsp100101102
  • w zależności od metody pomiaru spektroskopowego, wszystkie rzędy jednego, powiedzmy, pacjenta mogą być bardzo podobne lub raczej odmienne, ponieważ różne typy widm mają stosunek sygnału do szumu (błąd przyrządu) również zmieniający się o rząd wielkości

Osobiście nie spotkałem się jeszcze z aplikacją, w której do opracowania klasyfikatora dostaję wystarczającą liczbę niezależnych przypadków, aby umożliwić odłożenie odpowiedniego niezależnego zestawu testów. Doszedłem zatem do wniosku, że właściwie wykonana walidacja ponownego próbkowania jest lepszą alternatywą, gdy metoda jest wciąż w fazie rozwoju. W końcu trzeba będzie przeprowadzić odpowiednie badania walidacyjne, ale robi to ogromne marnotrawstwo zasobów (lub wyniki nie przyniosą żadnych użytecznych informacji z powodu wariancji), podczas gdy opracowywanie metod jest na etapie, w którym wszystko wciąż się zmienia.

cbeleity
źródło
2

Jeśli dobrze pamiętam, niektóre konkursy prognostyczne (takie jak Netflix lub te na Kaggle) używają tego schematu:

Istnieje zestaw szkoleniowy z „odpowiedziami”. Istnieje zestaw testowy nr 1, na który badacz udziela odpowiedzi. Badacz sprawdza ich wynik. Istnieje zestaw testów nr 2, na które badacz udziela odpowiedzi, ALE badacz nie sprawdza ich wyniku. Badacz nie wie, które przypadki przewidywania znajdują się w punktach 1 i 2.

W pewnym momencie zestaw nr 2 musi stać się widoczny, ale przynajmniej ograniczyłeś zanieczyszczenie.

zbicyclist
źródło
2

W niektórych przypadkach, takich jak predyktory oparte na sekwencji biologicznej, nie wystarczy zapewnić, że przypadki nie pojawią się w więcej niż jednym zestawie. Nadal musisz się martwić o zależność między zestawami.

Na przykład w przypadku predyktorów opartych na sekwencjach należy usunąć nadmiarowość, upewniając się, że sekwencje w różnych zestawach (w tym w różnych zestawach walidacji krzyżowej) nie mają wysokiego poziomu podobieństwa sekwencji.

Itamar
źródło
2

Powiedziałbym, że „k-fold cross validation” jest właściwą odpowiedzią z teoretycznego punktu widzenia, ale twoje pytanie wydaje się bardziej na temat organizacji i nauczania, więc odpowiem inaczej.


Gdy ludzie „wciąż się uczą”, często myśli się, jakby uczyli się, jak „szybko i bezproblemowo” stosować algorytmy i całą „dodatkową” wiedzę (motywacja problemu, przygotowanie zestawu danych, walidacja, analiza błędów, praktyczne błędy itp. ) zostanie nauczony „później”, gdy będą „lepiej przygotowani”.

To jest całkowicie błędne.

  1. Jeśli chcemy, aby uczeń lub ktokolwiek zrozumiał różnicę między zestawem testowym a zestawem treningowym, najgorsze będzie przekazanie tych dwóch zestawów dwóm różnym facetom, jakbyśmy myśleli, że „na tym etapie” „dodatkowa wiedza” jest szkodliwy. To jest jak podejście oparte na wodospadzie w rozwoju oprogramowania - kilka miesięcy czystego projektowania, potem kilka miesięcy czystego kodowania, następnie kilka miesięcy czystych testów i szkoda, że ​​w końcu wynik.

  2. Nauka nie powinna iść jak wodospad. Wszystkie części uczenia się - motywacja problemu, algorytm, praktyczne rozwiązania, ocena wyników - muszą się łączyć, małymi krokami. (Podobnie jak zwinne podejście w tworzeniu oprogramowania).

Być może wszyscy tutaj przeszli przez stronę ml-class.org Andrew Nga - podałbym jego kurs jako przykład solidnego „zwinnego” stylu uczenia się - takiego, który nigdy nie dałby pytania „jak upewnij się, że dane testowe nie przeciekają do danych treningowych ”.


Pamiętaj, że mogłem całkowicie nie zrozumieć twojego pytania, więc przepraszam! :)

andreister
źródło
Nauka dla człowieka (to znaczy nauka modelowania w ogóle) nie powinna być jak wodospad, ale nauka dla modelu powinna. W przeciwnym razie fragmenty danych testowych wkradną się do danych treningowych, a Twój model będzie bardziej podatny na przeregulowanie.
Michael McGowan
I myślałem o tym bardziej od końca oprogramowania. Użytkownik buduje model, który uzyskuje 90% dokładności podczas treningu i 75% dokładności podczas testowania. Następnie poprawiają niektóre pokrętła i ustawienia w oprogramowaniu i uzyskują 80% dokładności podczas „testowania”. Wracają ponownie i robią więcej poprawek i uzyskują 85% dokładności w „testowaniu”. Ale ten tak zwany „testujący” zestaw danych nie jest już poza próbą, a model został do niego przystosowany.
Michael McGowan
Dokładnie. Jest to problem z uczeniem się człowieka (problem nauczyciela, jeśli wolisz). Powinno zostać ujawnione tak szybko, jak to możliwe, a nie ukryte sztucznym sposobem „upewnienia się, że X nie wycieknie do Y”
ponownie się zarejestrować
Ludzie, którzy powinni wiedzieć lepiej, nadal popełniają ten błąd. Możesz do pewnego stopnia złagodzić ten efekt w pakiecie oprogramowania z przepływem pracy, który pośrednio lub wprost zachęca do dobrych praktyk i zniechęca do złych praktyk. To, że człowiek powinien wiedzieć lepiej, nie jest powodem do zignorowania problemu.
Michael McGowan
@MichaelMcGowan - ignorujesz również korzyści wynikające z wycieku - że Twój algorytm został potencjalnie ulepszony przy użyciu zestawu testów (tzn. Pociąg + test to więcej danych niż tylko pociąg). To tak naprawdę inny kompromis, większa dokładność w porównaniu do ulepszonego pomiaru dokładności. Dla mnie ta pierwsza jest ważniejsza.
Prawdopodobieństwo