1

有没有办法将 gbm 模型导出到 C++。具体来说,我如何调用 predict.gbm 函数在 R 之外运行以便对新数据集进行评分。

我已将模型导出为 PMML 文件,但我不确定新数据集将如何根据 PMML 得分。

我是 R 新手,花了很多时间试图解决这个问题,但无济于事,我将不胜感激任何线索

提前致谢

4

1 回答 1

0

在这里,PMML 仅在您有基于 C++ 的 PMML 评估引擎可用时才对您有所帮助(或者,您可以使用 C++ 来调用基于 Java 的 PMML 评估引擎,例如JPMML-Evaluator库)。

您可以将 GBM 模型转换为 C++ 源代码,然后稍后“本地”运行它。翻译并不困难,因为 GBM 成员决策树可以编码为简单的 if-else 语句。您可以在JPMML-Converter库(类)中看到它是如何实现的,org.jpmml.converter.GBMConverter并从那里获取它。

翻译成 PMML:

Node node = new Node()
  .withPredicate($predicate)
  .withScore($score);

翻译成 C/C++/C#:

if($predicate){
   return $score;
}

您可以使用 ProtoBuf 数据格式(由 RProtoBuf 包实现)将 GBM 数据结构从 R 导出到 C++ 转换应用程序。同样,请查看 JPMML-Converter 库是如何做到的。

于 2015-02-27T08:31:02.863 回答