2014-10-11 80 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")