Czy istnieje ogólna zasada dzielenia zestawu danych na zestawy szkoleniowe i walidacyjne?

194

Czy istnieje praktyczna zasada najlepszego podziału danych na zestawy szkoleniowe i walidacyjne? Czy wskazany jest nawet podział 50/50? Czy są wyraźne zalety posiadania większej ilości danych treningowych w porównaniu do danych walidacyjnych (lub odwrotnie)? Czy ten wybór zależy w dużej mierze od aplikacji?

Używam głównie odpowiednio 80% / 20% danych szkoleniowych i walidacyjnych, ale wybrałem ten podział bez żadnego zasadniczego powodu. Czy ktoś, kto ma większe doświadczenie w uczeniu maszynowym, może mi doradzić?

robguinness
źródło
Jeśli nie masz zbyt wielu dostępnych danych, rozważ en.wikipedia.org/wiki/Resampling_(statistics)#Jackknife
nair.ashvin

Odpowiedzi:

221

Istnieją dwie konkurencyjne kwestie: przy mniejszej liczbie danych treningowych oszacowania parametrów mają większą wariancję. Przy mniejszej liczbie danych testowych statystyki wydajności będą miały większą zmienność. Mówiąc ogólnie, powinieneś przejmować się dzieleniem danych w taki sposób, aby żadna wariancja nie była zbyt wysoka, co ma więcej wspólnego z bezwzględną liczbą wystąpień w każdej kategorii, a nie z procentem.

Jeśli masz w sumie 100 wystąpień, prawdopodobnie utkniesz w krzyżowej weryfikacji, ponieważ żaden pojedynczy podział nie zapewni zadowalającej wariancji w twoich szacunkach. Jeśli masz 100 000 instancji, tak naprawdę nie ma znaczenia, czy wybierzesz podział 80:20, czy 90:10 (w rzeczywistości możesz zdecydować się na użycie mniejszej liczby danych treningowych, jeśli twoja metoda jest szczególnie intensywna obliczeniowo).

Zakładając, że masz wystarczającą ilość danych, aby wykonać prawidłowe dane testowe (zamiast weryfikacji krzyżowej), poniżej przedstawiono pouczający sposób na uzyskanie rozbieżności:

  1. Podziel dane na szkolenia i testy (80/20 to rzeczywiście dobry punkt wyjścia)
  2. Podziel dane treningowe na treningi i walidację (ponownie, 80/20 to sprawiedliwy podział).
  3. Pogrupuj losowo wybrane dane treningowe, wytrenuj klasyfikator i zapisz wyniki na zestawie walidacyjnym
  4. Wypróbuj serię biegów z różnymi ilościami danych treningowych: losowo próbkuj 20%, powiedzmy, 10 razy i obserwuj wydajność danych weryfikacyjnych, a następnie zrób to samo z 40%, 60%, 80%. Powinieneś zobaczyć zarówno większą wydajność z większą ilością danych, ale także niższą wariancję w różnych losowych próbkach
  5. Aby uzyskać kontrolę wariancji ze względu na rozmiar danych testowych, wykonaj tę samą procedurę w odwrotnej kolejności. Trenuj wszystkie dane treningowe, a następnie kilkakrotnie losowo próbkuj procent danych weryfikacyjnych i obserwuj wyniki. Powinieneś teraz stwierdzić, że średnia wydajność na małych próbkach danych walidacyjnych jest mniej więcej taka sama jak wydajność na wszystkich danych walidacyjnych, ale wariancja jest znacznie wyższa przy mniejszej liczbie próbek testowych
Ben Allison
źródło
Dzięki, to też jest bardzo pomocne! Spróbuję. Do Twojej dyspozycji mam około 6000 danych treningowych. Korzystam z SVM, więc wydajność stanowi pewien problem.
robguinness
1
FWIW, wariancję wydajności można obliczyć, klasyfikując wszystkie instancje raz, oceniając decyzje, czy są poprawne, czy nie, a następnie próbkując te decyzje zamiast instancji testowych, aby uzyskać efekty użycia różnych rozmiarów zestawu testowego
Ben Allison
A 6000 instancji powinno wystarczyć, aby różnice między użyciem 10% lub 20% do testowania nie byłyby tak duże (możesz to potwierdzić za pomocą opisanej przeze mnie metody)
Ben Allison
1
Witaj ponownie. Jestem trochę zdezorientowany w punkcie 5. Powiedziałeś „następnie kilka razy losowo próbkuj procent danych z walidacji ”. Czy zamiast tego chciałeś zobaczyć dane testowe ? Jeśli dobrze rozumiem, powinienem najpierw podzielić moje dane na zestawy danych szkoleniowych i testowych, a następnie podzielić część mojego zestawu danych szkoleniowych na zestaw danych sprawdzania poprawności. Czy w kroku 5, jeśli mierzę wariancję danych testowych, czy nie powinienem losowo próbkować populacji na podstawie danych testowych? A może coś mi brakuje?
robguinness
2
Chodzi o to, że podczas zabawy z parametrami i obserwowania skutków zmiany rzeczy, powinieneś używać swoich danych do sprawdzania poprawności . Jeśli zaczniesz patrzeć na dane testowe i wybierać strategie na podstawie tego, co daje ci najwyższy wynik, uzyskasz zawyżone poczucie wydajności metody. Gdy wszystkie parametry są ustawione i podejmowanych decyzji, a następnie uruchomić na danych testowych. Dzięki temu dowiesz się, jaką wydajność uzyskasz na naprawdę nowych, nieobserwowanych danych (prawdopodobnie tym właśnie jesteś zainteresowany!)
Ben Allison
54

Byłbyś zaskoczony, gdy dowiesz się, że 80/20 jest dość często występującym współczynnikiem, często określanym jako zasada Pareto . Zazwyczaj jest to bezpieczny zakład, jeśli zastosujesz ten współczynnik.

