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

Posted

技术标签:

【中文标题】在 scikit-learn 中平均多个随机森林模型【英文标题】:Averaging Multiple Random Forest Models in scikit-learn 【发布时间】:2018-06-05 10:16:52 【问题描述】:

我有一个非常大的数据集,想在数据集的分区上训练几个随机森林模型,然后对这些模型进行平均以得出我的最终分类器。由于随机森林是一种集成方法,因此这是一种直观合理的方法,但我不确定是否可以使用 scikit-learn 的随机森林分类器。有任何想法吗?

我也愿意使用另一个包中的随机森林分类器,只是不知道在哪里看。

【问题讨论】:

为什么不在数据的分区上训练基础学习者(树),然后将它们平均起来得到一个随机森林? 很好,这种方法实际上是等效的,因为多棵树是在同一个分区上训练的。你知道我可以用来构建这个的任何参考吗? 【参考方案1】:

这是我能想到的:

    熊猫 + Scikit: 您可以自定义您自己的引导算法,从整个数据集中随机读取一个合理大小的样本,并在它们上拟合 scikit 树(如果您在每个节点处随机化特征将是完美的)。然后腌制每棵树,最后将它们平均出来,得到你的随机森林。

    Graphlab + SFrameTuri 有自己的大数据库(SFrame,类似于 Pandas)和机器学习库(graphlab,非常类似于 scikit)。环境非常优美。

    Blaze-Dask 对某些人来说可能会有些陡峭的学习曲线,但会是一个有效的解决方案。

    您也可以使用内存映射 numpy 选项,但它会比前三个选项更麻烦,而且我从未这样做过,所以我将把这个选项留在这里。

总而言之,我会选择选项 2。

【讨论】:

对于选项 1,知道如何平均腌制树吗?否则,一个非常有帮助的答案。 您可以将所有树保存到同一个泡菜中,然后一次加载所有树。这个线程可以帮助你做到这一点:***.com/questions/46874061/…。最重要的是,我只需编写一个简单的函数来预测每个未腌制的树。当我很快进行实际编码时,我会更新我的答案。

以上是关于在 scikit-learn 中平均多个随机森林模型的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在 Python 中为具有多个分类的随机森林制作部分依赖图(使用 scikit-learn)?

scikit-learn 中使用标准 MAE 而不是 MSE 的随机森林回归慢约 150 倍 [重复]

在 scikit-learn 中使用多标签随机森林的没有标签分配的样本

scikit-learn随机森林调参小结

转载:scikit-learn随机森林调参小结

如何在 scikit-learn 中控制随机森林中的特征子集?