繁体   English   中英

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

[英]Questions on ensemble technique in machine learning

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

1.

在这篇文章中,它提到

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

在此处输入图片说明

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

2.

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

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

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

假设红色和蓝色是你能找到的最好的模型。

一个在区域 1 中效果更好,另一个在区域 2 中效果更好。

现在您还将训练一个分类器来预测使用哪个模型,即您将尝试学习这两个区域。

在外面做验证。 如果让两个内部模型访问元模型看不到的数据,则可能会过度拟合。

集成中的想法是一组弱预测器优于强预测器。 所以,如果我们用不同的预测结果训练不同的模型,并使用多数规则作为我们集成的最终结果,这个结果比仅仅尝试训练一个模型要好。 例如,假设数据由两种不同的模式组成,一种是线性的,一种是二次型的。 然后使用单个分类器可能会过度拟合或产生不准确的结果。 您可以阅读本教程以了解有关 ensemble 以及 bagging 和 boosting 的更多信息。

1)“但是我还是没get到点,为什么不训练所有的训练数据就可以避免这个问题呢?” - 我们将保留这些数据用于验证目的,就像我们在 K-fold 中所做的那样

2)“那么我还应该根据所有训练数据训练 M base-learner 以进行输入预测吗?” - 如果您向所有学习者提供相同的数据,那么所有学习者的输出将相同,创建它们没有任何用处。 所以我们会给每个学习者一个数据子集。

对于问题 1,我将证明为什么我们以矛盾的方式训练两个模型。 假设你用所有数据点训练一个模型。在训练期间,每当模型看到属于红色类的数据点时,它就会尝试拟合自己,以便它能够以最小的错误分类红色点。数据也是如此属于蓝色类的点。因此,在训练过程中,模型倾向于特定的数据点(红色或蓝色)。最后,模型将尝试拟合自己,这样它就不会在数据点和数据点上犯太多错误最终模型将是一个平均模型。 但是,如果您为两个不同的数据集训练两个模型,那么每个模型都将在特定数据集上进行训练,并且模型不必关心属于另一个类的数据点。

用下面的比喻会更清楚。 假设有两个人专门从事两种完全不同的工作。现在,当一份工作来临时,如果你告诉他们你们都必须做这份工作,而且他们每个人都需要完成 50% 的工作。 现在想想你最终会得到什么样的结果。 现在还要想想如果你告诉他们一个人应该只从事他最擅长的工作,结果会怎样。

在问题 2 中,您必须将训练数据集拆分为 M 个数据集。并在训练期间将 M 个数据集提供给 M 个基础学习者。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM