Krzyżowa walidacja i optymalizacja parametrów

14

Mam pytanie dotyczące optymalizacji parametrów, gdy korzystam z 10-krotnej walidacji krzyżowej.

Chcę zapytać, czy parametry powinny zostać naprawione podczas treningu modelu każdego złożenia, tj. (1) wybierz jeden zestaw zoptymalizowanych parametrów dla średniej dokładności każdego złożenia.

lub

(2) Powinienem znaleźć zoptymalizowany parametr dla każdego zagięcia, a następnie każde zagięcie używa różnych zoptymalizowanych parametrów do trenowania swojego modelu, a następnie przetestować odpowiednio dane testowe zagięcia, a na koniec uśrednić dokładność każdego zagięcia?

Która metoda jest poprawna do weryfikacji krzyżowej? Wielkie dzięki.

Kevin
źródło
To pytanie: stats.stackexchange.com/questions/1826/... ma dwie świetne odpowiedzi (najwyższy wynik), myślę, że mogą ci pomóc w twoim pytaniu. Drugi jest dokładnie tym, czego chcesz. OBS .: Chciałbym napisać to jako komentarz, ale nie mogę tego zrobić, więc odpowiedziałem.
Augusto,

Odpowiedzi:

11

Rozróżnijmy najpierw dwa zestawy parametrów: parametry modelu (np. Wagi cech w regresji) oraz parametry algorytmu uczenia się (i hiperparametrów). Celem walidacji krzyżowej jest identyfikacja parametrów uczenia się, które dobrze się uogólniają w próbkach populacji, z których uczymy się w każdym folderze.

Mówiąc dokładniej: globalnie przeszukujemy przestrzeń nad parametrami uczenia się, ale w ramach każdej zakładki naprawiamy parametry uczenia się i uczymy się parametrów modelu. Rezultatem powinny być parametry uczenia się, które zapewniają średnio najlepszą wydajność we wszystkich zakładach. Możemy ich następnie użyć do wyszkolenia modelu w całym zestawie danych.

Joel
źródło
Przepraszam, rodzaj parametru, który kwestionowałem, to hiperparametry, jak powiedziałeś.
Kevin
Takich jak parametry c i g w libSVM. Więc powinienem używać tego samego c i g, aby trenować model każdej zakładki, jak metoda (2), o której wspomniałem powyżej, a następnie wybrać najlepszą? Dziękuję Ci bardzo.
Kevin
2
Powyższe (1) i (2) nie były dla mnie jasne, więc nie odniosłem się do nich wprost. Powinieneś przeszukać przestrzeń c & g, która maksymalizuje metrykę zadania, gdy jest uśredniona w poprzek fałd. Więc ustawisz c & g na pewną wartość, uruchom procedurę treningu i testowania na wszystkich fałdach, uśrednij je, zachowaj ten wynik, zmodyfikuj c lub g i powtórz. W końcu znajdziesz najlepsze c & g i możesz wytrenować ostateczny model na wszystkich swoich danych.
Joel,
Dziękuję Ci bardzo. Próbuję podsumować odpowiedzi. Dane podzielono na 10-krotnie: fold-1: (train1, test1) ... fold-10: (train10, test10) Następnie użyj (c1, g1), aby trenować i testować od fold-1 do fold-10, średnia dokładność wszystkich pasów. Wypróbuj inny (c2, g2), aby wykonać ten sam proces ... powtarzaj, dopóki nie znajdę najlepszego (c, g). A średnia najlepsza dokładność (c, g) będzie wynikiem mojej 10-krotnej walidacji krzyżowej.
Kevin,
1
Brzmi poprawnie ...
Joel
16

Myślę, że obecnie zaakceptowana odpowiedź jest niepełna w niefortunny sposób. Nie zgadzam się z tym zdaniem

Celem walidacji krzyżowej jest identyfikacja parametrów uczenia się, które dobrze się uogólniają w próbkach populacji, z których uczymy się w każdym folderze.

Jest to rzeczywiście jedno bardzo ważne zastosowanie krzyżowej weryfikacji, ale nie jedyne. Zwykle chcesz zrobić dwie rzeczy:

  1. Zbuduj najlepszy model, jaki możesz
  2. Uzyskaj dokładne informacje na temat jego skuteczności

Teraz, aby zrealizować cel 1 w zależności od algorytmu, może być konieczne dostrojenie niektórych hiperparametrów, a tak naprawdę często odbywa się to przez krzyżową weryfikację. Ale to jeszcze nie pomaga w celu 2. W tym celu musisz w zasadzie zagnieździć krzyżową walidację, tak jak to:

  • Podziel dane na n-fałdy
  • Dla każdego z nich ponownie podziel dane treningowe na podfoldery
  • Użyj krzyżowej weryfikacji w podfolderach, aby poznać dobre hiperparametry
  • Za pomocą tych hiperparametrów zbuduj model na danych treningowych tej zakładki
  • Przetestuj model na danych testowych
  • Powtórz przy następnym pasowaniu

Aby zbudować dobry model, potrzebujesz tylko wewnętrznej weryfikacji krzyżowej. Nadal będziesz musiał to zrobić, aby uzyskać dobry model. Ale aby uzyskać dobre oszacowanie wydajności modelu, musisz wykonać cały proces budowy modelu w ramach schematu weryfikacji krzyżowej. Obejmuje to również kroki takie jak przypisanie itp.

Erik
źródło
1
Erik, czy możesz podać odniesienie do tego, jak wykonać ten proces?
chao
Cześć @ Erik, więc ogólna kolejność analiz byłaby (1) Znajdź optymalne parametry strojenia z krzyżową weryfikacją, (2) Ponownie trenuj model (z uzyskanymi parametrami strojenia) dla całego zestawu danych szkoleniowych, aby uzyskać parametry modelu, i (3 ) Zobacz ogólne oszacowanie wydajności tej metody przy użyciu zagnieżdżonej weryfikacji krzyżowej? Nie jestem pewien, czy w procesie zerowego CV można wybrać różne hiperparametry, więc zagnieżdżone CV nie bada konkretnie ogólnej wydajności parametrów hiperparametru / modelu, które uzyskaliśmy powyżej?
Michelle,
1
Trochę spóźniłem się do rozmowy, ale chciałbym podkreślić, że ta metoda jest również nazywana „zagnieżdżoną” lub „podwójną weryfikacją krzyżową”, a oto fajne wyjaśnienie Toma Fearn'a i przykład z kodem w scikit- poznaj dokumentację
MD004