Czy istnieje implementacja Random Forest, która działa dobrze z bardzo rzadkimi danymi?

23

Czy istnieje przypadkowa implementacja lasu R, która działa dobrze z bardzo rzadkimi danymi? Mam tysiące lub miliony boolowskich zmiennych wejściowych, ale tylko setki będą PRAWDĄ dla każdego podanego przykładu.

Jestem stosunkowo nowy w R i zauważyłem, że istnieje pakiet „Matrix” do radzenia sobie z rzadkimi danymi, ale wydaje się, że standardowy pakiet „randomForest” nie rozpoznaje tego typu danych. Jeśli ma to znaczenie, dane wejściowe zostaną wygenerowane poza R i zaimportowane.

Jakakolwiek rada? Mogę również zajrzeć do korzystania z Weka, Mahout lub innych pakietów.

Eryn
źródło
O ile wiem, nie ma pakietów R dla rzadkich drzew decyzyjnych. Uważam, że istnieje algorytm dla rzadkich drzew decyzyjnych, które, jeśli zostaną zaimplementowane w R, mogłyby zostać wykorzystane do budowy losowych lasów.
Zach.
2
Oto dobry kandydat: cs.cornell.edu/~nk/fest . Jeśli możesz wyeksportować swoje dane w formacie libsvm, możesz użyć tego programu wiersza polecenia. Chciałbym zobaczyć port R ...
Zach.
Zach - link wydaje się być martwy.
Benoit_Plante
2
@ cmoibenlepro link jest lowrank.net/nikos/fest
seanv507
Link działał dla mnie dobrze
David Marx,

Odpowiedzi:

13

Nie, nie ma implementacji RF dla rzadkich danych w R. Częściowo dlatego, że RF nie pasuje zbyt dobrze do tego rodzaju problemu - tworzenie worków i suboptymalny wybór podziałów może zmarnować większość wglądu modelu w obszary zerowe.

Wypróbuj jakąś metodę jądra lub lepiej zastanów się nad konwersją danych na bardziej bujną reprezentację za pomocą niektórych deskryptorów (lub użyj metody redukcji wymiarów).

użytkownik88
źródło
Odpowiedź Hack-R wskazuje na pakiet xgboost, który doskonale potrafi tworzyć losowe lasy z rzadkimi matrycami.
Edgar
7

Właściwie tak jest .

Jest xgbooststworzony do zwiększania gradientu eXtreme. Jest to obecnie pakiet z wyboru do uruchamiania modeli z rzadkimi macierzami w R dla wielu ludzi, a jak wyjaśnia powyższy link, możesz go użyć w Losowym lesie, dostosowując parametry !

Hack-R
źródło
4

Powinien wystarczyć pakiet R „Ranger”.

https://cran.r-project.org/web/packages/ranger/ranger.pdf

Szybka implementacja losowych lasów, szczególnie odpowiednia dla danych o dużych wymiarach.

W porównaniu z randomForest, ten pakiet jest prawdopodobnie najszybszą implementacją RF, jaką widziałem. Traktuje zmienne jakościowe w natywny sposób.

amitos
źródło
-4

Istnieje blog o nazwie Quick-R, który powinien pomóc ci w nauce podstaw języka R.

R działa z pakietami. Każda paczka może zrobić coś innego. Istnieją pakiety o nazwie „randomForests”, które powinny być dokładnie tym, o co prosisz.

Należy pamiętać, że rzadkie dane będą powodować problemy bez względu na zastosowaną metodę. Według mojej wiedzy jest to bardzo otwarty problem, a eksploracja danych ogólnie jest bardziej sztuką niż nauką. Losowe lasy mają się ogólnie bardzo dobrze, ale nie zawsze są najlepszą metodą. Możesz wypróbować sieć neuronową z wieloma warstwami, które mogą pomóc.

Vincent
źródło
4
Nie, randomForest notorycznie źle radzi sobie z rzadkimi danymi, stąd całe pytanie. parametr classwt nie jest poprawnie zaimplementowany w randomForest. Ręczne oversampling jest jednym podejściem, ale miesza błąd OOB. Nawiasem mówiąc, pakiet nie jest nazywany „randomForests”.
smci,
1
Części tego, które są prawdziwe, nie są odpowiedziami na pytanie.
Sycorax mówi Przywróć Monikę