Jak wybrać model predykcyjny po k-krotnej walidacji krzyżowej?


148

Zastanawiam się, jak wybrać model predykcyjny po przeprowadzeniu krzyżowej weryfikacji K-fold.

Może to być niezręcznie sformułowane, więc pozwól mi wyjaśnić bardziej szczegółowo: za każdym razem, gdy uruchamiam K-krotnie weryfikację krzyżową, używam K podzbiorów danych treningowych i kończę na K różnych modelach.

Chciałbym wiedzieć, jak wybrać jeden z modeli K, aby móc komuś go przedstawić i powiedzieć „to najlepszy model, jaki możemy wyprodukować”.

Czy można wybrać jeden z modeli K? A może chodzi o najlepsze praktyki, takie jak wybór modelu, który osiąga średni błąd testu?



Będziesz musiał powtórzyć 5-krotnie CV 100 razy i uśrednić wyniki, aby uzyskać wystarczającą precyzję. Odpowiedź @bogdanovist jest na miejscu. Możesz uzyskać taką samą dokładność oszacowania dokładności z paska startowego przy mniejszej liczbie dopasowań modelu.
Frank Harrell

@Frank Harrell, dlaczego mówisz, że 100 powtórzeń jest koniecznych (zwykle używam 10 powtórzeń przy 10-krotnym), czy jest to ogólna zasada, ponieważ OP nie podał żadnych szczegółów?
BGreene,

2
Dla 10-krotnego cv najlepiej jest wykonać powtórzeń. Potrzeba więcej powtórzeń z 5-krotnością. To są podstawowe zasady. Pojedynczy 10-krotny cv da niestabilną odpowiedź, tj. Powtórz 10 podziałów, a dostaniesz dość innej odpowiedzi, aby się martwić. 50
Frank Harrell,

Prawie dokładny duplikat: stats.stackexchange.com/questions/11602 z wieloma godnymi odpowiedziami. Być może wątki te powinny zostać połączone, ale nie jestem pewien, w jakim kierunku. Obie zaakceptowały bardzo dobre odpowiedzi. Ale ten drugi jest starszy i ma więcej poglądów / pozytywnych opinii, więc warto połączyć go z tym.
ameba

Odpowiedzi:


200

Myślę, że brakuje ci czegoś w swoim rozumieniu celu wzajemnej weryfikacji.

Wyjaśnijmy trochę terminologię, ogólnie mówiąc, mówiąc „model”, odnosimy się do konkretnej metody opisywania, w jaki sposób niektóre dane wejściowe odnoszą się do tego, co próbujemy przewidzieć. Zasadniczo nie odnosimy się do poszczególnych przypadków tej metody jako do różnych modeli. Można więc powiedzieć „mam model regresji liniowej”, ale nie nazwałbyś dwóch różnych zestawów wyuczonych współczynników różnymi modelami. Przynajmniej nie w kontekście wyboru modelu.

Tak więc, kiedy przeprowadzasz walidację krzyżową metodą K-krotnie, testujesz, jak dobrze twój model może zostać przeszkolony przez niektóre dane, a następnie przewidzieć dane, których nie widział. W tym celu korzystamy z weryfikacji krzyżowej, ponieważ jeśli trenujesz przy użyciu wszystkich posiadanych danych, nie masz żadnych do testowania. Możesz to zrobić raz, powiedzmy, używając 80% danych do trenowania i 20% do testowania, ale co jeśli 20%, które akurat wybierałeś do testowania, zawiera mnóstwo punktów, które są szczególnie łatwe (lub szczególnie trudne) przewidzieć? Nie opracujemy najlepszego możliwego oszacowania zdolności modeli do uczenia się i przewidywania.

Chcemy wykorzystać wszystkie dane. Aby więc kontynuować powyższy przykład podziału 80/20, przeprowadzilibyśmy 5-krotną weryfikację krzyżową, trenując model 5 razy na 80% danych i testując na 20%. Zapewniamy, że każdy punkt danych trafi do zestawu testowego 20% dokładnie raz. Dlatego wykorzystaliśmy każdy punkt danych, który musimy przyczynić się do zrozumienia, jak dobrze nasz model wykonuje zadanie uczenia się na podstawie niektórych danych i przewidywania nowych danych.

