Cross Validation (generalizacja błędów) po wyborze modelu

21

Uwaga: przypadek to n >> p

Czytam Elementy uczenia statystycznego i jest wiele wzmianek o „właściwym” sposobie przeprowadzania walidacji krzyżowej (np. Strona 60, strona 245). W szczególności moje pytanie brzmi: jak ocenić ostateczny model (bez osobnego zestawu testowego) za pomocą k-fold CV lub bootstrapowania, gdy przeprowadzono wyszukiwanie modelu? Wydaje się, że w większości przypadków (algorytmy ML bez wbudowanego wyboru funkcji) będzie

  1. Krok wyboru funkcji
  2. Etap wyboru parametru meta (np. Parametr kosztu w SVM).

Moje pytania:

  1. Widziałem, że krok wyboru funkcji można wykonać tam, gdzie wybór funkcji odbywa się na całym zestawie treningowym i jest odłożony na bok. Następnie, stosując k-fold CV, algorytm wyboru cech jest stosowany przy każdym zakładaniu (uzyskiwanie różnych cech możliwych za każdym razem) i błąd jest uśredniany. Następnie użyłbyś wybranych funkcji przy użyciu wszystkich danych (które zostały odłożone) do trenowania trybu końcowego, ale wykorzystałeś błąd z weryfikacji krzyżowej jako oszacowanie przyszłej wydajności modelu. CZY TO JEST POPRAWNE?
  2. Kiedy używasz weryfikacji krzyżowej do wyboru parametrów modelu, to jak potem oszacować wydajność modelu? CZY JEST TO TEN SAM PROCES, JAK POWYŻEJ POWYŻEJ, CZY POWINIENEŚ WYKORZYSTAĆ NESTED CV, JAK PODANE NA STRONIE 54 ( pdf ) CZY INNE?
  3. Kiedy wykonujesz oba kroki (ustawienie funkcji i parametrów) ..... to co robisz? złożone zagnieżdżone pętle?
  4. Jeśli masz oddzielną próbkę wstrzymania, czy problem zniknie i możesz użyć weryfikacji krzyżowej, aby wybrać funkcje i parametry (bez obaw, ponieważ szacunki wydajności będą pochodzić z zestawu wstrzymań)?
B_Miner
źródło
@ user2040 (+1) Te pytania są naprawdę bardzo dobre! Nieco powiązane pytanie można znaleźć tutaj: Wybór funkcji dla „ostatecznego” modelu podczas przeprowadzania weryfikacji krzyżowej w uczeniu maszynowym .
chl
@chi Dziękuję, widziałem ten post. Czy myślisz, że przynajmniej podążam właściwą ścieżką mojego procesu myślowego? Wydaje się, że niezależny zestaw testowy pozwala nam być bardziej liberalnym w używaniu CV do wyboru funkcji i strojenia / wyboru modelu. W przeciwnym razie zagnieżdżone pętle wydają się wymagane do trenowania, dostrajania i szacowania generalizacji błędów przy użyciu tych samych danych treningowych.
B_Miner

Odpowiedzi:

18

Kluczową rzeczą do zapamiętania jest to, że aby walidacja krzyżowa dawała (prawie) bezstronną ocenę wydajności, każdy krok związany z dopasowaniem modelu musi być również wykonywany niezależnie w każdym folderze procedury walidacji krzyżowej. Najlepiej jest zobaczyć wybór funkcji, ustawienie meta / hiperparametrów i optymalizację parametrów jako integralne części dopasowania modelu i nigdy nie wykonywać żadnego z tych kroków bez wykonania pozostałych dwóch.

Optymistyczne nastawienie, które można wprowadzić, odchodząc od tego przepisu, może być zaskakująco duże, jak wykazali Cawley i Talbot , gdzie uprzedzenie wprowadzone przez pozornie łagodne odejście było większe niż różnica w wydajności między konkurującymi klasyfikatorami. Co gorsza, nadal tendencyjne protokoły najsilniej faworyzują złe modele, ponieważ są one bardziej wrażliwe na dostrajanie hiperparametrów, a zatem są bardziej podatne na przesadzanie z kryterium wyboru modelu!

Odpowiedzi na konkretne pytania:

Procedura z kroku 1 jest prawidłowa, ponieważ wybór funkcji jest wykonywany osobno dla każdej zakładki, więc to, co sprawdzasz krzyżowo, to cała procedura stosowana do ostatecznego modelu. Oszacowanie wzajemnej walidacji będzie miało nieco pesymistyczne nastawienie, ponieważ zestaw danych dla każdego złożenia jest nieco mniejszy niż cały zestaw danych użyty w ostatecznym modelu.

W przypadku 2, ponieważ do wyboru parametrów modelu używana jest walidacja krzyżowa, należy powtórzyć tę procedurę niezależnie dla każdego krotności walidacji krzyżowej wykorzystywanej do szacowania wydajności, w efekcie uzyskuje się zagnieżdżoną walidację krzyżową.

W przypadku 3, w zasadzie tak, musisz przeprowadzić zagnieżdżoną weryfikację krzyżową. Zasadniczo musisz powtórzyć w każdym folderze najbardziej zewnętrznej weryfikacji krzyżowej (wykorzystywanej do oceny wydajności) wszystko, co zamierzasz zrobić, aby dopasować do ostatecznego modelu.

Dla 4 - tak, jeśli masz oddzielny zestaw blokujący, to da bezstronną ocenę wydajności bez potrzeby dodatkowej weryfikacji krzyżowej.

