Wybór K w K-krotnie walidacji krzyżowej


136

Używam tego K -krotnie krzyżowe sprawdzanie kilka razy, aby ocenić skuteczność niektórych algorytmów uczenia się, ale zawsze byłem zdziwiony, jak mam wybrać wartość K .

Często widziałem i stosowałem wartość K=10 , ale wydaje mi się to całkowicie arbitralne, a teraz po prostu używam 10 z przyzwyczajenia, zamiast ją przemyśleć. Wydaje mi się, że otrzymujesz lepszą ziarnistość, gdy poprawiasz wartość K , więc idealnie byłoby , gdyby twoje K bardzo duże, ale istnieje również ryzyko stronniczości.

Chciałbym wiedzieć, od czego powinna zależeć wartość K 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?


Odpowiedzi:


69

Wybór jest dość dowolny. Oto jak decyduję k :k=10k

  • po pierwsze, aby obniżyć wariancję wyniku CV, możesz i powinieneś powtarzać / iterować CV z nowymi losowymi podziałami.
    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.k

  • @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).kk=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

    • Za pominięcie: możliwe są różne kombinacje modelu / próbki testowej. Iteracje w ogóle nie mają sensu.(n1)=n=k
    • Np. i k = 10 : różne kombinacje modeli / próbek testowych. Możesz rozważyć przejrzenie wszystkich możliwych kombinacji tutaj, ponieważ 19 iteracji fold CV lub w sumie 190 modeli to niewiele.n=20k=10k(n=202)=190=19kk
  • 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.nkn


6
(+1) dla opracowania, ale (-1) dla powtórzeń liczy się CV. To prawda, że ​​ryzyko tworzenia dokładnych duplikatów (patrząc na identyfikatory obserwacji) jest niewielkie (biorąc pod uwagę wystarczającą ilość danych itp.), Ale ryzyko tworzenia duplikatów wzorca / struktury danych jest bardzo wysokie. Nie powtórzyłbym CV więcej niż 10 razy, bez względu na to, co to jest k ... po prostu, aby uniknąć niedoceniania wariancji.
steffen

3
@steffen, czy nie to już zauważył Ogrisel: że modele (zastępcze) nie są tak naprawdę niezależne? Całkowicie się zgadzam, że tak jest. Właściwie staram się wziąć to pod uwagę, interpretując wyniki w kategoriach stabilności modeli (zastępczych) wrt. wymieniając „kilka” próbek (których nie chciałem tutaj omawiać - ale patrz np. stats.stackexchange.com/a/26548/4598 ). I nie obliczam błędu standardowego, ale raczej raportuję np. Medianę i do percentyl zaobserwowanych błędów w iteracjach. Wyślę osobne pytanie na ten temat. 95 t h5th95th
cbeleites

2
Widzę. Zgadzam się, że podejście to jest właściwe do oszacowania stabilności surogatu. Przypomniałem sobie statystyczny test kontrolny, który zdecydował, czy jeden model przewyższa inny. Zbyt częste powtarzanie cv zwiększa ryzyko błędu alfa nieprzewidywalnie. Myliłem więc wewnętrzną z zewnętrzną walidacją (jak to tutaj umieściło dikran ).
steffen

2
@cbeleites: Zgadzam się z tobą. Zróżnicowanie spowodowane ograniczoną wielkością próby zwykle przeważa nad niepewnością modelu.
jpcgandre

2
@jpcgandre: Przynajmniej dla błędów klasyfikacji, takich jak czułość, specyficzność itp., można obliczyć niepewność wynikającą z całkowitej liczby testowanych przypadków. Chociaż prawdą jest, że jest to tylko część całkowitej wariancji, przynajmniej w sytuacjach, które spotykam w mojej pracy, ta niepewność jest często tak duża, że ​​nawet przybliżony domniemanie wystarcza, aby wyjaśnić, że wnioski są poważnie ograniczone. I to ograniczenie pozostaje, nie zniknie przy użyciu 50x 8-krotności lub 80x 5-krotności zamiast 40x 10-krotnej walidacji krzyżowej.
cbeleites,

37

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ę).


1
knknk

6
Przez wariancję rozumiem wariancję szacowanego oczekiwanego błędu testu uzyskanego przez przyjęcie mediany lub średniej błędów fałdu CV względem „prawdziwego rozkładu”, a nie między fałdami CV. Kiedy k jest duże, zbliżasz się do LOO-CV, który jest bardzo zależny od konkretnego zestawu treningowego, który masz pod ręką: jeśli liczba próbek jest niewielka, może nie być tak reprezentatywna dla prawdziwego rozkładu, stąd wariancja. Kiedy k jest duże, k-krotnie CV może symulować takie dowolne twarde próbki zestawu treningowego.
ogrisel

8
Jako dodatek: Kohavi studiuje kompromis-wariancja-kompromis w walidacji w rozdziale 3 swojej rozprawy doktorskiej . Gorąco polecam.
steffen

3
KKKK

Tak, myślę, że to poprawna intuicja.
ogrisel

0

Nie wiem, jak Kwpł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-1jeś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.


-6

Rozwiązanie:

K = N/N*0.30
  • N = rozmiar zestawu danych
  • K = Fold

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.


4
NN0.3=10.33.33=const.

K = N / N * 0,3 = 10/3, co jest stałą. Dlatego logiczne jest używanie tej wartości dla każdego warunku.
Kamal Thapa,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.