如何结合弱分类器得到强分类器?

机器算法验证 机器学习 分类 集成学习
2022-03-15 13:17:25

假设我们有一个二元分类问题。我们还有几个分类器。每个分类器不是将向量分配给类(0 或 1),而是返回给定向量属于类 1 的概率。这意味着对于每个必须分类的输入向量,我们得到一个介于 0 和1. 例如:

(0.81, 0.67, 0.43, 0.99, 0.53)

其中分量(概率)的数量等于分类器的数量。现在我们要“组合”这些“弱”分类器来获得“强”分类器。换句话说,我们需要找到一种方法将给定的概率向量映射到一个数字(概率)。

所以,我的问题是:“正确”的做法是什么?当然,我可以训练另一个使用概率向量并返回一个概率的分类器。换句话说,我们可以找出如何以经验的方式组合“弱”概率。然而,我假设,我们可以利用向量的分量不仅仅是“一些数字”(或特征),它们是概率,它们已经是预测,因此,它们必须组合成相应的适当的方式。

添加

在评论中,建议对“弱”概率进行平均。但是,如果可以估计每个“弱”分类器的质量(功率)(并且应该是可能的),那么抑制“坏”分类器是否有意义(例如通过使用它们的预测(概率)权重或完全忽略它们)?只使用一个(最好的)弱分类器有意义吗?检查弱分类器之间的相关性是否有意义。例如,如果两个“弱”分类器总是给出相同的结果,我们应该怎么做。我们不应该通过其中一个没有任何附加价值吗?

3个回答

实际上,正如其他人所提到的,bagging、boosting 和 stacking都是组合弱预测的合理方法。不过,更进一步,尝试尽可能多的方法并查看性能最佳的方法在竞争性机器学习的背景下也很常见(例如,您可以尝试堆叠分类器以及简单的平均集成器,然后选择更好的两者根据一些保留数据的表现)。

事实上,如果准确性是您唯一的目标,那么您可能最好考虑一些不同的集成技术,并关注被集成的分类器的多样性,而不是它们的组合方式。由于最好的集成技术将取决于您的问题和数据,并且没有总是最好的方法,因此您最好将时间花在将集成选择作为训练过程的另一部分,而不是担心做出一个正确的选择。

不过从理论上讲,为了更直接地回答这个问题,我认为有一些概率论点可以用来证明“抑制”弱分类器的最佳方法是正确的。IMO贝叶斯模型平均基于信息标准的平均背后的推理非常有启发性,并且与机器学习中的一些方法有关,例如通过二项式偏差加权分类器。例如,这是一个通过使用 akaike 权重组合分类器的过程(作为基于信息标准的模型平均的示例):

** 请注意,这一切都是假设分类器经过了很好的校准,并且在交叉验证中使用了实际的样本外偏差,而不是像 AIC 那样对其进行估计

假设您有个适合训练数据的分类器,然后每个分类器对测试数据进行次预测。然后,您可以计算每个模型预测的“可能性”,如下所示:KN

Lk=Πi=1nPMk(yi)

在哪里:

  • Lk = 模型k
  • yi =测试数据中的响应i
  • PMk(yi)归于的概率kyi

给定预测数据的可能性,每个分类器的权重或相对可以定义为: wMk

Lmax=maxLk
wMk=e2log(Lmax/Lk)j=1ke2log(Lmax/Lk)

每个模型的权重可以解释为分类器是真实模型的概率,并且来自所有个分类器的集合的预期结果将具有等于概率之和的预期值每个分类器乘以它的预测:wMkMkk

ynew=j=1kwMkMk(Xnew).

我希望这个符号不会让你陷入困境,但关键是有理论方法(贝叶斯方法特别有趣)来确定集合中每个模型应该具有的概率,然后使用它来进行预测,而不是更多启发式加权或平等投票方案。这些更直观的平均策略通常在实证研究中表现不佳(或者看起来如此),但我认为将它们的概念混入其中可能会像他们帮助我一样帮助你。

正如您可能从评论的多样性中推测的那样,将弱学习者组合成强学习者并不是一个单一的“正确”方法的任务,而是一个具有不同程度的已知优势和缺点的方法领域。简要介绍一下,集成学习的维基百科条目是一个合理的起点。在那里,您会找到对评论中讨论的许多方法的参考,例如平均预测或使用逻辑回归组合它们。特别是,这里是堆叠部分的摘录:

堆叠(有时称为堆叠泛化)涉及训练学习算法以结合其他几种学习算法的预测。首先,使用可用数据训练所有其他算法,然后训练组合算法以使用其他算法的所有预测作为附加输入来进行最终预测。如果使用任意组合器算法,则堆叠理论上可以代表本文中描述的任何集成技术,尽管在实践中,通常使用单层逻辑回归模型作为组合器。

在我看来,您编辑中的问题最好在个别情况下使用交叉验证来回答。我怀疑@Tim 的逆误差加权平均值的建议是否比@yasin.yazici 的逻辑回归表现更好,这取决于算法和数据集。使用分类特征的单层神经网络会产生好的结果吗?可能是,因为神经网络可以学习非线性函数。也许它会知道,当两个概率一致时,它们几乎总是正确的,并产生一个隐藏层节点,该节点对这两个概率的权重非常高。

但是在你尝试这些并比较它们之前,谁知道呢?值得庆幸的是,交叉验证提供了一种针对给定实际问题比较每种方法的方法。

将弱学习器组合成强学习器正是boosting的设计目的。

Boosting 是ensemble 方法的一个具体例子。

使用置信度预测的改进提升算法”是一种流行的算法(超过 3000 次引用),它使用了弱学习器的置信度。

请注意,常规使用 boosting 和您的问题之间存在很大差异。在常规提升中,您有能力在您选择的数据集上训练一个弱学习器。提升算法处理构建适当的数据集并组合数据集。

在这里,你已经得到了弱学习者。如果您可以培训新学习者,则可以忽略已有的学习者并以常规方式使用提升。否则,由于弱学习器是已知的,您可以通过将它们视为常规特征并在它们之上构建分类器来以更好的方式聚合它们。