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?
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?
Odpowiedzi:
Przeprowadzasz walidację krzyżową, gdy chcesz wykonać jedną z tych dwóch czynności:
Wybór modelu może występować w różnych scenariuszach:
(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
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.
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.)