Как я могу экспортировать модель gbm в R?

Есть ли стандартный (или доступный) способ экспорта модели gbm в R? PMML будет работать, но когда я пытаюсь использовать библиотеку pmml, возможно, неправильно, я получаю сообщение об ошибке:

Например, мой код выглядит примерно так:

  library("gbm")
  library("pmml")

  model <- gbm(
      formula,
      data = my.data,
      distribution = "adaboost",
      n.trees = 450,
      n.minobsinnode = 10,
      interaction.depth = 4, shrinkage=0.05, verbose=TRUE)
  export <- pmml(model)
  # and then export to xml

И ошибка, которую я получаю:

Error in UseMethod("pmml") : no applicable method for 'pmml' applied to an object of class "gbm"

Я также пытался передать набор данных. В любом случае, я мог бы жить с другим форматом, который я могу анализировать программно (я буду оценивать на JVM), но PMML был бы замечательным, если бы был способ заставить это работать.


person Josh Marcus    schedule 11.10.2014    source источник
comment
Оба из двух, которые я нашел на github, выгрузили модель GBM в виде простого текста, а затем выполнили некоторый индивидуальный синтаксический анализ. github.com/infnty/junkyard/blob/master/R/ gbm-scorer.cc gist.github.com/shanebutler/5456942   -  person greeness    schedule 14.10.2014
comment
Вы можете сериализовать структуры данных R с помощью пакета RProtoBuf. См. ответ на свой вопрос в резюме: stats.stackexchange.com/questions/118616/   -  person user1808924    schedule 20.10.2014
comment
Обновление: приведенный выше совет был хорошим. Готового решения я не нашел, поэтому реализовал пользовательский экспорт текста, а затем применил оценку на основе этого экспорта в Scala. Если получится, я открою исходный код и опубликую здесь.   -  person Josh Marcus    schedule 21.10.2014
comment
@JoshMarcus Вы в конечном итоге открыли исходный код результатов? Я очень заинтересован в экспорте мультиклассовых gbms в pmml   -  person Moderat    schedule 26.02.2016
comment
@Moderat Когда у меня было текстовое представление, я создал собственный счетчик gbm в Scala вместо экспорта в PMML. Извиняюсь!   -  person Josh Marcus    schedule 03.03.2016


Ответы (1)


Вы можете выполнить эту работу с помощью r2pmml пакета. В настоящее время он поддерживает типы моделей регрессии (т. е. distribution = "gaussian") и бинарной классификации (т. е. distribution = "adaboost" или distribution = "bernoulli").

Ниже приведен пример кода для Auto MPG набора данных:

library("gbm")
library("r2pmml")

auto = read.csv(file = "AutoNA.csv", header = TRUE)

auto.formula = gbm(mpg ~ ., data = auto, interaction.depth = 3, shrinkage = 0.1, n.trees = 100, response.name = "mpg")
print(auto.formula)

r2pmml(auto.formula, "/tmp/gbm.pmml")
person user1808924    schedule 20.02.2015