Jak wybrać klasyfikator po walidacji krzyżowej?

13

Kiedy przeprowadzamy walidację krzyżową k-fold, czy powinniśmy po prostu użyć klasyfikatora, który ma najwyższą dokładność testu? Jakie jest ogólnie najlepsze podejście do uzyskania klasyfikatora z krzyżowej weryfikacji?

Armon Safai
źródło
Myślę, że to pytanie zależy w dużej mierze od metryki zastosowanej do określenia „najlepszego podejścia”. Ilościowo wiele osób korzysta z dokładności, ale w zależności od zestawu danych można użyć innych wskaźników, takich jak średnia harmoniczna, na przykład wynik F1. Zatem wybór metryczny może być równie ważny.
Nathan McCoy,
@NathanMcCoy dobrze zakładając, że wybieramy dokładność, wybralibyśmy klasyfikator o najwyższej dokładności testu?
Armon Safai,
Pewnie! Próbuję tylko wspomnieć o czymś innym do przemyślenia :)
Nathan McCoy

Odpowiedzi:

15

Przeprowadzasz walidację krzyżową, gdy chcesz wykonać jedną z tych dwóch czynności:

  • Wybór modelu
  • Oszacowanie błędu modelu

Wybór modelu może występować w różnych scenariuszach:

  • Wybieranie jednego algorytmu względem innych dla określonego problemu / zestawu danych
  • Wybór hiperparametrów konkretnego algorytmu dla określonego problemu / zestawu danych

(zauważ, że jeśli wybierasz algorytm - lepiej nazwać go modelem - a także wyszukujesz hiperparametry, musisz przeprowadzić sprawdzanie poprawności zagnieżdżonej . Czy Nested-CV jest naprawdę potrzebny? )

Walidacja krzyżowa zapewnia do pewnego stopnia, że ​​oszacowanie błędu jest najbliższym możliwym błędem uogólniającym dla tego modelu (chociaż jest to bardzo trudne do oszacowania). Obserwując średni błąd między fałdami, możesz mieć dobrą prognozę oczekiwanego błędu dla modelu zbudowanego na pełnym zbiorze danych. Ważne jest również obserwowanie wariancji prognozy, czyli o ile błąd zmienia się od złożenia do złożenia. Jeśli wariacja jest zbyt duża (znacznie różne wartości), model będzie miał tendencję do niestabilności. Bootstrapping to druga metoda zapewniająca dobre przybliżenie w tym sensie. Proponuję uważnie przeczytać sekcję 7 książki „Elementy uczenia statystycznego”, dostępną bezpłatnie pod adresem: ELS-Standford

Jak wspomniano wcześniej, nie wolno brać zbudowanego modelu w żadnej z fałd. Zamiast tego musisz odbudować model z pełnym zestawem danych (ten, który został podzielony na fałdy). Jeśli masz oddzielny zestaw testowy, możesz go użyć do wypróbowania tego ostatecznego modelu, uzyskując podobny (i na pewno wyższy) błąd niż ten uzyskany przez CV. Powinieneś jednak polegać na szacowanym błędzie podanym w procedurze CV.

Po wykonaniu CV z różnymi modelami (kombinacja algorytmów itp.) Wybrałem ten, który działał lepiej pod względem błędu i jego wariancji między fałdami. Będziesz musiał odbudować model z całym zestawem danych. Pojawia się powszechne zamieszanie w terminach: często odnosimy się do wyboru modelu, myśląc, że model jest modelem gotowym do przewidywania zbudowanym na danych, ale w tym przypadku odnosi się do kombinacji zastosowanych algorytmów i procedur wstępnego przetwarzania. Tak więc, aby uzyskać rzeczywisty model potrzebny do prognozowania / klasyfikacji, należy go zbudować przy użyciu kombinacji zwycięzców dla całego zestawu danych.