Ale celem krzyżowej weryfikacji nie jest wymyślenie naszego ostatecznego modelu. Nie używamy tych 5 przykładów naszego wyszkolonego modelu do robienia prawdziwych prognoz. W tym celu chcemy wykorzystać wszystkie dane, aby opracować najlepszy możliwy model. Celem weryfikacji krzyżowej jest sprawdzenie modelu, a nie budowanie modelu.

Powiedzmy, że mamy dwa modele, powiedzmy model regresji liniowej i sieć neuronową. Jak możemy powiedzieć, który model jest lepszy? Możemy wykonać K-krotną walidację krzyżową i zobaczyć, która z nich lepiej sprawdza się w przewidywaniu punktów testowych. Ale kiedy użyjemy walidacji krzyżowej, aby wybrać model o lepszej wydajności, trenujemy ten model (czy to regresja liniowa, czy sieć neuronowa) na wszystkich danych. Nie używamy rzeczywistych instancji modelu, które szkoliliśmy podczas weryfikacji krzyżowej, w naszym ostatecznym modelu predykcyjnym.

Należy zauważyć, że istnieje technika zwana agregacją bootstrap (zwykle skracaną do „workowania”), która w pewien sposób wykorzystuje instancje modelu wytworzone w sposób podobny do weryfikacji krzyżowej w celu zbudowania modelu zespołu, ale jest to technika zaawansowana poza zakresem twojego pytania tutaj.


8
Zgadzam się całkowicie z tym punktem i pomyślałem o wykorzystaniu wszystkich danych. To powiedziawszy, jeśli wyszkolilibyśmy nasz ostateczny model przy użyciu całego zestawu danych, to czy nie doprowadziłoby to do przeregulowania, a tym samym sabotowania przyszłych prognoz?
Berk U.

19
Nie! Nadmierne dopasowanie ma związek ze złożonością modelu, nie ma nic wspólnego z ilością danych wykorzystywanych do szkolenia modelu. Złożoność modelu ma związek z metodą stosowaną przez model, a nie z wartościami przyjmowanymi przez parametry. Na przykład, czy uwzględnić współczynniki x ^ 2, a także współczynniki x w modelu regresji.
Bogdanovist

17
@Bogdanovist: Raczej mówię, że nadmierne dopasowanie wiąże się ze zbyt małą liczbą przypadków treningowych dla zbyt skomplikowanego modelu. Tak więc ma to również związek z liczbą przypadków szkoleniowych. Ale posiadanie większej liczby przypadków szkoleniowych zmniejszy ryzyko nadmiernego dopasowania (dla stałej złożoności modelu).
cbeleites,

3
@Bogdanovist For that we want to use all the data we have to come up with the best model possible.- Czy podczas wyszukiwania siatki za pomocą K-krotnej weryfikacji krzyżowej oznacza to, że użyłbyś najlepszych parametrów znalezionych podczas wyszukiwania siatki i dopasowałeś model do wszystkich danych treningowych, a następnie oceniłeś wydajność uogólnienia za pomocą zestawu testowego?
arun

4
@arun, jeśli użyłeś walidacji krzyżowej k-fold i wybrałeś najlepszy model z najlepszymi parametrami i hiperparametrami, to po dopasowaniu ostatecznego modelu do zestawu treningowego nie musisz ponownie sprawdzać wydajności za pomocą zestaw testowy. Wynika to z tego, że sprawdziłeś już zachowanie modelu z określonymi parametrami na niewidzialnych danych.
Sandeep S. Sandhu,

29

Pozwolę sobie dodać kilka punktów oprócz odpowiedzi Bogdanovist

k

Istnieją pewne założenia w tym procesie.


  • k

  • k
    N.k-1kkk

  • Skończona liczba przypadków oznacza, że ​​pomiar wydajności będzie podlegał losowemu błędowi (wariancji) ze względu na skończoną liczbę przypadków testowych. To źródło wariancji różni się (a zatem dodaje do) wariancji niestabilności modelu.

Różnice w obserwowanej wydajności wynikają z tych dwóch źródeł wariancji.

„Wybór”, o którym myślisz, to wybór zestawu danych: wybranie jednego z zastępczych modeli oznacza wybranie podzbioru próbek treningowych i twierdzenie, że ten podzbiór próbek treningowych prowadzi do modelu nadrzędnego. Chociaż może tak być w rzeczywistości, zazwyczaj „wyższość” jest fałszywa. W każdym razie, ponieważ wybranie „najlepszego” modelu zastępczego jest optymalizacją opartą na danych, należy zweryfikować (zmierzyć wydajność) tego wybranego modelu przy użyciu nowych nieznanych danych. Zestaw testowy w ramach tej krzyżowej weryfikacji nie jest niezależny, ponieważ został użyty do wyboru modelu zastępczego.

