Implementacja randomForest nie pozwala na pobieranie próbek poza liczbę obserwacji, nawet w przypadku pobierania próbek z wymianą. Dlaczego to?
Działa w porządku:
rf <- randomForest(Species ~ ., iris, sampsize=c(1, 1, 1), replace=TRUE)
rf <- randomForest(Species ~ ., iris, sampsize=3, replace=TRUE)
Co chcę robić:
rf <- randomForest(Species ~ ., iris, sampsize=c(51, 1, 1), replace=TRUE)
Error in randomForest.default(m, y, ...) :
sampsize can not be larger than class frequency
Podobny błąd bez próby warstwowej:
rf <- randomForest(Species ~ ., iris, sampsize=151, replace=TRUE)
Error in randomForest.default(m, y, ...) : sampsize too large
Ponieważ spodziewałem się, że metoda pobierze próbki bootstrapu, gdy otrzymam replace = TRUE w obu przypadkach, nie spodziewałem się tego limitu.
Moim celem jest użycie tego z opcją warstwowego próbkowania, aby pobrać wystarczająco dużą próbkę ze stosunkowo rzadkiej klasy.
Odpowiedzi:
To nie wyjaśnia dlaczego , ale aby obejść ten problem, można zduplikować dane dla rzadkiej klasy w danych treningowych i pobrać warstwową próbkę wyniku.
Dwie wady tego podejścia w porównaniu z „naturalnym” nadpróbkowaniem:
ale pozwoli zbudować las z pożądanymi proporcjami klas.
źródło
Mam dokładnie to samo pytanie i znalazłem to w dzienniku zmian dla randomForest :
Zmiany w 4.1-0:
Ręczne ustawienie replace = TRUE również nie zastępuje tego.
źródło
rf <- randomForest(Species ~ ., iris, sampsize=c(51, 1, 1), strata=iris$Species, replace=TRUE)