【问题标题】:Problem with PMML generation of Random Forest in RR中随机森林的PMML生成问题
【发布时间】:2016-03-02 09:00:30
【问题描述】:

我正在尝试从使用 R 获得的随机森林模型生成 PMML。我正在使用 randomForest 包 4.6-12 和 R 的 PMML 的最新版本。但每次我尝试生成 PMML 时都会出现错误.代码如下:

data_train.rf  <- randomForest( TARGET ~ ., data = train, ntree=100, na.action=na.omit, importance=TRUE)

pmml_file = pmml(data_train.rf)
[1] "Now converting tree  1  to PMML"
Error in append.XMLNode(rfNode, splitNode) : object 'splitNode' not found

我一直无法找到问题的根源,有什么想法吗? 提前致谢,

阿尔瓦罗

【问题讨论】:

  • 我投票决定将此问题作为离题结束,因为它属于 SO 网站。

标签: machine-learning classification r random-forest


【解决方案1】:

我的测试表明,当分类变量的级别数超过 randomForest 函数允许的最大数时,就会出现此问题。森林子列表中定义的拆分不再是分类对象的拆分定义所要求的正整数。减少关卡数量解决了这个问题。

【讨论】:

    【解决方案2】:

    我可能已经找到了这个问题的根源。在我的数据集中,我有大约 500000 个事件和 30 个变量,其中 10 个变量是因子,其中一些变量的填充水平较弱,在某些情况下只有 1 个事件。

    我建立了几个随机森林模型,每次都包括模型的额外变量。我开始将数值变量添加到模型中没有问题以生成 PMML,对于所有级别都大量填充的分类变量也发生了同样的情况,当我尝试包含具有弱填充级别的分类变量时,我得到了错误:

    Error in append.XMLNode(rfNode, splitNode) : object 'splitNode' not found
    

    我想问题的根源是,在某些情况下,当构建一棵树的时候,层级填充较弱,然后没有拆分,因为只有一种情况,尽管randomForest 包知道如何处理这些情况,pmml 包没有。

    【讨论】:

      【解决方案3】:

      pmml 代码假定变量的数据类型是数字、简单逻辑或因子。如果您使用的数据是其他类型的,它将不起作用;以日期时间为例。 如果您的问题是可重现的,这将有所帮助;理想情况下,您将提供您使用的数据集。如果不是,至少是它的一个样本或它的描述……也许可以总结一下。 您还应该考虑直接向包维护者发送电子邮件。

      【讨论】:

      • 嗨,我测试了所有变量,它们都是数字、因子或二进制,所以这不是问题。
      【解决方案4】:

      看起来变量splitNode 尚未在“pmml”包中初始化。初始化路径取决于拆分变量的数据类型(例如数字、逻辑、因子)。请查看“pmml”包内/R/pmml.randomForest.R文件的源代码。

      那么,train data.frame 对象中的列是什么?

      或者,您可以尝试r2pmml package,因为它在处理randomForest 模型类型方面要好得多。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-01-22
        • 1970-01-01
        • 2017-10-23
        • 2019-05-04
        • 2018-01-18
        • 2015-10-19
        • 2020-02-25
        • 1970-01-01
        相关资源
        最近更新 更多