2011-12-03 21 views
61

chciałbym zmieścić losowy modelu leśnej, ale gdy zgłoszęJak budować losowe lasy w R z brakującymi wartościami (NA)?

library(randomForest) 
cars$speed[1] <- NA # to simulate missing value 
model <- randomForest(speed ~., data=cars) 

otrzymuję następujący błąd

Error in na.fail.default(list(speed = c(NA, 4, 7, 7, 8, 9, 10, 10, 10, : 
    missing values in object 
+0

W obecnym stanie na to pytanie bardzo trudno odpowiedzieć. Czy możesz zaktualizować swoje pytanie kilkoma przykładowymi danymi? – Chase

+1

@ MattO'Brien Zabawne, że jakość pytania jest dyskutowana w oparciu o liczbę wyświetleń, a nie na zalety samego pytania. I odpowiedź, ponieważ @ Joran nie miał problemu z ustaleniem, o co chodzi i pod warunkiem, że wydaje się dobrym rozwiązaniem problemu osoby pytającej. – user7610

Odpowiedz

101

Moja pierwsza reakcja na to pytanie było to, że nie wykazują wiele badań wysiłku, ponieważ "wszyscy" wiedzą, że losowe lasy nie radzą sobie z brakującymi wartościami w predyktorach. Ale po sprawdzeniu ?randomForest muszę przyznać, że może to być o wiele bardziej jednoznaczne.

(Chociaż, Breiman na PDF związana w dokumentacji wynika jasno powiedzieć, że brakujące wartości są po prostu nie obsługiwane w ogóle).

Jedyną oczywistą wskazówką w oficjalnej dokumentacji, że mogłem zobaczyć, że wartość domyślną Parametr na.action to na.fail, który może być zbyt tajemniczy dla nowych użytkowników.

W każdym razie, jeśli predyktorami mają brakujących wartości, masz (zasadniczo) dwa wybory:

  1. użyć innego narzędzia (rpart uchwyty brakujących wartości ładnie.)
  2. przypisać brakujące wartości

Nie jest niespodzianką, że pakiet randomForest ma do tego funkcję, rfImpute. Dokumentacja pod numerem ?rfImpute przebiega przez podstawowy przykład jego użycia.

Jeśli tylko niewielka liczba przypadków zawiera brakujące wartości, można również spróbować ustawić na.action = na.omit, aby po prostu upuścić te przypadki.

I oczywiście, ta odpowiedź jest tylko odrobiną przypuszczenia, że ​​twoim problemem jest po prostu brakujące wartości.

+0

czy wiesz, co oznacza 'WIN ~. 'W pierwszym argumencie na temat OP?Nie jest to z pewnością najlepsze miejsce do zadawania pytań, ale zastanawiałeś się, czy mógłbyś to wiedzieć. Dzięki. –

+4

@ user273158 To jest formuła modelu, jak udokumentowano w '' randomForest' z argumentem 'formuła'. Mówi R, aby używał 'WIN' jako zmiennej odpowiedzi, a' .' jest skrótem, co oznacza "wszystkie inne zmienne w ramce danych". Mówi więc, żeby R użył 'WIN' jako zmiennej odpowiedzi, a wszystkie inne dostępne zmienne są predykatorami. Zobacz '' formułę', aby uzyskać więcej szczegółów. – joran

3

Jeżeli istnieje możliwość, że brakujące wartości mają charakter informacyjny, a następnie można inpute brakujących wartości i dodać dodatkowe zmienne binarne (z new.vars<-is.na(your_dataset)) i sprawdzić, czy zmniejsza błąd, jeśli new.var jest zbyt duży zestaw, aby dodać go do your_dataset następnie można użyć on sam, wybrać zmienne significiant z varImpPlot i dodać je do your_dataset, można także spróbować dodać pojedynczą zmienną your_dataset który zlicza liczbę NA „s new.var <- rowSums(new.vars)

to nie jest off-topick odpowiedzieć, czy brakujące zmienne są rachunkowość informacyjny mogliby bowiem skorygować wzrost błędu modelu ze względu na samą procedurę imputacji.

Brakujące wartości mają charakter informacyjny, a następnie powstają z przyczyn nie losowych, szczególnie często w ustawieniach eksperymentów społecznych.

Powiązane problemy