Как я могу извлечь RandomForest из R для использования в производстве? - PullRequest
9 голосов
/ 18 марта 2012

У меня есть успешная модель randomforest, и я хочу интегрировать ее в другое программное обеспечение, я знаю, что могу использовать некоторые библиотеки (например, fastRF в Java или DecisionForest для ALGLIB для других языков), но как я могу использовать обученную «модель» в R? Я должен переучить его на новом языке?

Другое представление - это как-то извлечь его, но я не знаю, как это сделать ...

Любая помощь будет оценена

Заранее спасибо

Ответы [ 2 ]

13 голосов
/ 19 марта 2012

Посмотрите на пакет pmml , который генерирует PMML для различных моделей, включая RandomForest. Базовый пример:

#?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)
2 голосов
/ 18 марта 2012

Объект randomForest содержит всю информацию о каждом дереве в объекте. Каждое дерево не особенно сложно, хотя это может сбивать с толку.

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"   

Чтобы понять, как использовать лес за пределами R, вам нужно взглянуть на исходный код. Загрузите исходный пакет randomForest, распакуйте tar.gz и посмотрите в каталог src. В rf.c вы увидите функцию classForest (а для регрессии посмотрите на regForest в regrf.c). Посмотрите на функцию предиката R.gnndomForest, чтобы увидеть, как она вызывается. Возможно, вам придется использовать getAnywhere ("Foregnet.randomForest"), чтобы увидеть его в R.

Для извлечения информации о R и прогнозирования в другом пакете потребуется немало дураков, так что вам придется тщательно подумать, прежде чем вы действительно это сделаете. Установка программного обеспечения, которое вы намереваетесь использовать, может быть более простой.

...