海量数据的可扩展随机森林

机器算法验证 机器学习 随机森林 引导程序 集成学习 装袋
2022-03-18 04:57:13

我的问题很简单。我想在一个巨大的数据集上使用随机森林训练一个数据集(使用n行)。假设我只能适应b<n一次在内存中的行。

型号选择

我看到几个选项:

选项#1:决策树袋

绘制一个子样本b来自总数据集的行(无替换)。在子样本上拟合决策树。重复s次。平均估计器的结果。

选项#2:袋装决策树袋

与上面相同,但不是决策树,而是将 bagging 应用于子样本。

选项#3:随机森林袋

与上面相同,但改为应用随机森林。

选项#4:随机森林的森林

拿我的数据集,根据几个特征(通过无监督学习或使用一些先验知识)将它分成几个子集,并在每个子集上训练随机森林。

我最初在这里提出了这个想法。

选项 #5、#6 和 #7:带有重采样的 X 包

采用选项 #1、#2 或 #3,而不是在子样本上拟合估计器,而是从带有替换的子样本中重新采样一个新子集,以便新子集具有n行。

original subset (n rows) => subsample (b rows) => resample (n rows)

然后将估计器应用于新子集。

对于选项#6 和#7,我会为集成循环中的每次迭代重新采样。

讨论

选项 #1、#2 和 #3 称为粘贴。

选项 #1 在所有其他选项中计算效率最高,但我担心它的准确性在很大程度上取决于b. 选项 #5 可能会更好,但不是很多。

选项 #6 和 #7 类似于 Bag of Little Bootstraps(您可以在此处了解更多信息)。

问题

在以上选项中,哪个是最好的方法?

我的猜测是选项#7 是最好的。

想法?评论?

谢谢大家!

更新

我找到了这篇博文看起来他们做了选项#3,提到选项#1,并提到选项#7。

更新 2

最好显然是主观的。模型精度(测试 MSE)很重要,但我愿意牺牲一些精度来提高计算效率。

1个回答

有一个关于随机森林的博士学位,其中包括大型数据集上的 RF - 可以在https://github.com/glouppe/phd-thesis获得 我不再记得提出的解决方案,但我记得有一些关于不同替代方案的比较实验.