我的问题很简单。我想在一个巨大的数据集上使用随机森林训练一个数据集(使用行)。假设我只能适应一次在内存中的行。
型号选择
我看到几个选项:
选项#1:决策树袋
绘制一个子样本来自总数据集的行(无替换)。在子样本上拟合决策树。重复次。平均估计器的结果。
选项#2:袋装决策树袋
与上面相同,但不是决策树,而是将 bagging 应用于子样本。
选项#3:随机森林袋
与上面相同,但改为应用随机森林。
选项#4:随机森林的森林
拿我的数据集,根据几个特征(通过无监督学习或使用一些先验知识)将它分成几个子集,并在每个子集上训练随机森林。
我最初在这里提出了这个想法。
选项 #5、#6 和 #7:带有重采样的 X 包
采用选项 #1、#2 或 #3,而不是在子样本上拟合估计器,而是从带有替换的子样本中重新采样一个新子集,以便新子集具有行。
original subset (n rows) => subsample (b rows) => resample (n rows)
然后将估计器应用于新子集。
对于选项#6 和#7,我会为集成循环中的每次迭代重新采样。
讨论
选项 #1、#2 和 #3 称为粘贴。
选项 #1 在所有其他选项中计算效率最高,但我担心它的准确性在很大程度上取决于. 选项 #5 可能会更好,但不是很多。
选项 #6 和 #7 类似于 Bag of Little Bootstraps(您可以在此处了解更多信息)。
问题
在以上选项中,哪个是最好的方法?
我的猜测是选项#7 是最好的。
想法?评论?
谢谢大家!
更新
我找到了这篇博文。看起来他们做了选项#3,提到选项#1,并提到选项#7。
更新 2
最好显然是主观的。模型精度(测试 MSE)很重要,但我愿意牺牲一些精度来提高计算效率。