有没有一种方法可以将gbm模型导出到C ++。具体来说,如何为在R之外运行的外部调用预报.gbm函数以对新数据集进行评分。

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

我是R的新手,并且花了很多时间试图解决这个问题,但仍无济于事,将不胜感激

提前致谢

最佳答案

在这里,只有当您有可用的基于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库是如何做到的。

关于c# - 在C++中部署GBM模型|使Predict.gbm在R之外工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28752797/

10-12 17:33