Jednak w zależności od stosowanej metodologii szkolenia / walidacji współczynnik może ulec zmianie. Na przykład: jeśli użyjesz 10-krotnego sprawdzania poprawności krzyżowej, otrzymujesz zestaw sprawdzania poprawności 10% przy każdym zakładaniu.

Przeprowadzono badania dotyczące właściwego stosunku między zestawem szkoleniowym a zestawem walidacyjnym :

Część wzorów zarezerwowana dla zestawu walidacyjnego powinna być odwrotnie proporcjonalna do pierwiastka kwadratowego z liczby dowolnie regulowanych parametrów.

W podsumowaniu określają wzór:

Zestaw walidacyjny (v) do stosunku wielkości zestawu treningowego (t), v / t, skaluje się jak ln (N / h-max), gdzie N jest liczbą rodzin rozpoznających, a h-max jest największą złożonością tych rodzin.

Przez złożoność rozumieją:

Każda rodzina rozpoznawania charakteryzuje się złożonością, która może, ale nie musi być związana z wymiarem VC , długością opisu, liczbą regulowanych parametrów lub innymi miarami złożoności.

Biorąc pod uwagę pierwszą zasadę (zestaw walidacji powinien być odwrotnie proporcjonalny do pierwiastka kwadratowego z liczby dowolnych regulowanych parametrów), możesz stwierdzić, że jeśli masz 32 regulowane parametry, pierwiastek kwadratowy z 32 wynosi ~ 5,65, ułamek powinien wynosić 1 / 5,65 lub 0,177 (v / t). Około 17,7% należy zarezerwować na walidację, a 82,3% na szkolenie.

Kiril
źródło
2
Artykuł dla tych, którzy mogą mieć problemy z załadowaniem go tak jak ja (nie wiem dlaczego), brzmi: „Prawo skalowania dla rozmiaru współczynnika zestawu treningowego” (I. Guyon, 1996, niepublikowany raport techniczny, AT&T Bell Laboratories) ).
theforestecologist
3
Czy zasada kciuka ma sens? Jeśli masz dwa regulowane parametry, wówczas współczynnik wynosi 0,77, co oznacza, że ​​użyłbyś 77% do walidacji. Imho problemem jest dowolna definicja parametru. W przypadku liniowej maszyny SVM można ustawić parametr kary C dla składnika błędu, który jest jednym parametrem, ale złożoność jest wyższa Wymiar + 1 dla maszyny SVM.
Reed Richards
4
Czy mój test powinien mieć rozmiar 1, jeśli mam sieć neuronową ..?
YellowPillow
51

W zeszłym roku wziąłem udział w internetowym kursie uczenia maszynowego Prof. Andrew Ng. Jego zaleceniem było:

Szkolenie : 60%

Krzyżowa walidacja : 20%

Testowanie : 20%

Upul Bandara
źródło
20
coursera.org/learn/deep-neural-network/lecture/cxG1s/... in the modern big data era, where, for example, you might have a million examples in total, then the trend is that your dev (cross validation) and test sets have been becoming a much smaller percentage of the total. Sugeruje, że może to być 99,5: 0,25: 0,25.
Nobu,
9

Powinieneś pomyśleć o jeszcze jednej rzeczy.

Jeśli masz naprawdę duży zestaw danych, na przykład 1 000 000 przykładów, podział 80/10/10 może być niepotrzebny, ponieważ 10% = 100 000 przykładów nie jest konieczne, aby stwierdzić, że model działa poprawnie.

Może wystarczy 99 / 0,5 / 0,5, ponieważ 5000 przykładów może reprezentować większość wariancji danych i można łatwo stwierdzić, że model działa dobrze na podstawie tych 5000 przykładów w testach i programistach.

DavidS1992
źródło
0,5% w zestawie sprawdzania poprawności może wystarczyć, ale twierdzę, że podejmujesz duże i niepotrzebne ryzyko, ponieważ nie wiesz, czy wystarczy. Trening może łatwo pójść źle, jeśli używasz zbyt małego zestawu sprawdzania poprawności, ale jest prawie niemożliwe, aby popełnił błąd, używając dużego zestawu sprawdzania poprawności.
Björn Lindqvist
2

Załóżmy, że masz mniej danych, sugeruję wypróbowanie 70%, 80% i 90% i przetestowanie, które daje lepszy wynik. W przypadku 90% są szanse, że dla 10% testu otrzymujesz słabą dokładność.

Rishi Bansal
źródło
1

Być może 63,2% / 36,8% jest rozsądnym wyborem. Powodem byłoby to, że jeśli miałeś całkowitą wielkość próby n i chciałeś losowo próbować z zamiennikiem (czyli ponownym próbkowaniem, jak w statystycznym bootstrapie) n przypadków z początkowego n , prawdopodobieństwo indywidualnego przypadku jest wybierane w ponowna próba wyniesie około 0,632, pod warunkiem, że n nie jest zbyt małe, jak wyjaśniono tutaj: https://stats.stackexchange.com/a/88993/16263

Dla próbki n = 250 prawdopodobieństwo wybrania pojedynczego przypadku do ponownej próby do 4 cyfr wynosi 0,6329. Dla próbki n = 20000 prawdopodobieństwo wynosi 0,6321.

użytkownik16263
źródło
1

Wszystko zależy od dostępnych danych. Jeśli masz znaczną ilość danych, 80/20 jest dobrym wyborem, jak wspomniano powyżej. Ale jeśli nie przeprowadzisz walidacji krzyżowej z podziałem 50/50, może ci to znacznie pomóc i uniemożliwić utworzenie modelu nadmiernie dopasowanego do danych treningowych.

Mayank
źródło