Używam tego -krotnie krzyżowe sprawdzanie kilka razy, aby ocenić skuteczność niektórych algorytmów uczenia się, ale zawsze byłem zdziwiony, jak mam wybrać wartość .
Często widziałem i stosowałem wartość , ale wydaje mi się to całkowicie arbitralne, a teraz po prostu używam z przyzwyczajenia, zamiast ją przemyśleć. Wydaje mi się, że otrzymujesz lepszą ziarnistość, gdy poprawiasz wartość , więc idealnie byłoby , gdyby twoje bardzo duże, ale istnieje również ryzyko stronniczości.
Chciałbym wiedzieć, od czego powinna zależeć wartość i jak powinienem o tym myśleć, oceniając mój algorytm. Czy to coś zmienia, jeśli użyję warstwowej wersji weryfikacji krzyżowej, czy nie?
machine-learning
classification
cross-validation
Charles Menguy
źródło
źródło
Odpowiedzi:
Wybór jest dość dowolny. Oto jak decyduję k :k = 10 k
po pierwsze, aby obniżyć wariancję wyniku CV, możesz i powinieneś powtarzać / iterować CV z nowymi losowymi podziałami.k
To sprawia, że argument o wysokim => dłuższym czasie obliczeń jest w dużej mierze nieistotny, ponieważ i tak chcesz obliczyć wiele modeli. Zwykle myślę głównie o całkowitej liczbie modeli obliczonych (analogicznie do ładowania początkowego). Więc mogę zdecydować się na 100 x 10-krotne CV lub 200 x 5-krotne CV.
@ogrisel już wyjaśnił, że zwykle duże oznacza mniej (pesymistyczne) stronniczość. (Niektóre wyjątki są znane szczególnie dla k = n , tj. Pominięcie jednego).k k = n
Jeśli to możliwe, używam który jest dzielnikiem wielkości próby lub wielkości grup w próbce, które powinny być rozwarstwione.k
Zbyt duży oznacza, że możliwa jest tylko niewielka liczba kombinacji próbek, co ogranicza liczbę różnych iteracji.k
Te myśli mają większą wagę przy małych rozmiarach próbek. Przy większej liczbie dostępnych próbek nie ma większego znaczenia. Możliwa liczba kombinacji wkrótce stanie się wystarczająco duża, więc (powiedzmy) 100 iteracji 10-krotnego CV nie wiąże się z dużym ryzykiem bycia duplikatem. Ponadto więcej próbek treningowych zwykle oznacza, że znajdujesz się w bardziej płaskiej części krzywej uczenia się, więc różnica między modelami zastępczymi a modelem „rzeczywistym” wytrenowanym na wszystkich próbkach staje się nieistotna.nk n
źródło
Większe K oznacza mniejszą tendencję do przeszacowania rzeczywistego oczekiwanego błędu (ponieważ fałdy treningowe będą bliższe całkowitemu zestawowi danych), ale większą wariancję i dłuższy czas działania (w miarę zbliżania się do limitu: CV bez wyjścia).
Jeśli nachylenie krzywej uczenia się jest wystarczająco płaskie przy wielkości Training_size = 90% całego zestawu danych, wówczas odchylenie można zignorować, a K = 10 jest rozsądne.
Również wyższy K daje więcej próbek do oszacowania dokładniejszego przedziału ufności na podstawie twojego oszacowania (używając albo parametrycznego błędu standardowego zakładającego normalność rozkładu błędów testu CV lub nieparametrycznego CI bootstrapu, które po prostu przyjmują założenie idid, które w rzeczywistości nie jest bardzo prawdziwe ponieważ fałdy CV nie są od siebie niezależne).
Edycja: niedoszacowanie => przeszacowanie prawdziwego oczekiwanego błędu
Edycja: część tej odpowiedzi na temat wyższych wariancji dla dużych K lub LOOCV jest prawdopodobnie nieprawidłowa (nie zawsze prawdziwa). Więcej szczegółów z symulacjami w tej odpowiedzi: Odchylenie i wariancja w walidacji krzyżowej typu out-one-out vs. K-fold (dzięki Xavier Bourret Sicotte za tę pracę).
źródło
Nie wiem, jak
K
wpływa to na dokładność i uogólnienie, i może to zależeć od algorytmu uczenia się, ale zdecydowanie wpływa na złożoność obliczeniową prawie liniowo (asymptotycznie, liniowo) dla algorytmów szkoleniowych o złożoności algorytmicznej liniowej w liczbie instancji treningowych. Czas obliczeniowy na trening wydłuża się,K-1
jeśli czas treningowy jest liniowy w liczbie wystąpień treningowych. W przypadku małych zestawów treningowych rozważę aspekty dokładności i uogólnienia, zwłaszcza biorąc pod uwagę, że musimy jak najlepiej wykorzystać ograniczoną liczbę wystąpień treningowych.Jednak w przypadku dużych zestawów treningowych i algorytmów uczenia się o wysokim asymptotycznym wzroście złożoności obliczeniowej w liczbie wystąpień treningowych (przynajmniej liniowych) po prostu wybieram
K=2
, aby nie było wzrostu czasu obliczeniowego dla algorytmu szkoleniowego o asymptotycznej złożoności liniowej w liczbie instancji szkoleniowych.źródło
Rozwiązanie:
Komentarz: Możemy również wybrać 20% zamiast 30%, w zależności od rozmiaru, który chcesz wybrać jako zestaw testowy.
Przykład:
Jeśli rozmiar zestawu danych: N = 1500; K = 1500/1500 * 0,30 = 3,33; Możemy wybrać wartość K jako 3 lub 4
Uwaga:
Duża wartość K w przypadku pominięcia jednej weryfikacji krzyżowej spowodowałaby nadmierne dopasowanie. Mała wartość K w przypadku pominięcia jednej weryfikacji krzyżowej spowodowałaby niedopasowanie.
Podejście może być naiwne, ale nadal byłoby lepsze niż wybranie k = 10 dla zestawu danych o różnych rozmiarach.
źródło