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

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

我已将模型导出为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库如何做到这一点。