Zabawy z Boston Housing zestawem danych i RandomForestRegressor
(W / domyślne parametry) w scikit-learn, zauważyłem coś dziwnego: średni wynik walidacji krzyżowej spadła jak zwiększona ilość fałd poza 10. Moja strategia cross-walidacja była następująca:
cv_met = ShuffleSplit(n_splits=k, test_size=1/k)
scores = cross_val_score(est, X, y, cv=cv_met)
... gdzie num_cvs
było zróżnicowane. Ustawić test_size
na 1/num_cvs
lustro pociągu / test zachowania rozmiar podzielonego K-krotnie CV. Zasadniczo chciałem coś w rodzaju k-fold CV, ale potrzebowałem także losowości (stąd ShuffleSplit).
Próbę tę powtórzono kilka razy, a następnie wykreślono średnie wyniki i odchylenia standardowe.
(Zwróć uwagę, że rozmiar k
jest wskazywany przez obszar koła; odchylenie standardowe jest na osi Y).
Konsekwentnie, zwiększenie k
(z 2 do 44) dałoby krótki wzrost wyniku, a następnie stały spadek w k
miarę dalszego zwiększania (ponad ~ 10-krotnie)! Jeśli już, spodziewam się, że więcej danych treningowych doprowadzi do niewielkiego wzrostu wyników!
Aktualizacja
Zmiana kryteriów punktacji na błąd bezwzględny skutkuje zachowaniem, którego się spodziewałam: punktacja poprawia się wraz ze wzrostem liczby krotności w K-krotnie CV, a nie zbliża się do 0 (jak w przypadku domyślnego „ r2 ”). Pozostaje pytanie, dlaczego domyślna metryka punktacji skutkuje słabą wydajnością zarówno dla średniej, jak i metryki STD dla rosnącej liczby krotności.