Ostatnią rzeczą do zapamiętania jest to, że jeśli stosuje się jakiekolwiek przetwarzanie wstępne, wykorzystuje informacje o klasie (wybór funkcji, zmniejszenie wymiarów LDA itp.), Należy to wykonać przy każdym zakładaniu, a nie wcześniej na danych. To jest aspekt krytyczny. Powinieneś zrobić to samo, jeśli stosujesz metody przetwarzania wstępnego, które wymagają bezpośredniej informacji o danych (PCA, normalizacja, standaryzacja itp.). Możesz jednak zastosować przetwarzanie wstępne, które nie zależy od danych (usuwanie zmiennej po opinii eksperta, ale jest to dość oczywiste). Ten film może ci pomóc w tym kierunku: CV we właściwy i niewłaściwy sposób

Oto ostatnie fajne wyjaśnienie na ten temat: CV i wybór modelu

Javierfdr
źródło
Rozumiem, czy naprawdę potrzebujesz osobnych danych testowych, czy możesz po prostu wyszkolić klasyfikatora na 100% wszystkich danych, które już masz, ponieważ przeprowadziliśmy już weryfikację krzyżową i otrzymaliśmy przybliżony błąd testu dla modelu?
Armon Safai
+1 za „wybrałem ten, który działał lepiej pod względem błędu i jego wariancji między fałdami ”. Przy wyborze modeli wydaje się, że wszyscy ignorują wariancję fałdów.
stmax
Dlaczego powinienem dbać o błąd testu, jeśli zależy mi tylko na błędzie CV? Zapytałem, ponieważ napisałeś „naprawdę o szacowanym błędzie podanym w procedurze CV”.
HelloWorld,
Inne pytanie. Co jeśli najlepszy model z CV nie jest najlepszym modelem, gdy jest zbudowany dla całego zestawu danych?
HelloWorld,
1
Budujesz model na 100% danych, co oznacza na 100% danych używanych do weryfikacji krzyżowej. Jeśli wcześniej podzieliłeś oryginalne dane na 80% -20% na szkolenie i dalsze testy, to wykonujesz CV na 80%, wybierz model i przekwalifikuj się na całe 80%. Posiadanie zestawu testowego w tym przypadku (20%) pozwala tylko zobaczyć, jak się zachowuje w przypadku nowych niewidzialnych danych (można to uznać za dane, które stały się dostępne w przyszłości), ale oszacowany przez ciebie błąd jest oszacowany na podstawie CV . Mam nadzieję, że spowoduje to podobny błąd z nowymi danymi, jeśli jest to dobry model (to 20%, a właściwie nowe dane). @ArmonSafai
Javierfdr
8

Nie. Nie wybierasz żadnego z k klasyfikatorów zbudowanych podczas k-krotnej walidacji krzyżowej. Po pierwsze, celem walidacji krzyżowej nie jest wymyślenie modelu predykcyjnego, ale ocena, jak dokładnie model predykcyjny będzie działał w praktyce. Po drugie, ze względu na argument, powiedzmy, że użyłbyś k-krotnej walidacji krzyżowej z k = 10, aby dowiedzieć się, który z trzech różnych algorytmów klasyfikacji byłby najbardziej odpowiedni do rozwiązania danego problemu z klasyfikacją. W takim przypadku dane są losowo dzielone na k części równej wielkości. Jedna część jest zarezerwowana do testowania, a pozostałe części k-1 zostaną wykorzystane do treningu. Proces walidacji krzyżowej powtarza się k (krotnie) razy, tak że przy każdej iteracji do testowania używana jest inna część. Po przeprowadzeniu weryfikacji krzyżowej patrzysz na wyniki z każdej zakładki i zastanawiasz się, który algorytm klasyfikacji (nie żaden z wyuczonych modeli!) Jest najbardziej odpowiedni. Nie chcesz wybierać algorytmu, który ma najwyższą dokładność testu na jednej z 10 iteracji, ponieważ być może przypadkowo zdarzyło się, że dane testowe na tej konkretnej iteracji zawierały bardzo łatwe przykłady, które następnie prowadziły do ​​wysokiej dokładności testu. To, co chcesz zrobić, to wybrać algorytm zapewniający najlepszą dokładność co następnie prowadzi do wysokiej dokładności testu. To, co chcesz zrobić, to wybrać algorytm zapewniający najlepszą dokładność co następnie prowadzi do wysokiej dokładności testu. To, co chcesz zrobić, to wybrać algorytm zapewniający najlepszą dokładnośćuśrednione dla wszystkich k fałd . Teraz, gdy wybrałeś algorytm, możesz trenować go przy użyciu całych danych treningowych i zacząć przewidywać na wolności.

