随机森林与多数投票

数据挖掘 机器学习 随机森林 决策树 阿帕奇火花 集成建模
2022-02-17 02:38:53

我正在使用带有 scala 的 spark 来实现决策树和随机森林的多数投票(两者都以相同的方式配置 - 相同的深度,相同数量的基本分类器等)。数据集在基本分类器之间平均分配以进行多数投票。Nemenyi 测试表明,多数投票明显更好(对于来自龙骨的 11 个基准数据集)。

据我了解,这两种方法之间的区别在于,用于训练随机森林(基分类器)的数据可能无法汇总到整个数据集。我的理解正确吗?如果是这样,观察到的差异可能是什么原因?

另外,你能指出我比较这两种方法的任何文章吗?

编辑:如果有人对此主题感兴趣,这里有一篇文章比较 bagging 与水平分区,支持后者。

2个回答

随机森林的基础学习树默认使用“引导”,速率为 1.0(参数subsamplingRate);也就是说,数据集被重新采样但有替换。因此,每棵树都在与原始数据集大小相同的数据集上进行学习,但其中一些点是重复的,而有些则被遗漏了。对于大型数据集,每棵树大约有 1/3 的数据集被遗漏。有了足够多的树(实际上,只有几棵就足够了),任何数据点都不太可能被任何树使用。

Spark 似乎对其随机森林使用硬投票,所以这没有区别。

在我看来,这里的主要区别在于您已经为自定义实现对数据进行了分区,因此这些基础学习者学习的数据要少得多。如果这表现良好,则表明随机森林相比之下过度拟合。我建议改变树参数,比如让随机森林中的树更保守,看看它们是如何比较的。

随机森林,预测具有最高概率估计的类别。输入样本的预测类别概率计算为森林中树木的平均预测类别概率。一棵树的类概率是叶子中同一类的样本的分数。

多数投票,也称为硬投票,每个单独的分类器投票给一个类别,多数人获胜。在统计方面,集成的预测目标标签是单独预测标签的分布模式。

在存在一些异常值的情况下,多数投票可能会更好。考虑这些投票:{0.51,0.51,0.51,0.01}{1,1,1,0}