Warto przyjrzeć się naszej pracy, chodzi o klasyfikację, w której sytuacja zwykle jest gorsza niż w przypadku regresji. Pokazuje jednak, jak sumują się te źródła wariancji i stronniczości.
Beleites, C. and Neugebauer, U. i Bocklitz, T. and Krafft, C. and Popp, J .: Planowanie wielkości próby dla modeli klasyfikacyjnych. Anal Chim Acta, 2013, 760, 25-33.
DOI: 10.1016 / j.aca.2012.11.007
zaakceptowano manuskrypt na arXiv: 1211.1323


Ty i Bogdanovist nie picking "the best" of the surrogate models is a data-driven optimization, you'd need to validate (measure performance) this picked model with new unknown data. The test set within this cross validation is not independent as it was used to select the surrogate model.But once we have used cross-validation to select the better performing model, we train that model (whether it be the linear regression or the neural network) on all the data.
zgadzacie się,

Zwłaszcza w przypadku małych zestawów danych, w których pominięcie danych z CV jest po prostu niewykonalne, ale ryzyko nadmiernego dopasowania modelu jest również wysokie! Potrzebne są referencje w celu wyjaśnienia tego problemu.
jpcgandre

5
@jpcgandre: Nie widzę żadnego sporu. Bogdanovist wyjaśnia, jak faktycznie obliczyć model wyboru z hiperparametrów wybranych za pomocą krzyżowej walidacji, i dodałem, że po takiej selekcji model musi przejść kolejny (zewnętrzny) niezależny poziom walidacji. Innymi słowy, np. Zagnieżdżony projekt sprawdzania poprawności: wewnętrzna pętla sprawdzania poprawności do wyboru hiperparametrów, zewnętrzna pętla do testowania wybranych modeli (jeśli akurat masz wystarczającą liczbę przypadków, możesz również wybrać niezależny zestaw testowy).
cbeleites,

5
Konfiguracja walidacji wewnętrznej / zewnętrznej służy do walidacji krzyżowej zwanej podwójną lub zagnieżdżoną walidacją krzyżową. Widziałem ją również pod nazwą walidacji krzyżowej ( dx.doi.org/10.1016/j.chemolab.2006.04.021 ). W przypadku niezależnego zestawu testowego odpowiada on podziałowi na trzy zestawy: walidacja / test (optymalizacja) walidacja / test (= walidacja końcowa). Jeśli masz tak mało przypadków, że nie możesz pominąć danych dla CV drugiego poziomu, argumentowałbym, że powinieneś naprawić swoje hiperparametry w inny sposób zamiast próbować zoptymalizować, wybierając jeden z zestawów hiperparametrów.
cbeleites,

@cbeleites Mam pytanie. Następnie, aby uzyskać ostateczne parametry modelu, czy wziąłbyś średnią hiperparametrów z każdego zewnętrznego foldu i ponownie przeszkoliłeś cały zestaw danych, używając tego uśrednionego hiperparametru? A może przeszukiwanie hiperparametrów w zwykłym CV, a następnie potwierdzenie stabilności tej metody przy użyciu powtarzanego zagnieżdżonego CV również będzie działało?
Michelle,

11

Uważam, że ten znakomity artykuł Jak wytrenować model uczenia maszynowego jest bardzo pomocny w usuwaniu wszystkich nieporozumień związanych z wykorzystaniem CV w uczeniu maszynowym.

Zasadniczo używamy CV (np. Podział 80/20, k-fold itp.), Aby oszacować, jak dobrze cała Twoja procedura (w tym inżynieria danych, wybór modelu (tj. Algorytmu) i hiperparametrów itp.) Będzie działać w przyszłości, niewidzialnej dane. Po wybraniu zwycięskiej „procedury” dopasowane modele z CV spełniły swoje zadanie i można je teraz odrzucić. Następnie stosujesz tę samą zwycięską „procedurę” i trenujesz swój ostateczny model z wykorzystaniem całego zestawu danych.


1

To bardzo interesujące pytanie. Aby to wyjaśnić, powinniśmy zrozumieć różnicę modelu i oceny modelu. Używamy pełnego zestawu szkoleniowego do budowy modelu i spodziewamy się, że ten model zostanie ostatecznie wykorzystany.

