在C ++中部署GBM模型|让Predict.gbm在R之外工作

时间:2015-02-26 21:10:01

标签: c# c++ r pmml gbm

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

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

我是R的新手并且花了很多时间试图弄清楚这一点无济于事并且会欣赏任何线索

提前致谢

1 个答案:

答案 0 :(得分:0)

在这里,如果您有基于C ++的PMML评估引擎,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库是如何做到的。