O ile widziałem, opinie na ten temat różnią się. Najlepsza praktyka z pewnością podyktowałaby zastosowanie weryfikacji krzyżowej (szczególnie przy porównywaniu RF z innymi algorytmami w tym samym zbiorze danych). Z drugiej strony oryginalne źródło stwierdza, że błąd OOB obliczany podczas szkolenia modelu jest wystarczającym wskaźnikiem wydajności zestawu testowego. Nawet Trevor Hastie w stosunkowo niedawnych rozmowach mówi, że „Losowe lasy zapewniają bezpłatną weryfikację krzyżową”. Intuicyjnie ma to dla mnie sens, jeśli trenuję i próbuję ulepszyć model oparty na RF na jednym zbiorze danych.
Czy ktoś może przedstawić argumenty za i przeciw potrzebie walidacji krzyżowej z losowymi lasami?
random-forest
cross-validation
neuron
źródło
źródło
Odpowiedzi:
Domyślnie losowy las zbiera 2/3 danych do treningu i odpoczynku do testowania regresji oraz prawie 70% danych do treningu i odpoczynku do testowania podczas klasyfikacji. Zasadniczo, ponieważ losuje wybór zmiennych podczas każdego podziału drzewa, nie jest podatny na nadmierne dopasowanie inne modele. Jeśli jednak chcesz używać CV przy użyciu nfolds w sklearn, możesz nadal używać koncepcji trzymania zestawu, np. oob_score (po wyjęciu z torby) = Prawda, która pokazuje wydajność modelu z lub bez CV. Krótko mówiąc, używając oob_score = Prawda z nfoldsami lub bez może sama stwierdzić, czy użycie CV jest dobre dla twoich danych. Ogólnie, jeśli twój cel ma określoną dystrybucję i nie masz przy sobie wielu danych obserwacyjnych, wtedy użycie CV nie da dużo poprawy.
źródło
Jedną kluczową różnicą jest to, że krzyżowa walidacja zapewnia, że wszystkie próbki pojawią się w zestawach szkoleniowych i testowych, dzięki czemu 100% danych zostanie w pewnym momencie wykorzystane do szkolenia i testów.
W zależności od rozmiaru zestawu danych ładowanie, próbkowanie z zastępowaniem, występujące w losowym lesie, nie gwarantuje, że podziały, które zobaczą drzewa, będą zawierać wszystkie wystąpienia. Jeśli masz wystarczająco dużo drzew w lesie, oszacowanie OOB powinno asymptotycznie zbliżyć się do najlepszej wartości oszacowania OOB.
Dokładność obu metod będzie do pewnego stopnia zależna od danych, dlatego rozsądne może być porównanie obu metod z konkretnymi danymi, które masz przed sobą i sprawdzenie, czy szacunki CV i RF OOB dają podobne wartości.
Jeśli nie, to warto zbadać dalsze szacunki prawdziwego poziomu błędu, być może dzięki znacznie wyższym wartościom K w CV.
źródło
Zrobiłem kilka testów na zestawie danych o wielkości 50 000 wierszy
sklearn.RandomForestRegressor
.Otrzymuję znacząco różne wyniki - używam znormalizowanego gini dla metryki - w zależności od tego, czy używam
rf.oob_prediction_
(0,2927), czy KFold CV (0,3258 dla 7-krotności i 0,3236 dla 3-krotności).W związku z tym wydaje się, że masz na myśli „zwłaszcza, jeśli porównanie RF z innymi algorytmami w tym samym zbiorze danych” jest silnym rozważeniem zastosowania ręcznego CV zamiast polegania na prognozie OOB.
źródło