合奏越来越流行。据我了解,总体上存在集成、装袋、提升和堆叠三大领域。
我的问题是,合奏总是至少提高实践中的表现吗?我猜在数学上,这不是真的。我只是在问一个现实生活中的情况。
例如,我可以训练 10 个基础学习器,然后将它们与另一个处于 2 级的学习器叠加。这个 2 级学习者在实践中是否总是优于最好的基础学习者?
合奏越来越流行。据我了解,总体上存在集成、装袋、提升和堆叠三大领域。
我的问题是,合奏总是至少提高实践中的表现吗?我猜在数学上,这不是真的。我只是在问一个现实生活中的情况。
例如,我可以训练 10 个基础学习器,然后将它们与另一个处于 2 级的学习器叠加。这个 2 级学习者在实践中是否总是优于最好的基础学习者?
在 Ensemble 下,您可以使用多数票、平均值、权重等从 Ensemble 模型中获得最终结果。为了更好地理解它,你可以通过这个链接,亚历山大很好地解释了。
现在,让我们考虑您有 3 个模型,其准确度为 65-70%。现在,通过堆叠这 3 个模型,您的模型精度很有可能会提高。在另一种情况下,您有 3 个模型 model-1:95%,model-2:55%,model-3:45% 准确度,那么如果将它们堆叠起来,那么很有可能会使结果恶化。
结论,这完全取决于单个模型的性能,当您组合性能中等的模型时,Ensemble 表现良好。
从技术上讲,没有证据表明此方法适用于这种情况,但跟踪和错误可能会帮助您获得良好的结果。它对业务场景是主观的。同样,对于 bagging 和 boosting。
根据我在模型准确度不佳时使用 Bagging 的经验,我尝试使用 bagging 来更好地拟合数据,但 EOD 训练准确度(大约 20% 到 10%)降低了,但测试准确度变差了(大约 11% 到 20%)。因此,您必须决定哪个更适合您的业务问题并继续推进。
最简洁的答案是不。
我参与了几个项目,这些项目评估了几个分类器的集合与分类本身。在某些情况下,集成的精度和召回率更好,但更多情况下并非如此。这并不是说它不值得研究。但有时,有一个模型可以合理地对数据进行分类,但它可能会在一个集合中被淹没。也许加权集成可能会改善结果,但它并不是提高性能的明确方法。
在实践中,我会尝试几个模型,然后尝试一组模型。如果合奏是最好的,无论你如何定义最好,那就去吧。但有时更容易选择最好的基础模型,然后弄清楚如何调整该模型。
正如您所说,您无法从数学上证明集成可以提高性能,但通常可以。这就是为什么梯度提升和随机森林在 kaggle 比赛中如此受欢迎的原因,因为它们在很多方面都优于决策树可以学习的东西。
出于好奇,即使是神经网络也可以用作“弱”学习者,如https://arxiv.org/abs/1704.00109所示。因此,集成是一种非常强大的技术,可以应用于机器学习的许多领域。主要问题是集成不容易解释,比弱学习器更黑盒。
如果您的单个分类器比随机猜测更好,即它们的错误率小于 0.5,那么这些分类器的集成将导致性能提高,即错误率下降。
您可以参考Sebastian Raschka - Python Machine Learning Book 中的Combining different Models for Ensemble Learning一章,以获得对相同的数学理解。