Развертывание модели GBM в C++ | Настройте Predict.gbm для работы за пределами R

Есть ли способ экспортировать модель gbm в C++. В частности, как мне вызвать функцию predict.gbm для запуска вне R, чтобы оценивать новые наборы данных.

Я экспортировал модель в виде файла PMML, но я не уверен, как новые наборы данных будут оцениваться на основе PMML.

Я новичок в R и потратил много часов, пытаясь понять это, но безрезультатно, и буду признателен за любые наводки.

заранее спасибо


person nnennaDC    schedule 26.02.2015    source источник
comment
Привет, ты когда-нибудь находил исполняющий движок, написанный на C/C++?   -  person Jem Tucker    schedule 03.03.2017


Ответы (1)


Здесь PMML поможет вам только в том случае, если у вас есть механизм оценки PMML на основе C++ (в качестве альтернативы вы можете использовать C++ для вызова механизма оценки PMML на основе Java, такого как библиотека JPMML-Evaluator).

Вы можете перевести модель GBM в исходный код C++ и запустить ее позже. Преобразование несложно, потому что деревья решений членов GBM можно закодировать как простые операторы if-else. Вы можете посмотреть, как это реализовано в библиотеке JPMML-Converter (класс org.jpmml.converter.GBMConverter), и взять оттуда .

Перевод в PMML:

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

Перевод на С/С++/С#:

if($predicate){
   return $score;
}

Вы можете экспортировать структуру данных GBM из приложения преобразования R в C++, используя формат данных ProtoBuf (реализованный пакетом RProtoBuf). Опять же, посмотрите, как это делает библиотека JPMML-Converter.

person user1808924    schedule 27.02.2015