Krzyżowa walidacja i dostrajanie parametrów

18

Czy ktoś może mi powiedzieć, co dokładnie daje wynik analizy krzyżowej? Czy to tylko średnia dokładność, czy daje jakiś model z dostrojonymi parametrami?

Ponieważ słyszałem gdzieś, że do dostrajania parametrów używana jest walidacja krzyżowa.

Sana Sudheer
źródło

Odpowiedzi:

26

Walidacja krzyżowa daje miarę dokładności poza próbą poprzez uśrednienie kilku losowych partycji danych na próbki szkoleniowe i testowe. Jest często używany do strojenia parametrów poprzez przeprowadzanie walidacji krzyżowej dla kilku (lub wielu) możliwych wartości parametru i wybranie wartości parametru, która daje najniższy średni błąd walidacji krzyżowej.

Tak więc sam proces nie daje oszacowań modelu lub parametru, ale możesz go użyć, aby pomóc wybrać między alternatywami.

Jonathan Christensen
źródło
12

Aby dodać do odpowiedzi Jonathana.

Jeśli jednak użyjesz weryfikacji krzyżowej do dostrajania parametrów, próbki zewnętrzne faktycznie staną się częścią twojego modelu. Potrzebujesz więc kolejnej niezależnej próbki, aby poprawnie zmierzyć wydajność końcowego modelu.

Wykorzystana do pomiaru wydajności modelu, walidacja krzyżowa może mierzyć coś więcej niż tylko średnią dokładność:
Drugą rzeczą, którą można zmierzyć za pomocą walidacji krzyżowej, jest stabilność modelu w odniesieniu do zmieniających się danych treningowych: walidacja krzyżowa tworzy wiele modeli „zastępczych”, które są trenowane z nieco różniące się zestawy treningowe. Jeśli modele są stabilne, wszystkie te modele zastępcze są równoważne, jeśli trening jest niestabilny, modele zastępcze bardzo się różnią. Można określić ilościowo to „bardzo różne”, np. Jako wariancję prognoz różnych modeli zastępczych dla tej samej próbki (w powtarzanej / powtarzanej walidacji krzyżowej) lub np. Jako wariancję parametrów modeli zastępczych.

cbeleites obsługuje Monikę
źródło
4

Aby dodać do poprzednich odpowiedzi, zaczniemy od początku:

Istnieje kilka sposobów dopasowania modeli do danych treningowych, niektóre są oczywiste, a inne mniej. Po pierwsze, najważniejszym jest nadmierne dopasowanie parametrów treningowych (wag) do danych (parametry dopasowania krzywej w regresji logistycznej, wagi sieci w sieci neuronowej itp.). Następnie modelowałbyś szum w danych - jeśli się dopasujesz, nie tylko uchwycisz podstawową funkcję generowania, ale także losowość ze względu na wielkość próbki i fakt, że próbka nie jest idealną reprezentacją populacji. Nadmierne dopasowanie można w pewnym stopniu złagodzić poprzez ukaranie niektórych atrybutów (ogólnie złożoności) modelu. Można tego dokonać, przerywając trening, gdy wydajność próbki pociągu nie poprawia się już znacząco, usuwając niektóre neurony z sieci neuronowej (zwanej zanikiem),https://ieeexplore.ieee.org/document/614177/ ) itp.). Jednak te strategie regularyzacji są sparametryzowane (kiedy przestajesz ?, ile neuronów usunąć? Itd.). Ponadto większość modeli uczenia maszynowego ma wiele hiperparametrów, które należy ustawić przed rozpoczęciem szkolenia. I te hiper-parametry są dostrajane w fazie dostrajania parametrów.

To prowadzi nas do drugiego, bardziej subtelnego typu przeszycia: hiperparametru. W celu znalezienia „najlepszych” hiper-parametrów można zastosować walidację krzyżową, wielokrotnie trenując model od zera na fałdach k-1 próbki i testując na ostatnim fałdowaniu.

