Czy strojenie hiperparametrów na próbce zestawu danych jest złym pomysłem?

19

Mam zestaw danych zawierający 140000 przykładów i 30 funkcji, dla których uczę kilku klasyfikatorów do klasyfikacji binarnej (SVM, regresja logistyczna, losowy las itp.)

W wielu przypadkach dostrajanie hiperparametrów w całym zbiorze danych przy użyciu wyszukiwania siatkowego lub losowego jest zbyt kosztowne pod względem czasowym.

Zacząłem stosować następującą technikę

  • Podpróbka mojego zestawu danych
  • Użyj uzyskanej frakcji, aby dostroić hiperparametry
  • Za pomocą uzyskanych parametrów wytrenuj model przy użyciu całego zestawu danych

Aby ocenić każdy zestaw parametrów, w drugim etapie użycia I sklearn„S GridSearchCVz CV = 10. Aby ocenić ostateczny model, który tworzę w trzecim etapie używam sklearn„s cross_val_predict. W tym sensie oceniam moje modele, pozostawiając 10% procent danych, trenuję resztę i mierzę dokładność predykcyjną na 10%, iteracyjnie 10 razy, a następnie biorąc średnią wyników.

Niepokoiło mnie to, że dokładność prognoz, którą uzyskuję ze szkolenia na całym zestawie danych, jest bardzo zbliżona do oceny, którą otrzymuję, gdy dostrajam parametry w celu uzyskania najlepszego zestawu parametrów (każdy testowany zestaw parametrów generuje wynik uzyskany ze średniej 10- wyniki walidacji krzyżowej).

W większości przypadków dokładność cross_val_predictmierzona za pomocą wszystkich przykładów szkolenia (cały zestaw danych) jest nieco wyższa niż wynik oceny najlepszych parametrów.

Aby to zilustrować tutaj, jest ocena zestawu parametrów (w mniejszym zestawie danych niż to, co opisałem powyżej, ale efekt jest taki sam)

Best parameters set found on development set:
{'kernel': 'rbf', 'C': 9, 'gamma': 0.1}
Scores for all sets of parameters
0.851 (+/-0.006) for {'kernel': 'rbf', 'C': 3, 'gamma': 0.5}
0.852 (+/-0.006) for {'kernel': 'rbf', 'C': 3, 'gamma': 0.1}
0.829 (+/-0.006) for {'kernel': 'rbf', 'C': 3, 'gamma': 0.001}
0.853 (+/-0.006) for {'kernel': 'rbf', 'C': 9, 'gamma': 0.1}
...

A oto uśrednione wyniki (z cross_val_predict), które otrzymałem ze szkolenia na całym zestawie danych przy użyciu najlepszych parametrów

precision    recall  f1-score   support

      0       0.86      0.85      0.86     15417
      1       0.86      0.87      0.87     16561

avg / total       0.86      0.86      0.86     31978

acc score: 0.863750078179
roc au score: 0.863370490059
[[13147  2270]
 [ 2087 14474]]

Jak widać szkolenie na całym zestawie danych poprawia wyniki. Zweryfikowałem również, że źle dostrojony model (np. Używając wartości domyślnych lub wartości losowych dla Ci gamma) prowadzi do znacznie gorszej dokładności prognoz.

Ogólnie uważam, że dostrajanie hiperparametrów w podzbiorze nie jest idealne, ale może potencjalnie prowadzić do stosunkowo dobrych wyników bez konieczności zbyt długiego oczekiwania. Na przykład przed użyciem tego podejścia użyłem optunitypakietu do strojenia hiperparametru w całym zestawie danych. Ta procedura zajęłaby 3-5 dni i przyniosła wyniki, które albo miały bardzo dobrą precyzję, albo naprawdę dobre przywołanie, ale nie oba, więc chociaż dla każdej klasy albo precyzja, albo przywołanie były naprawdę wysokie (wyższe niż jakakolwiek inna klasyfikatory osiągnęły) pomiar f1 był naprawdę niski. Przeciwnie, zastosowanie późniejszego podejścia prowadzi do kilku godzin treningu i lepszego pomiaru F1.

Moje obawy to:

Czy ograniczam moją dokładność klasyfikacji? Czy unikam używania całej mocy predykcji, jaką może zaoferować mój zestaw danych, dostrajając tylko w podzbiorze? Jeśli dzieje się taka szkoda w wydajności, czy jest w jakiś sposób ograniczona przez jakiś czynnik?

LetsPlayYahtzee
źródło
Wyjaśnij dwie metody, które prowadzą do dokładnej prognozy. Czy dzielisz dane na zestaw szkoleniowy i zestaw sprawdzania poprawności, gdzie zestaw sprawdzania poprawności służy tylko do optymalizacji hiper parametrów, a nie do szkolenia?
Iliyan Bobev
Zobacz moje zaktualizowane pytanie. Mam nadzieję, że teraz jest jaśniej.
LetsPlayYahtzee,

Odpowiedzi:

15

Oprócz odpowiedzi Jima (+1): W przypadku niektórych klasyfikatorów wartości hiperparametrów zależą od liczby przykładów treningowych, na przykład dla liniowej SVM głównym problemem optymalizacji jest:

