【问题标题】:How can I export a gbm model in R?如何在 R 中导出 gbm 模型?
【发布时间】:2014-12-06 07:07:51
【问题描述】:

是否有标准(或可用)方法在 R 中导出 gbm 模型? PMML 可以工作,但是当我尝试使用 pmml 库时,可能会出现错误:

例如,我的代码如下所示:

  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 会很棒。

【问题讨论】:

  • 我在 github 上找到的两个都以纯文本形式转储了 GBM 模型,然后进行了一些自定义解析。 github.com/infnty/junkyard/blob/master/R/gbm-scorer.ccgist.github.com/shanebutler/5456942
  • 您可以使用 RProtoBuf 包序列化 R 数据结构。在 CV 中查看您的问题的答案:stats.stackexchange.com/questions/118616/…
  • 更新:上面的建议很好。我没有找到开箱即用的解决方案,所以我实现了一个自定义文本导出,然后在 Scala 中实现了基于该导出的评分。如果可以,我会将结果开源并在此处发布。
  • @JoshMarcus 你最终开源了结果吗?我对将多类 gbms 导出到 pmml 很感兴趣
  • @Moderat 获得文本表示后,我在 Scala 中构建了一个自定义 gbm 记分器,而不是导出到 PMML。对不起!

标签: r machine-learning pmml gbm


【解决方案1】:

您可以使用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")

【讨论】:

    猜你喜欢
    • 2017-05-07
    • 2016-07-16
    • 2016-01-22
    • 2018-09-24
    • 2015-10-07
    • 2020-05-27
    • 2015-05-05
    • 2015-04-29
    • 2014-10-15
    相关资源
    最近更新 更多