结合来自 Amelia 估算数据的多个随机森林模型

Posted

技术标签:

【中文标题】结合来自 Amelia 估算数据的多个随机森林模型【英文标题】:Combining Multiple Random Forest Models from Amelia Imputed Data 【发布时间】:2015-07-13 05:48:09 【问题描述】:

我刚刚使用 Amelia 包创建了 40 个估算数据集,它们存储在 a.out 中。

然后我使用 lapply 函数在数据集上创建随机森林模型:

rf.amelia.out = lapply(a.out$imputations, function(i) randomForest(y + x1+x2, data = i) )

现在我想结合这些模型对一堆 a.test.out 进行预测,这是一个 amelia 估算数据测试数据的列表。

我不知道如何组合这些随机森林模型。我试过像combine(rf.amelia.out) 这样的随机森林组合功能,但没有奏效。问题是rf.amelia.out 不是模型对象,但rf.amelia.out[1] 也不是。

我也试过用zelig自动组合多个模型:

rf.z.out = zelig(y~x1+x2, data = a.out, model = "rf")

但我不认为 zelig 支持随机森林模型。

如何访问和组合多个随机森林模型,以便做出一个预测?

【问题讨论】:

你能让这个工作吗? 嗨,迈克,感谢您在下面的回答。它工作得很好。抱歉回复晚了 - 第一次在 *** 上。 @user1888582 当答案有效时,您应该通过单击旁边的复选标记“接受”它。 【参考方案1】:

由于rf.amelia.out 已经是一个列表,randomForest 中的combine 函数在尝试再次将其转换为列表时会丢失其方法。我推荐以下两种修复方法之一:

    更改combine函数,然后使用修改后的版本:

    body(combine)[[4]] <- substitute(rflist <- (...))

    rf.all <- combine(rf.amelia.out)

    或使用:

    combine(rf.amelia.out[[1]].rf.amelia.out[[2]],...)

我认为第一种方法更容易(而且手动操作要少得多)。

【讨论】:

以上是关于结合来自 Amelia 估算数据的多个随机森林模型的主要内容,如果未能解决你的问题,请参考以下文章

对于大量缺失,插补与对随机森林可用子集进行训练相比有何优势?

分类算法 - 随机森林

在 scikit-learn 中平均多个随机森林模型

R中的Amelia归因排除未收到项目的参与者

随机森林原理与Sklearn参数详解

MATLAB-随机森林实现数据回归分析预测