Dikran Torbacz
źródło
ponownie twoja odpowiedź na pytanie 1. To jest problem, prawda? Bardzo często myślimy, że przeprowadzamy walidację krzyżową modelu, podczas gdy w rzeczywistości przeprowadzamy walidację krzyżową procedury modelowania. Różnica może być filozoficzna, ponieważ gdy zapisujesz matematykę, f może oznaczać model lub procedurę modelowania. Ale wtedy można zapytać, czy sprawdzamy poprawność procedury, co chcemy, czy sprawdzamy poprawność modelu. Jaka jest twoja myśl
qoheleth
Nie można zweryfikować krzyżowo modelu, ponieważ model zależy od próbki danych, na której został przeszkolony, gdy tylko dopasujesz go do innej próbki danych, będzie to inny model. Chodzi mi o to, że jeśli dostroisz model w jakikolwiek sposób na całej próbce danych (np. Dokonując wyboru funkcji), weryfikacja krzyżowa da optymistyczne oszacowanie uogólnienia, ponieważ partycje testowe zostały użyte do dostrojenia aspekty modelu (tj. zastosowany zestaw funkcji). HTH.
Dikran Torbacz
Nie wiem, czy kontynuowanie dyskusji w sekcji komentarzy jest w porządku, ale dopóki ktoś nie powie inaczej ... Tak, rozumiem, że twoja uwaga na temat CV musi zostać podjęta na najwyższym poziomie i nie mam nic przeciwko temu. Tak naprawdę wczoraj udzieliłem tej samej rady mojemu koledze. Po prostu zwracam uwagę, że często nie jesteśmy pewni, co sprawdzamy krzyżowo. Jednocześnie zastanawiam się, czy naprawdę potrzebujemy uzyskania oceny modelu, a nie procedury modelowania. Rozwiązaniem może być myślenie, że używa błędu procedury do oszacowania błędu modelu. Może to działa.
qoheleth
Nie możemy uzyskać bezpośredniego oszacowania wydajności określonego modelu bez zewnętrznego zestawu testów. Wydajność metody wytwarzania modelu jest jednak rozsądnym wskaźnikiem zastępczym dla wydajności samego modelu, pod warunkiem, że cała metoda jest poddana walidacji krzyżowej. Innymi słowy, zgadzam się z podsumowaniem w ostatnim zdaniu!
Dikran Marsupial
5

Przeprowadziłem rozległą analizę walidacji krzyżowej dla zestawu danych, którego pozyskanie kosztowało miliony, i nie jest dostępny żaden zewnętrzny zestaw walidacji. W tym przypadku przeprowadziłem szeroko zakrojone sprawdzanie poprawności zagnieżdżenia, aby zapewnić poprawność. Wybrałem cechy i zoptymalizowane parametry tylko z odpowiednich zestawów treningowych. Jest to drogie obliczeniowo w przypadku dużych zestawów danych, ale to właśnie musiałem zrobić, aby zachować ważność. Jednak wiążą się z tym komplikacje ... na przykład różne funkcje są wybierane w każdym zestawie treningowym.

Więc moja odpowiedź jest taka, że ​​w przypadkach, gdy nie masz realnego dostępu do zewnętrznego zestawu danych, jest to rozsądna droga. Gdy masz zewnętrzny zestaw danych, możesz prawie udać się do miasta, jak chcesz na głównym zestawie danych, a następnie raz przetestować na zewnętrznym zestawie danych.

użytkownik2643
źródło
@ user2643: Czy masz jakieś referencje dotyczące sposobu tworzenia zagnieżdżonego CV? Czy był taki sam, jak plik pdf, do którego odsyłam w swoim pytaniu? Również ..... czy te dane marketingowe są przypadkowe?
B_Miner
@ user2643 Problem z tym podejściem (co jest poprawne) polega na tym, że daje ono tylko jedno kryterium dokładności (klasyfikacja) lub precyzji (regresja); nie będziesz w stanie powiedzieć „to są najciekawsze funkcje”, ponieważ, jak powiedziałeś, różnią się między sobą. Pracowałem z danymi genetycznymi (zmienne 600k), w których użyliśmy 10-krotnego CV z wbudowanym wyborem funkcji, w schemacie permutacji (k = 1000, aby być wygodnym na poziomie 5%), aby ocenić wiarygodność wyników. W ten sposób możemy powiedzieć: „nasz model uogólnia się dobrze lub nie”, nic więcej.
chl
2
Jeśli funkcje różnią się między poszczególnymi zakładkami, oznacza to, że nie ma wystarczającej ilości informacji, aby móc z pewnością zidentyfikować użyteczne funkcje, dlatego uważam to za zaletę weryfikacji krzyżowej (ponieważ samo spojrzenie na wyniki z jednego modelu może nadmiernie spełniają kryterium wyboru funkcji i dlatego wprowadzają w błąd). W przypadku problemów z wieloma funkcjami i nielicznymi obserwacjami regresja kalenicy często zapewnia lepszą wydajność, więc chyba że identyfikacja cech jest kluczowym celem, często lepiej nie wybierać żadnej funkcji.
Dikran Torbacz
np
@ user2040: Przepraszamy za późną odpowiedź. Stworzyłem własną implementację oprogramowania opartą na zagnieżdżonym CV. Ponieważ moje badania są związane z bioinformatyką, planuję wkrótce opublikować opis oprogramowania w czasopiśmie bioinformatycznym. Ale może być stosowany w dowolnej dziedzinie badań. Jeśli chcesz to wypróbować, daj mi znać. goldfish1434 at yahoo dot com
user2643 12.01.11