mjan12)w2)+doja=1ξja

z zastrzeżeniem

yja(xjawb)1-ξja,zanreξja0ja

Należy zauważyć, że problem optymalizacji jest w zasadzie miarą niedopasowanego terminu danych (suma nad ) i terminem regularyzacji, ale zwykły parametr regularyzacji jest umieszczony wraz z terminem niedopasowania danych. Oczywiście im większa liczba wzorów treningowych, tym większe będzie sumowanie i mniejsze powinno być w celu utrzymania tej samej równowagi z wielkością ciężarów. C.ξjado

Niektóre implementacje SVM zmieniają parametry na

mjan12)w2)+doja=1ξja

aby to zrekompensować, ale niektórzy nie. Dodatkową kwestią do rozważenia jest to, czy optymalne hiper-parametry zależą od liczby przykładów treningowych, czy nie.

Zgadzam się z Jimem, że przekroczenie kryterium wyboru modelu może być większym problemem, ale jeśli masz wystarczającą ilość danych nawet w podpróbce, może to nie być poważny problem.

Dikran Torbacz
źródło
11

Czy strojenie hiperparametrów na próbce zestawu danych jest złym pomysłem?

Odp .: Tak, ponieważ ryzykujesz przeregulowanie (hiperparametry) w tym konkretnym zestawie testów wynikającym z wybranego podziału testu na pociąg.

Czy ograniczam moją dokładność klasyfikacji?

Odp .: Tak, ale powszechna mądrość w uczeniu maszynowym: przy optymalnych hiperparametrach, powiedz , zamontuj swoje modele w całym zbiorze danych i ustaw ten model jako ostateczny model dla nowych, niewidzialnych przyszłych przypadków.λ

Czy unikam używania całej mocy predykcji, jaką może zaoferować mój zestaw danych, dostrajając tylko w podzbiorze?

Odp .: patrz poprzednia odpowiedź.

Jeśli dzieje się taka szkoda w wydajności, czy jest w jakiś sposób ograniczona przez jakiś czynnik?

Odp .: idem.

Dokładność mierzę za pomocą 10-krotnego krzyża, ponieważ używam również do oceny parametrów

Odp .: Pamiętaj, że różni się to od tego, o co pytano w tytule. 10-krotne CV iteruje ponad 10 podziałów pociągów testowych, aby uzyskać „obiektywną” (mniej tendencyjną) ocenę uogólnienia (mierzoną w tym przypadku przez dokładność). 10-krotne CV dokładnie odnosi się do problemu, o którym mówię w pierwszej odpowiedzi.

dokładność prognoz, którą uzyskuję ze szkolenia na całym zestawie danych

Odp .: Jest to miara „w próbie”, która może być optymistycznie tendencyjna. Ale nie zapominaj, że masz wiele przypadków i stosunkowo mało funkcji, więc to uprzedzenie optymistyczne może nie stanowić problemu. Samorodek uczenia maszynowego: „najlepszym regulatorem jest więcej danych”.

[kont.], jest zawsze bardzo blisko oceny, którą otrzymuję, gdy dostrajam parametry do najlepszego zestawu parametrów.

Odp .: patrz poprzednia odpowiedź. Spójrz na wykresy hiperparametrów: czy strojenie zmniejsza błąd i o ile? Z tego, co mówisz, tuning niewiele robi.

Możesz to przetestować w następujący sposób. Podejdź do 70% -30% podziału testu pociągu. Porównaj skuteczność predykcyjną:

  1. niestruniony model trenowany na zestawie pociągów,
  2. 10-krotnie strojony model CV trenowany na zestawie pociągów.

Niech oba modele przewidują zestaw testowy. Jeśli wydajność jest bardzo bliska, strojenie niewiele robi. Jeśli wydajność różni się na korzyść tuningowanego modelu, przejdź do podejścia tuningowego.

Jim
źródło
1

Odpowiem za sztuczne sieci neuronowe (ANN).

Hiperparametry ANN mogą określać proces uczenia się (np. Szybkość uczenia się lub rozmiar mini-partii) lub architekturę (np. Liczbę ukrytych jednostek lub warstw).

Strojenie hiperparametrów architektonicznych na podzestawie zestawu treningowego prawdopodobnie nie jest dobrym pomysłem (chyba że zestaw treningowy naprawdę nie ma różnorodności, tj. Zwiększenie rozmiaru zestawu treningowego nie zwiększa wydajności ANN), ponieważ hiperparametry architektoniczne zmieniają pojemność ANN.

Byłbym mniej zaniepokojony dostrajaniem hiperparametrów, które definiują proces uczenia się w podzbiorze twojego zestawu treningowego, ale sądzę, że należy to zweryfikować empirycznie.

Franck Dernoncourt
źródło
0

Możesz użyć algorytmów optymalizacji hiperparametrów, które obsługują oceny wielu wierności, tj. Oceny podzbiorów danych, aby uzyskać przybliżone, ale przydatne oszacowanie optymalnych wartości hiperparametrów dla całego zestawu danych. Takie podejścia zazwyczaj pozwalają zmniejszyć całkowity koszt obliczeniowy potrzebny do uruchomienia optymalizacji hiperparametrów.

IndieSolver
źródło