Jak uniknąć przeuczenia w losowym lesie?

11
  1. Chcę uniknąć przeuczenia w losowym lesie. W związku z tym zamierzam użyć mtry, węzłów i maksymalnych węzłów itp. Czy możesz mi pomóc w wyborze wartości dla tych parametrów? Używam R.

  2. Ponadto, jeśli to możliwe, proszę powiedz mi, jak mogę użyć k-krotnego sprawdzania poprawności dla losowego lasu (w R).

Bieg
źródło

Odpowiedzi:

7

W porównaniu z innymi modelami losowe lasy rzadziej się prześcigają, ale nadal jest to coś, czego chcesz wyraźnie uniknąć. Strojenie parametrów modelu jest zdecydowanie jednym z elementów unikania nadmiernego dopasowania, ale nie tylko. W rzeczywistości powiedziałbym, że twoje cechy treningowe częściej prowadzą do przeuczenia niż parametry modelu, szczególnie w przypadku Losowych Lasów. Myślę więc, że kluczem jest naprawdę niezawodna metoda oceny twojego modelu, aby sprawdzić, czy nie pasuje do ciebie więcej niż cokolwiek innego, co prowadzi nas do twojego drugiego pytania.

Jak wspomniano powyżej, przeprowadzanie weryfikacji krzyżowej pozwoli uniknąć nadmiernego dopasowania. Wybór najlepszego modelu na podstawie wyników CV doprowadzi do modelu, który się nie dopasowuje, co niekoniecznie ma miejsce w przypadku błędu wykreślenia z torby. Najłatwiejszym sposobem uruchomienia CV w R jest caretpakiet. Prosty przykład znajduje się poniżej:

> library(caret)
> 
> data(iris)
> 
> tr <- trainControl(method = "cv", number = 5)
> 
> train(Species ~ .,data=iris,method="rf",trControl= tr)
Random Forest 

150 samples
  4 predictor
  3 classes: 'setosa', 'versicolor', 'virginica' 

No pre-processing
Resampling: Cross-Validated (5 fold) 

Summary of sample sizes: 120, 120, 120, 120, 120 

Resampling results across tuning parameters:

  mtry  Accuracy  Kappa  Accuracy SD  Kappa SD  
  2     0.96      0.94   0.04346135   0.06519202
  3     0.96      0.94   0.04346135   0.06519202
  4     0.96      0.94   0.04346135   0.06519202

Accuracy was used to select the optimal model using  the largest value.
The final value used for the model was mtry = 2. 
David
źródło
Dziękuję bardzo za odpowiedź i porady. Chcesz się tylko dowiedzieć, jak różni się używanie pakietu daszka do wyboru funkcji w porównaniu do wybierania ważnych zmiennych za pomocą algorytmu randomForest?
Arun,
To brzmi jak inne pytanie do opublikowania - różnice są ogromne, biorąc pod uwagę, że uruchamiasz rzeczy takie jak rekursywny wybór funkcji za pomocą dowolnego wybranego algorytmu w kursorze.
David,
@David Co rozumiesz przez „co niekoniecznie ma miejsce w przypadku czegoś takiego jak błąd z torby”? Czy masz na myśli, że oszacowanie na podstawie torby nie jest dobrym sposobem na uniknięcie nadmiernego dopasowania?
Pierre
5

@ xof6 jest poprawny w tym sensie, że im większa głębokość modelu, tym bardziej się on przewyższa, ale chciałem dodać więcej parametrów, które mogą być dla ciebie przydatne. Nie wiem, którego pakietu używasz z R i wcale nie znam R, ale myślę, że muszą tam być zaimplementowane odpowiedniki tych parametrów.

Liczba drzew - im większa liczba, tym mniej prawdopodobne jest, że las się przepełni. Oznacza to, że w miarę jak każde drzewo decyzyjne uczy się jakiegoś aspektu danych treningowych, pojawia się więcej opcji do wyboru. Liczba funkcji - Liczba ta określa, ile funkcji uczy się każde drzewo. Gdy liczba ta rośnie, drzewa stają się coraz bardziej skomplikowane, dlatego uczą się wzorców, których mogą nie być w danych testowych. Znalezienie odpowiedniej wartości zajmie trochę eksperymentów, ale takie jest uczenie maszynowe. Eksperymentuj także z ogólną głębią, jak wspomnieliśmy!

moriara
źródło
4

Oto fajny link na ten temat na stackexchange /stats/111968/random-forest-how-to-handle-overfitting , jednak moje ogólne doświadczenie jest takie, że im głębsza jest model, tym bardziej ma tendencję nałożyć się.

0xF
źródło
Ma to sens w przypadku klasyfikatora z pojedynczym drzewem. Jednak czytałem na tych forach, że losowe lasy są chronione przed nadmiernym dopasowaniem i że drzewa powinny być w pełni wyhodowane (tj. Rozmiar węzła = 1 do klasyfikacji).
Seanosapien
0

Zawsze zmniejszam, mtrydopóki błąd w zestawie danych pociągu nie wzrośnie, następnie zmniejszam rozmiar węzła i głębokość, aż różnica między błędem w pociągu a zestawem danych zatrzymuje się, aby zmniejszyć

Qbik
źródło