Jak to się dokładnie robi? W zależności od strategii wyszukiwania (podanej przez tenshi), ustawiasz hiperparametry modelu i trenujesz swój model k razy, za każdym razem przy użyciu różnych fold fold. „Pamiętasz” średnią wydajność modelu we wszystkich fałdach testowych i powtarzasz całą procedurę dla innego zestawu hiperparametrów. Następnie wybierasz zestaw hiperparametrów, który odpowiada najlepszej wydajności podczas weryfikacji krzyżowej. Jak widać, koszt obliczeń tej procedury w dużej mierze zależy od liczby zestawów hiperparametrów, które należy wziąć pod uwagę. Dlatego opracowano kilka strategii wyboru tego zestawu (tutaj uogólnię to, co powiedział tenshi):

  1. Wyszukiwanie w siatce: dla każdego hiper-parametru wyliczasz skończoną liczbę możliwych wartości. Następnie procedura jest wyczerpująco wykonywana dla wszystkich kombinacji wyliczonych hiper-parametrów. Oczywiście, jeśli masz ciągłe hiper-parametry, nie możesz wypróbować ich wszystkich.
  2. Randomizowane wyszukiwanie siatki: podobne do normalnego wyszukiwania siatki, ale tym razem nie wypróbujesz wszystkich kombinacji wyczerpująco, ale zamiast tego próbkujesz określoną liczbę razy dla wszystkich możliwych wartości. Zauważ, że tutaj można nie tylko wyliczyć możliwe wartości hiperparametru, ale można również podać rozkład, z którego można próbkować.
  3. BayesianSearch - kombinacja wartości hiperparametrów jest wybierana w celu maksymalizacji oczekiwanej poprawy wyniku. Więcej informacji: http://papers.nips.cc/paper/4522-practical-bayesian-optimization-of-machine-learning-alameterms.pdf . I biblioteka, która zajmuje się tylko tym: https://github.com/hyperopt/hyperopt . Ponieważ nie jest tak łatwo łączyć się ze sklearn, jak to zaleca tenshi, używaj go tylko wtedy, gdy nie pracujesz ze sklearn.
  4. Inne sposoby wyszukiwania z przewodnikiem w przestrzeni hiperparametrów. Z mojego doświadczenia wynika, że ​​są one rzadko używane, więc nie będę ich tutaj omawiać.

Jednak to nie koniec historii, ponieważ hiper-parametry mogą (i będą) również przewyższać dane. W większości przypadków możesz po prostu z tym żyć, ale jeśli chcesz zmaksymalizować moc generalizacyjną swojego modelu, możesz spróbować również uregulować hiper-parametry. Po pierwsze, można nieco lepiej ocenić wydajność danych pozapróbowych za pomocą zagnieżdżonego wyszukiwania siatki (szczegóły: http://scikit-learn.org/stable/auto_examples/model_selection/plot_nested_cross_validation_iris.html , dyskusja: Zagnieżdżona weryfikacja krzyżowa do wyboru modelu) lub po prostu użyj zestawu sprawdzania poprawności, który nie jest używany do strojenia hiperparametrów. Jeśli chodzi o regularyzację w przestrzeni hiperparametrów, jest to mniej więcej pytanie otwarte. Niektóre pomysły obejmują wybór nie najlepszego zestawu wartości hiperparametrów, ale coś bliższego środkowi; rozumowanie jest następujące: najlepsze wartości hiperparametrów najprawdopodobniej przewyższają dane tylko dlatego, że działają lepiej niż inne dane pociągu, złe parametry są po prostu złe, ale te w środku mogą prawdopodobnie osiągnąć lepszą uogólnienie niż najlepsze . Andrew Ng napisał o tym artykuł. Inną opcją jest ograniczenie przestrzeni wyszukiwania (regulujesz, wprowadzając tutaj silne odchylenie - wartości spoza przestrzeni wyszukiwania nigdy nie zostaną wybrane w sposób oczywisty).

Uwaga dodatkowa: używanie dokładności jako miernika wydajności jest w większości przypadków bardzo złym pomysłem, należy spojrzeć na wyniki f1 i f_beta - te wskaźniki w większości przypadków lepiej odzwierciedlą to, co faktycznie próbujesz zoptymalizować w przypadku problemów z klasyfikacją binarną.

Podsumowując: walidacja krzyżowa sama w sobie służy do oceny wydajności modelu na danych pozapróbowych, ale może również służyć do dostrajania hiperparametrów w połączeniu z jedną ze strategii wyszukiwania w przestrzeni hiperparametrów. Znalezienie dobrych hiperparametrów pozwala uniknąć lub przynajmniej ograniczyć nadmierne dopasowanie, ale należy pamiętać, że hiperparametry mogą również przewyższać dane.

Wojtek
źródło
2

Jeśli pochodzisz ze scikit-learn, ta odpowiedź może być pomocna.

K-krotna walidacja krzyżowa służy do podziału danych na kpartycje, estymator jest następnie trenowany na k-1partycjach, a następnie testowany na kthpartycji. W ten sposób, wybierając partycję, która ma być kthpartycją, istnieją kmożliwości. Dlatego dostajeszk wyniki wszystkich kmożliwości swojego estymatora.

są to drogie obliczeniowo metody, ale jeśli zamierzasz wypróbować różne estymatory, możesz wypróbować te trzy metody dostrajania hiperparametrów wraz z CV:

ja. GridSearchCV - wyczerpująca lista wszystkich możliwych P i C dla hiperparametrów dla wszystkich estymatorów. Na koniec podaje najlepsze hiperparametry, wykorzystując średnią tego konkretnego estymatora CV.

ii. RandomizedSearchCV - nie wykonuje wszystkich P i C hiperparametrów, ale przy podejściu losowym daje najbliższy możliwy dokładny estymator, oszczędzając więcej na obliczeniach.

iii. BayesSearchCV - Nie jest częścią, scikit-learnale robi optymalizację Bayesa pod kątem losowego wyszukiwania i dopasowywania wyników.

tl: dr : CV służy tylko do uniknięcia dużego błędu i dużej zmienności estymatora ze względu na przekazywane dane. Mam nadzieję, że to było pomocne.

tenshi
źródło