Ocena krzyżowania K-krotnie zbudowałaby modele K, ale wszystkie zostałyby porzucone. Modele K są właśnie używane do oceny. i właśnie wygenerował miary, które pokazują, jak dobrze ten model pasuje do twoich danych.

Na przykład wybierasz Algo LinearRegression i wykonujesz dwie operacje na tym samym zestawie treningowym: jeden z 10-krotną walidacją krzyżową, a drugi z 20-krotnym. model regresji (lub klasyfikatora) powinien być taki sam, ale współczynnik korelacji i błąd względny kwadratu głównego są różne.

Poniżej są dwa przebiegi dla 10-krotnego i 20-krotnego sprawdzania poprawności krzyżowej za pomocą weka

Pierwsze uruchomienie z 10-krotnością

=== Run information ===
Test mode:    10-fold cross-validation
...
=== Classifier model (full training set) ===


Linear Regression Model  <---- This model is the same

Date = 844769960.1903 * passenger_numbers -711510446549.7296

Time taken to build model: 0 seconds

=== Cross-validation ===  <---- Hereafter produced different metrics
=== Summary ===

Correlation coefficient                  0.9206
Mean absolute error                35151281151.9807
Root mean squared error            42707499176.2097
Relative absolute error                 37.0147 %
Root relative squared error             38.9596 %
Total Number of Instances              144     

2. bieg z 20-krotnością

=== Run information ===
...
Test mode:    20-fold cross-validation

=== Classifier model (full training set) ===


Linear Regression Model   <---- This model is the same

Date = 844769960.1903 * passenger_numbers -711510446549.7296

Time taken to build model: 0 seconds

=== Cross-validation ===  <---- Hereafter produced different metrics
=== Summary ===

Correlation coefficient                  0.9203
Mean absolute error                35093728104.8746
Root mean squared error            42790545071.8199
Relative absolute error                 36.9394 %
Root relative squared error             39.0096 %
Total Number of Instances              144     

0

Nie jestem pewien, czy powyższa dyskusja jest całkowicie poprawna. W ramach weryfikacji krzyżowej możemy podzielić dane na szkolenie i testy dla każdego przebiegu. Używając samych danych treningowych, należy dopasować model i wybrać parametry strojenia dla każdej rozważanej klasy modeli. Na przykład w sieciach neuronowych parametrami dostrajającymi są liczba neuronów i wybór funkcji aktywacji. Aby to zrobić, jedna weryfikacja krzyżowa samych danych treningowych .

Po znalezieniu najlepszego modelu w każdej klasie model najlepszego dopasowania jest oceniany przy użyciu danych testowych. „Zewnętrzną” pętlę weryfikacji krzyżowej można wykorzystać do lepszego oszacowania wydajności danych testowych, a także oszacowania zmienności. Dyskusja może następnie porównać wydajność testu dla różnych klas, powiedzmy Sieci neuronowe vs. SVM. Wybrano jedną klasę modelu ze stałym rozmiarem modelu, a teraz całe dane są wykorzystywane do nauki najlepszego modelu.

Teraz, jeśli w ramach algorytmu uczenia maszynowego chcesz stale wybierać najlepszą klasę modelu (powiedzmy co tydzień), to nawet ten wybór musi zostać oceniony w danych szkoleniowych! Pomiar danych testowych nie może być wykorzystany do oceny wyboru klasy modelu, jeśli jest to opcja dynamiczna.


0

Dlaczego stosujemy walidację krzyżową k-fold?

Walidacja krzyżowa to metoda oceny umiejętności metody na niewidocznych danych. Jak przy użyciu podziału testu na pociąg.

Weryfikacja krzyżowa systematycznie tworzy i ocenia wiele modeli w wielu podzbiorach zestawu danych. To z kolei zapewnia populację miar wydajności .

  • Możemy obliczyć średnią z tych miar, aby zorientować się, jak przeciętnie wykonuje się zabieg.
  • Możemy obliczyć standardowe odchylenie tych miar, aby zorientować się, jak bardzo umiejętność procedury może się różnić w praktyce.

Jest to również pomocne w bardziej szczegółowym porównaniu jednej procedury z drugą, gdy próbujesz wybrać algorytm i procedury przygotowania danych do użycia.

Ponadto informacje te są nieocenione, ponieważ można użyć średniej i spreadu, aby podać przedział ufności dla oczekiwanej wydajności procedury uczenia maszynowego w praktyce.

odniesienie

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.