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

时间:2018-04-17 03:37:31

标签: python machine-learning scikit-learn data-mining ensemble-learning

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

1

在此article中,它提及了

  

相反,模型2可能在所有数据上具有更好的整体性能   积分,但它在那些点上的表现更差   模型1更好。我们的想法是将这两个模型结合起来   表现最好。这就是创建样本外预测的原因   捕获每个模型的不同区域的机会更高   表现最好。

enter image description here

但是我仍然无法明白这一点,为什么不训练所有训练数据都可以避免这个问题呢?

2

article中,在预测部分中,它提到了

  

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

但是在训练过程中,我们使用k-fold训练数据来训练M基础学习者,那么我是否还要根据所有训练数据训练M基础学习者的输入来预测?

5 个答案:

答案 0 :(得分:2)

假设红色和蓝色是您能找到的最佳模型。

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

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

在外面进行验证。如果你让两个内部模型访问元模型没有看到的数据,你可以过度拟合。

答案 1 :(得分:1)

合奏中的想法是,一组弱预测因子胜过强预测因子。因此,如果我们训练具有不同预测结果的不同模型并使用多数规则作为我们整体的最终结果,则该结果优于仅仅尝试训练单个模型。例如,假设数据由两个不同的模式组成,一个是线性的,一个是二次的。然后使用单个分类器可能过度拟合或产生不准确的结果。 您可以阅读this tutorial以了解有关合奏,装袋和提升的更多信息。

答案 2 :(得分:0)

1)“但我仍然无法明白这一点,为什么不训练所有训练数据可以避免这个问题?” - 我们将保留该数据用于验证目的,就像我们在K-fold中所做的那样

2)“那么我是否应该根据输入的所有列车数据训练M基础学习者进行预测?” - 如果您向所有学习者提供相同的数据,那么所有学习者的输出将是相同的,并且创建它们没有用处。因此,我们将为每个学习者提供一个数据子集。

答案 3 :(得分:0)

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

使用以下隐喻将更加清晰。 假设有两个专门从事两个完全不同的工作的人,现在当您来告诉他们两个人都必须完成工作并且每个人都需要完成50%的工作时。现在想想您最终会得到什么样的结果。现在还要想一想,如果您告诉他们一个人应该只从事最适合该人的工作,那将会有什么结果。

答案 4 :(得分:0)

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