Jak właściwie zastosować walidację krzyżową w kontekście wyboru parametrów uczenia się dla maszyn wektorów wsparcia?

9

Wspaniały pakiet libsvm zawiera interfejs Pythona i plik „easy.py”, który automatycznie wyszukuje parametry uczenia się (koszt i gamma), które maksymalizują dokładność klasyfikatora. W obrębie danego zestawu parametrów uczenia się kandydata dokładność jest operacjonalizowana przez krzyżową weryfikację, ale wydaje mi się, że podważa to cel krzyżowej weryfikacji. Oznacza to, że o ile same parametry uczenia się mogą zostać wybrane w sposób, który może powodować nadmierne dopasowanie danych, uważam, że bardziej odpowiednim podejściem byłoby zastosowanie weryfikacji krzyżowej na poziomie samego wyszukiwania: przeprowadź wyszukiwanie na zestawie danych treningowych, a następnie oceń najwyższą dokładność SVM wynikającą z ostatecznie wybranych parametrów uczenia się, oceniając w oddzielnym zestawie danych testowych. A może coś tu brakuje?

Mike Lawrence
źródło

Odpowiedzi:

10

Jeśli nauczysz się hiperparametrów w pełnych danych treningowych, a następnie przeprowadzisz walidację krzyżową, otrzymasz optymistycznie tendencyjne oszacowanie wydajności, ponieważ dane testowe w każdym folderze będą już użyte do ustawienia hiperparametrów, więc hiper- wybrane parametry są częściowo wybrane, ponieważ pasują do danych w zestawie testowym. Wprowadzone w ten sposób optymistyczne nastawienie może być nieoczekiwanie duże. Patrz Cawley i Talbot, „O nadmiernym dopasowywaniu w wyborze modelu i późniejszym odchyleniu wyboru w ocenie wydajności”, JMLR 11 (lipiec): 2079-2107, 2010.(W szczególności sekcja 5.3). Najlepszym rozwiązaniem jest zagnieżdżona walidacja krzyżowa. Podstawową ideą jest sprawdzenie krzyżowe całej metody użytej do wygenerowania modelu, dlatego traktuj wybór modelu (wybierając hiperparametry) jako po prostu część procedury dopasowywania modelu (gdzie określane są parametry) i nie możesz iść za bardzo źle.

Jeśli użyjesz walidacji krzyżowej w zestawie treningowym, aby określić hiperparametry, a następnie oceń wydajność modelu wytrenowanego przy użyciu tych parametrów w całym zestawie treningowym, używając oddzielnego zestawu testowego, to również jest w porządku (pod warunkiem, że masz wystarczającą ilość danych do niezawodnego dopasowania modelu i oszacowania wydajności przy użyciu rozłącznych partycji).

Dikran Torbacz
źródło
Niezłe referencje!
Andrew
W drugim akapicie, jak byś uwzględnił również wybór funkcji? Czy dobrze byłoby: i) przeprowadzić optymalizację hiperparametrów, jak wspomniano powyżej (uzyskać optymalne hiperparametry) ii) uruchomić wybór funkcji w innej rundzie weryfikacji krzyżowej, aby uzyskać zestaw najważniejszych predyktorów (wybór funkcji jest przeprowadzany na danych szkoleniowych podzielonych na zestaw szkolenia wstępnego i walidacji przy użyciu dowolnej metody ponownego próbkowania zastosowanej w optymalizacji hiperparametrów). iii) wytrenuj model z najwyższym parametrem hiper i predyktorem ustawionym na pełne dane treningowe. Test na oddzielnym zestawie testowym.
sma
być trochę bardziej zrozumiałym na ii) wybór funkcji biegu w kolejnej rundzie weryfikacji krzyżowej, aby uzyskać zestaw najlepszych predyktorów (dane treningowe są podzielone na szkolenie wstępne i zestaw walidacji za pomocą metody ponownego próbkowania stosowanej w optymalizacji hiperparametrów. następnie wybór funkcji jest uruchamiany dane dotyczące szkolenia wstępnego).
sma
Alternatywnie, czy można dokonać wyboru funkcji najpierw poprzez weryfikację krzyżową, aby uzyskać najwyższy zestaw funkcji, a następnie strojenie hiperparametrowe dowolnych interesujących modeli przy użyciu najwyższego zestawu funkcji (jak wyżej w walidacji krzyżowej)? Następnie trenować modele z ich optymalnymi hiperparametrami na pełnych danych treningowych tylko z już ustalonym zestawem najlepszych funkcji i testować na osobnym zestawie testowym?
sma
0

Nie sądzę, by sprawdzanie krzyżowe było niewłaściwie stosowane w przypadku LIBSVM, ponieważ odbywa się to na poziomie danych testowych. Wszystko, co robi, to k-krotna weryfikacja krzyżowa i wyszukiwanie najlepszego parametru dla jądra RBF. Daj mi znać, że się nie zgadzam.

użytkownik20350
źródło
Wybór hiper-parametrów nie powinien w żaden sposób obejmować danych testowych, ponieważ doprowadzi to do optymistycznie tendencyjnego oszacowania wydajności. Zasadniczo wybór hiperparametrów powinien być traktowany jako integralna część dopasowania SVM, więc procedura testowania musi również przetestować błąd ze względu na wybór hiperparametrów, patrz mój artykuł, do którego odwołuję się w odpowiedzi na pytanie (jest to otwarty dostęp).
Dikran Torbacz