2012-03-17 11 views
8

Mam udany losowy model lasu i chcę go zintegrować z innym oprogramowaniem, Wiem, że mogę korzystać z niektórych bibliotek (takich jak fastRF w Javie o DecisionForest dla ALGLIB dla innych języków), ale jak mogę użyć "modelu" przeszkolonego w R? Muszę go ponownie przeszkolić w nowym języku?Jak mogę wyodrębnić RandomForest z R do wykorzystania w produkcji?

Inny pogląd jest wyodrębnić go jakoś, ale dont't wiedzieć, jak to zrobić ...

Każda pomoc będzie mile widziane

góry dzięki

Odpowiedz

13

Zapoznaj się z pakietem pmml, który generuje PMML dla różnych modeli, w tym RandomForest. Podstawowy przykład:

#?randomForest 
library(randomForest) 
library(pmml) 
set.seed(131) 
ozone.rf <- randomForest(Ozone ~ ., data=airquality, mtry=3,importance=TRUE, na.action=na.omit) 
print(ozone.rf) 
ozone.rf.pmml <- pmml(ozone.rf) 
+0

Dzięki za odpowiedź @Paolo, ale po tym jak mam plik PMML, Jak mogę go wykonać? – nanounanue

+1

Jeśli odpowiedź była dla Ciebie przydatna, zostanie doceniona upominek! ;-) Jeśli chodzi o twoje pytanie, musisz sprawdzić, czy możesz zaimportować model pmml w języku, którego użyjesz do wdrożenia. – Paolo

+0

Masz rację! post był przydatny, pozwól mi głosować. Czy możesz polecić mi jakiś język lub oprogramowanie obsługujące PMML? Jeszcze raz dziękuję za pomoc. – nanounanue

2

lasy losowe obiekt ma wszystko informacje o każdym drzewie w obiekcie. Każde drzewo nie jest szczególnie skomplikowane, chociaż może być mylące.

iris.rf <- randomForest(Species ~ ., data=iris, importance=TRUE, 
         proximity=TRUE) 
> names(iris.rf$forest) 
    [1] "ndbigtree" "nodestatus" "bestvar" "treemap" "nodepred" 
    [6] "xbestsplit" "pid"  "cutoff"  "ncat"  "maxcat"  
    [11] "nrnodes" "ntree"  "nclass"  "xlevels" 

Aby dowiedzieć się, jak korzystać z lasu poza R, trzeba spojrzeć na kod źródłowy. Pobierz pakiet źródłowy randomForest, rozpakuj tar.gz i zajrzyj do katalogu src. W rf.c zobaczysz funkcję classForest (a dla regresji spójrz na regForest w regrf.c). Spójrz na funkcję R predict.randomForest, aby zobaczyć, jak jest wywoływana. Być może będziesz musiał użyć getAnywhere ("predict.randomForest"), aby zobaczyć go wewnątrz R.

Będzie to wymagało sporego rozdrobnienia, aby wyodrębnić informacje R i przewidzieć w innym pakiecie, więc będziesz musiał pomyśleć ostrożnie, zanim faktycznie to zrobiłeś. Ponowne umieszczenie w oprogramowaniu, z którego zamierzasz korzystać, może być prostsze.

+0

Dziękuję za odpowiedź @rjad, więc jeśli dobrze rozumiem, Twoja rekomendacja polega na przekwalifikowaniu losowego lasu w nowym oprogramowaniu, prawda? – nanounanue

+0

Myślę, że jeśli będzie to proste, będzie to najprostsze podejście. To może pomóc, jeśli podasz jakieś szczegóły dotyczące języka, w którym chcesz pracować. Zobacz także propozycję Paola poniżej. – rjad

+0

Próbuję go zaimplementować (najlepiej) w Javie, ale w C++ też może działać. Jeszcze raz dziękuję :) – nanounanue

Powiązane problemy