机器学习中的集成技术问题

数据挖掘 机器学习 Python 数据挖掘 scikit-学习 集成建模
2022-02-26 14:37:00

我正在学习集成机器学习,当我在网上阅读一些文章时,我遇到了 2 个问题。

1.

在这篇文章中,它提到

相反,模型 2 可能在所有数据点上具有更好的整体性能,但在模型 1 更好的一组点上性能更差。我们的想法是将这两种模型结合起来,使其表现最佳。这就是为什么创建样本外预测更有可能捕获每个模型表现最佳的不同区域。

在此处输入图像描述

但是我还是不明白,为什么不训练所有的训练数据可以避免这个问题呢?

2.

从这篇文章,在预测部分,它提到

简单地说,对于给定的输入数据点,我们需要做的就是将它传递给 M 个基学习器并获得 M 个预测,然后通过元学习器将这 M 个预测作为输入发送

但是在训练过程中,我们使用k-fold训练数据来训练M个base-learner,那么我是否也应该根据所有训练数据来训练M个base-learner,用于输入进行预测?

2个回答

相反,模型 2 可能在所有数据点上具有更好的整体性能,但在模型 1 更好的一组点上性能更差。我们的想法是将这两种模型结合起来,使其表现最佳。这就是为什么创建样本外预测更有可能捕获每个模型表现最佳的不同区域。

这与是否对所有数据进行培训无关。两个模型都对所有数据进行了训练。但他们每个人在不同的点上都比另一个更好。如果我和我哥哥要猜一首歌的确切年份,我会在 90 年代的歌曲中做得更好,而他在 80 年代的歌曲中会做得更好——这不是一个完美的类比,但你明白了——想象我的大脑无法处理 80 年代歌曲,他不能处理90年代的歌曲。最好的办法是让我们都知道我们每个人都更好地学习了输入空间的不同区域。

简单地说,对于给定的输入数据点,我们需要做的就是将它传递给 M 个基学习器并获得 M 个预测,然后通过元学习器将这 M 个预测作为输入发送

k-fold 仍然只是一个学习者。但是您正在多次训练以选择能够最大限度地减少遗漏折叠中的错误的参数。这就像在所有显示 k-1 折叠数据的歌曲上只训练我,并且我尽我所能校准我的内部模型......但我仍然不会非常擅长那些 80 年代的歌曲。我只是一个基础学习者,其功能形式(我的大脑)不适合这些歌曲。如果我们能带上第二个学习者,那会有所改善。

1-集成方法的思想主要是减少方差,这意味着“过度拟合”。它背后的想法是我们训练不同的模型(在本例中为 2 个模型),这些模型不一定会看到所有的训练数据点,因此它不会过度拟合(通常称为 bagging 的方法)。现在对于预测,我们可以对分类问题或回归问题的平均值甚至整个学习器进行投票。这样可以确保模型在训练和测试阶段保持稳定。

因此,如果我们在所有训练数据上进行训练,我们可能会出现过度拟合,从而导致测试用例的准确性降低。

2-看看这个:为什么同时使用验证集和测试集?