Jest to poza zakresem tego pytania, ale należy również zoptymalizować hiperparametry modelu (jeśli istnieją), aby w pełni wykorzystać wybrany algorytm. Ludzie zwykle przeprowadzają optymalizację hiperparametrów za pomocą weryfikacji krzyżowej.

tuomastik
źródło
Myślałem, że k-krotna weryfikacja krzyżowa tworzy k różnych modeli, ponieważ istnieje 10 różnych zestawów danych treningowych.
Armon Safai,
Sprawdź moją zaktualizowaną odpowiedź. Udoskonaliłem go, aby odpowiedzieć na pytanie bardziej bezpośrednio i lepiej wyjaśnić na przykładzie.
tuomastik
Rozumiem, więc kiedy w końcu trenujesz klasyfikator, czy wykorzystujesz WSZYSTKIE swoje dane do trenowania klasyfikatora po wybraniu algorytmu z krzyżowej weryfikacji
Armon Safai
Tak, jeśli nie chcesz wykonywać żadnych dalszych analiz, takich jak optymalizacja hiperparametrów, która wymaga zagnieżdżonej weryfikacji krzyżowej, w której wewnętrzna pętla CV zajmuje się dostrajaniem hiperparametrów, a zewnętrzna pętla CV ocenia wydajność modelu w niezależnym zestawie danych z optymalnym hiperparametry.
tuomastik
1

Załóżmy więc, że masz szkolenie, z którego używasz 80% jako trening, a resztę 20% jako dane do walidacji. Możemy ćwiczyć na 80% i testować na pozostałych 20%, ale możliwe jest, że 20%, które pobraliśmy, nie jest podobne do rzeczywistych danych testowych i może wykonać złe drugie. Aby temu zapobiec, możemy zastosować walidację krzyżową k-fold.

Powiedzmy, że masz różne modele i chcesz wiedzieć, który z nich działa lepiej, sprawdzanie poprawności metodą k-fold działa świetnie. Możesz poznać błędy sprawdzania poprawności występów k-sprawdzania poprawności i na tej podstawie wybrać lepszy model. Jest to generalnie cel walidacji krzyżowej k-krotnie.

Jeśli chodzi o tylko jeden model i jeśli sprawdzasz za pomocą k-krotnej weryfikacji krzyżowej, możesz uzyskać przybliżone błędy danych testowych, ale when you are actually training it finally, you can use the complete training data(ponieważ tutaj zakłada się, że wszystkie dane będą razem działać lepiej niż ich część) . Może czasem tak nie jest, ale jest to ogólne założenie.)

Hima Varsha
źródło
Więc kiedy przeprowadzamy walidację krzyżową, po prostu wybieramy model, który ma najwyższą dokładność testu?
Armon Safai,
kiedy mówisz test, masz na myśli test zestawu danych walidacyjnych, prawda?
Hima Varsha,
tak, o to mi chodzi
Armon Safai
po skorzystaniu z weryfikacji krzyżowej, aby wybrać model o lepszej wydajności (na przykład masz 2 modele - regresję liniową lub sieć neuronową), trenujemy ten model (niezależnie od tego, czy jest to regresja liniowa czy sieć neuronowa) na wszystkich danych
Hima Varsha,
1
@HimaVarsha, więc jeśli zdecydujemy się wziąć średnią, w jaki sposób wybralibyśmy „uśredniony klasyfikator”?
Armon Safai,