Zauważyłem to mylące, gdy korzystam z przybornika sieci neuronowej w Matlabie.
Podzielił nieprzetworzony zestaw danych na trzy części:
- zestaw treningowy
- zestaw sprawdzania poprawności
- zestaw testowy
Zauważam, że w wielu algorytmach szkoleniowych lub uczących się dane często dzielą się na 2 części, zestaw szkoleniowy i zestaw testowy.
Moje pytania to:
- jaka jest różnica między zestawem walidacyjnym a zestawem testowym?
- Czy zestaw walidacyjny jest naprawdę specyficzny dla sieci neuronowej? Lub jest opcjonalny.
- Idąc dalej, czy istnieje różnica między sprawdzaniem poprawności a testowaniem w kontekście uczenia maszynowego?
machine-learning
validation
xiaohan2012
źródło
źródło
The training set is used to fit the models; the validation set is used to estimate prediction error for model selection; the test set is used for assessment of the generalization error of the final chosen model. Ideally, the test set should be kept in a “vault,” and be brought out only at the end of the data analysis.
Odpowiedzi:
Zwykle do uczenia nadzorowanego potrzebne są dwa typy zestawów danych:
W jednym zestawie danych („złotym standardzie”) masz dane wejściowe wraz z poprawnymi / oczekiwanymi danymi wyjściowymi. Ten zestaw danych jest zwykle odpowiednio przygotowywany przez ludzi lub przez gromadzenie niektórych danych w sposób półautomatyczny. Ważne jest jednak, aby mieć tutaj oczekiwany wynik dla każdego wiersza danych, ponieważ jest on potrzebny do uczenia nadzorowanego.
Dane, do których zamierzasz zastosować swój model. W wielu przypadkach są to dane, które są zainteresowane danymi wyjściowymi twojego modelu, a zatem nie masz jeszcze żadnych „oczekiwanych” danych wyjściowych.
Podczas uczenia maszynowego wykonujesz następujące czynności:
Faza walidacji jest często podzielona na dwie części :
Stąd podział na 50/25/25.
W przypadku, gdy nie musisz wybierać odpowiedniego modelu spośród kilku podejść konkurencyjnych, możesz po prostu ponownie podzielić swój zestaw, tak że w zasadzie masz tylko zestaw treningowy i zestaw testowy, bez przeprowadzania walidacji wyszkolonego modelu. Osobiście dzielę je na 70/30.
Zobacz także to pytanie .
źródło
Zestaw treningowy: zestaw przykładów używanych do nauki: dopasowanie parametrów klasyfikatora W przypadku Perceptronu Wielowarstwowego (MLP) użyjemy zestawu treningowego do znalezienia „optymalnych” wag z regułą back-prop
Zestaw walidacyjny: zestaw przykładów używanych do dostrajania parametrów klasyfikatora W przypadku MLP użyjemy zestawu walidacyjnego do znalezienia „optymalnej” liczby ukrytych jednostek lub ustalenia punktu zatrzymania dla algorytmu propagacji wstecznej
Zestaw testowy: zestaw przykładów wykorzystanych tylko do oceny wydajności w pełni przeszkolonego klasyfikatora W przypadku MLP test użyłby do oszacowania poziomu błędu po wybraniu ostatecznego modelu (rozmiar MLP i rzeczywiste wagi) Po ocenie ostateczny model z zestawu testowego, NIE WOLNO nastroić modelu!
Dlaczego oddzielne zestawy testów i sprawdzania poprawności? Oszacowanie poziomu błędu ostatecznego modelu na danych walidacyjnych będzie tendencyjne (mniejsze niż rzeczywisty poziom błędu), ponieważ zestaw walidacyjny służy do wyboru ostatecznego modelu Po ocenie ostatecznego modelu na zestawie testowym NIE WOLNO dostrajać modelu dalej!
źródło: Wprowadzenie do analizy wzorców, Ricardo Gutierrez-OsunaTexas A&M University, Texas A&M University
źródło
Moje 5-letnie doświadczenie w informatyce nauczyło mnie, że nie ma nic lepszego niż prostota.
Koncepcja zestawów danych „Trening / Walidacja krzyżowa / Test” jest tak prosta. W przypadku dużego zestawu danych zaleca się podzielenie go na 3 części:
++ Zestaw szkoleniowy (60% oryginalnego zestawu danych): służy do budowania naszego algorytmu prognozowania. Nasz algorytm stara się dostroić do dziwactwa zestawów danych treningowych. W tej fazie zwykle tworzymy wiele algorytmów w celu porównania ich wydajności podczas fazy weryfikacji krzyżowej.
++ Cross-Validation set (20% oryginalnego zestawu danych): Ten zestaw danych służy do porównania wydajności algorytmów prognozowania, które zostały utworzone na podstawie zestawu szkoleniowego. Wybieramy algorytm, który ma najlepszą wydajność.
++ Zestaw testowy (20% oryginalnego zestawu danych): Teraz wybraliśmy preferowany algorytm predykcji, ale nie wiemy jeszcze, jak będzie on działać na całkowicie niewidzialnych danych w świecie rzeczywistym. Dlatego stosujemy wybrany algorytm predykcji w naszym zestawie testowym, aby zobaczyć, jak będzie on działać, abyśmy mogli mieć pojęcie o wydajności naszego algorytmu na niewidzialnych danych.
Uwagi:
- Bardzo ważne jest, aby pamiętać, że pomijanie fazy testowej nie jest zalecane, ponieważ algorytm, który działał dobrze podczas fazy weryfikacji krzyżowej, nie oznacza, że jest naprawdę najlepszy, ponieważ algorytmy są porównywane na podstawie krzyżowej - zestaw walidacyjny oraz jego dziwactwa i dźwięki ...
- Podczas fazy testowej celem jest sprawdzenie, jak nasz ostateczny model poradzi sobie na wolności, więc w przypadku jego niskiej wydajności powinniśmy powtórzyć cały proces, zaczynając od fazy szkolenia.
źródło
Na każdym kroku, o który proszony jest o podjęcie decyzji (tj. Wybranie jednej opcji spośród kilku opcji), musisz mieć dodatkowy zestaw / partycję, aby zmierzyć dokładność swojego wyboru, abyś nie wybrał najkorzystniejszego wyniku losowości i pomyl ogon rozkładu z centrum 1 . Po lewej jest pesymista. Prawica jest optymistą. Centrum jest pragmatykiem. Bądź pragmatykiem.
Krok 1) Szkolenie: Każdy typ algorytmu ma swoje własne opcje parametrów (liczba warstw w sieci neuronowej, liczba drzew w losowym lesie itp.). Dla każdego z algorytmów musisz wybrać jedną opcję. Właśnie dlatego masz zestaw treningowy.
Krok 2) Sprawdzanie poprawności: masz teraz zbiór algorytmów. Musisz wybrać jeden algorytm. Właśnie dlatego masz zestaw testowy. Większość osób wybiera algorytm, który działa najlepiej na zestawie sprawdzania poprawności (i to jest w porządku). Ale jeśli nie mierzysz wskaźnika błędów algorytmu o najwyższej skuteczności w zestawie testowym i po prostu korzystasz z jego wskaźnika błędów w zestawie sprawdzania poprawności, ślepo pomyliłeś „najlepszy możliwy scenariusz” z „najbardziej prawdopodobnym scenariuszem”. To przepis na katastrofę.
Krok 3) Testowanie: Przypuszczam, że jeśli twoje algorytmy nie miały żadnych parametrów, nie potrzebowałbyś trzeciego kroku. W takim przypadku etap weryfikacji będzie etapem testowym. Być może Matlab nie pyta cię o parametry lub zdecydowałeś się ich nie używać i to jest przyczyną twojego pomieszania.
1 Często pomocne jest wchodzenie w każdy krok z założeniem (hipoteza zerowa), że wszystkie opcje są takie same (np. Wszystkie parametry są takie same lub wszystkie algorytmy są takie same), stąd moje odniesienie do rozkładu.
2 Ten obraz nie jest moim własnym. Wziąłem go z tej strony: http://www.teamten.com/lawrence/writings/bell-curve.png
źródło
Nie oznacza to, że musisz w jakikolwiek sposób podzielić dane. Bootstrap może dostarczyć mniejszych oszacowań średnich błędów kwadratu dokładności prognozowania, wykorzystując całą próbkę zarówno do opracowania, jak i przetestowania modelu.
źródło
Typowe zadanie uczenia maszynowego można wizualizować jako następującą zagnieżdżoną pętlę:
Zazwyczaj pętla zewnętrzna jest wykonywana przez człowieka , na zestawie walidacyjnym , a pętla wewnętrzna przez maszynę , na zestawie szkoleniowym . Następnie potrzebujesz trzeciego zestawu testowego, aby ocenić ostateczną wydajność modelu.
Innymi słowy, zestaw walidacyjny jest zestawem szkoleniowym dla człowieka.
źródło
Jednym ze sposobów myślenia o tych trzech zestawach jest to, że dwa z nich (
training
ivalidation
) pochodzą z przeszłości, podczas gdytest
zestaw pochodzi z „przyszłości”. Model należy budować i dostrajać przy użyciu danych z „przeszłości” (training
/validation
data), ale nigdytest
danych pochodzących z „przyszłości”.Aby dać praktyczny przykład, powiedzmy, że budujemy model, aby przewidzieć, jak dobrze grą baseballiści w przyszłości. Wykorzystamy dane z lat 1899-2014, aby stworzyć
test
ivalidation
ustawić. Po zbudowaniu i dostosowaniu modelu na podstawie tych danych wykorzystamy dane z 2015 r. (A właściwie z przeszłości!) Jako zestaw testowy, który z perspektywy modelu wygląda jak dane „przyszłe” i w żaden sposób nie wpłynął na tworzenie modelu . (Oczywiście teoretycznie moglibyśmy czekać na dane z 2016 r., Jeśli naprawdę chcemy!)Oczywiście używam cudzysłowów wszędzie, ponieważ faktyczny porządek czasowy danych może nie pokrywać się z rzeczywistą przyszłością (z definicji cała generacja danych prawdopodobnie miała miejsce w przeszłości). W rzeczywistości
test
zestaw może być po prostu danymi z tego samego okresu co zestawtraining
/validation
, który „trzymasz”. W ten sposób nie miało to wpływu na strojenie modelu, ale te, które wstrzymują dane, nie pochodzą w rzeczywistości z przyszłości.źródło
test
dane nigdy nie powinny być częścią procesu szkoleniowego: a jeśli traktujemy je jako dane „przyszłe”, staje się to niemożliwym błędem.Większość nadzorowanych algorytmów eksploracji danych wykonuje następujące trzy kroki:
źródło
Niektórzy ludzie mają wątpliwości co do tego, dlaczego używamy zestawu sprawdzania poprawności, więc dam proste, intuicyjne wyjaśnienie, co się stanie, jeśli nie użyjesz zestawu danych sprawdzania poprawności.
Jeśli nie użyjesz zestawu walidacyjnego, będziesz musiał wybrać hiperparametry i zdecydować, kiedy przerwać trening w oparciu o wydajność modelu w zestawie danych testowych. Jeśli zdecydujesz, kiedy przerwać szkolenie w oparciu o wydajność modelu w zestawie danych testowych, możesz po prostu przerwać szkolenie, gdy model wypadnie dobrze w zestawie danych testowych. Następnie, zgłaszając swoje wyniki, podajesz dokładność zestawu danych testowych. Problem polega na tym, że można powiedzieć, że Twój model spisał się naprawdę dobrze, podczas gdy w rzeczywistości była to tylko przypadkowa odmiana, która sprawiła, że radził sobie lepiej tylko na zestawie testowym.
Jeśli zamiast tego użyjesz zestawu walidacyjnego, aby zdecydować, kiedy przerwać trening, dokładność modelu w zestawie testowym jest bardziej obiektywnym odzwierciedleniem tego, jak ogólnie radzi sobie on z zadaniem, i pokazuje, że nie zoptymalizowałeś model tylko po to, by dobrze spisać się na zestawie testowym.
źródło
Chciałbym tutaj dodać do innych bardzo dobrych odpowiedzi, wskazując na stosunkowo nowe podejście w uczeniu maszynowym zwane „różnicową prywatnością” (zobacz artykuły Dwork; blog Win Vector, aby uzyskać więcej). Pomysł pozwala na ponowne wykorzystanie zestawu testowego bez pogorszenia wydajności ostatecznego modelu. W typowym ustawieniu zestaw testowy służy jedynie do oszacowania ostatecznej wydajności; idealnie nie wolno nawet na to patrzeć.
Jak dobrze opisano na blogu Win Vector (patrz także inne wpisy), możliwe jest „użycie” zestawu testowego bez wpływu na wydajność modelu. Odbywa się to za pomocą specjalnej procedury zwanej „różnicową prywatnością”. Uczący się nie będzie miał bezpośredniego dostępu do zestawu testów.
źródło
Moim pomysłem jest to, że te opcje w zestawie narzędzi sieci neuronowej służą do unikania nadmiernego dopasowania. W tej sytuacji wagi są określone tylko dla danych treningowych i nie pokazują globalnego trendu. Dzięki zestawowi walidacji iteracje można dostosować do sytuacji, w których zmniejszenie błędu danych treningowych powoduje zmniejszenie danych walidacyjnych i zwiększenie błędu danych walidacyjnych; wraz ze zmniejszeniem błędu danych treningowych, pokazuje to zjawisko nadmiernego dopasowania.
źródło