2014-10-11 63 views
3

有没有一种标准(或可用)的方式在R中导出gbm模型? PMML会的工作,但是当II尝试使用PMML库,可能是错误的,我得到一个错误:如何在R中导出gbm模型?

例如,我的代码看起来与此类似:

library("gbm") 
    library("pmml") 

    model <- gbm(
     formula, 
     data = my.data, 
     distribution = "adaboost", 
     n.trees = 450, 
     n.minobsinnode = 10, 
     interaction.depth = 4, shrinkage=0.05, verbose=TRUE) 
    export <- pmml(model) 
    # and then export to xml 

而我得到的错误是:

Error in UseMethod("pmml") : no applicable method for 'pmml' applied to an object of class "gbm" 

我也试过传入数据集。在任何情况下,我都可以用另一种格式来生活,我可以用编程的方式解析(我将在JVM上得分),但如果有办法做到这一点,PMML会很棒。

+1

两个,我发现在GitHub上倾倒在纯文本的GBM模型,后来做了一些定制解析的两个。 https://github.com/infnty/junkyard/blob/master/R/gbm-scorer.cc https://gist.github.com/shanebutler/5456942 – greeness 2014-10-13 23:05:51

+1

您可以使用'RProtoBuf'软件包对R数据结构进行序列化。在CV上查看你的问题的答案:http://stats.stackexchange.com/questions/118616/generating-pmml-export-of-a-gbm-model-in-r – user1808924 2014-10-20 09:56:04

+0

更新:上述建议很好。我没有找到一个开箱即用的解决方案,所以我实现了一个自定义文本导出,然后基于Scala中的导出实现评分。如果可以的话,我会开放源代码并在此发布。 – 2014-10-21 18:11:43

回答

3

您可以使用r2pmml package来完成这项工作。目前,它支持回归(即distribution = "gaussian")和二元分类(即distribution = "adaboost"distribution = "bernoulli")模型类型。

下面是对Auto MPG dataset一个示例代码:

library("gbm") 
library("r2pmml") 

auto = read.csv(file = "AutoNA.csv", header = TRUE) 

auto.formula = gbm(mpg ~ ., data = auto, interaction.depth = 3, shrinkage = 0.1, n.trees = 100, response.name = "mpg") 
print(auto.formula) 

r2pmml(auto.formula, "/tmp/gbm.pmml")