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):
- 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.
- 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ć.
- 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.
- 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.