在 AdaBoost 中调整样本权重

机器算法验证 机器学习 助推
2022-03-16 02:01:22

我正在尝试从Tibshirani阅读有关 AdaBoost 的信息(第 337 页起),希望能帮助我更好地理解它。

这本书说:“对于每个连续的迭代 m = 2, 3, ......, M,观察权重都被单独修改,分类算法被重新应用于加权观察。在步骤 m,那些被分类器 Gm 错误分类的观察在上一步诱导的 -1 (x) 的权重增加了,而那些被正确分类的权重减少了。因此,随着迭代的进行,难以正确分类的观测值受到越来越大的影响。因此,每个连续的分类器被迫专注于序列中之前的那些错过的那些训练观察。”

我无法理解“将算法重新应用于加权观察”意味着什么。例如,如果我正在做 2 类文本分类,我对我的观察结果(文档向量)做了什么?这如何“迫使”分类器专注于某些样本而不是其他样本?

2个回答

mpq 已经用简单的英语解释了 boosting

一张图片可以代替一千个单词......(从R. Meir 和 G. Rätsch 窃取。关于提升和杠杆作用的介绍示例 adaboost

图片备注: 在第一次迭代中,基于所有数据点的分类器正确分类了所有点,除了 x<0.2/y>0.8 和 0.4/0.55 附近的点(参见第二张图片中的圆圈)。在第二次迭代中,正是这些点获得了更高的权重,以便基于该加权样本的分类器正确分类它们(第二次迭代,添加虚线)。组合的分类器(即“虚线的组合”)导致分类器由绿线表示。现在第二个分类器产生另一个错误分类(x in [0.5,0.6] / y in [0.3,0.4]),在第三次迭代中获得更多关注,依此类推。在每一步中,组合分类器都越来越接近最佳形状(尽管不是连续的)。最后的分类器(即

现在应该更清楚提升是如何工作的了。关于算法细节还有两个问题。

1. 如何估计错误分类?

在每次迭代中,只有本次迭代中可用的训练数据样本用于训练分类器,其余用于估计错误/错误分类。

2.如何应用权重?

您可以通过以下方式执行此操作:

  • 您可以使用适当的样本算法对数据进行抽样,该算法可以处理权重(例如加权随机抽样或拒绝抽样)并在该样本上建立分类模型。结果样本包含错误分类的示例,其概率高于正确分类的示例,因此在该样本上学习的模型被迫集中在数据空间的错误分类部分。
  • 您使用能够隐式处理此类权重的分类模型,例如决策树。DT简单算。因此,如果呈现具有特定预测变量和类值的示例,它不会使用 1 作为计数器/增量,而是使用指定的权重 w。如果 w = 0,则该示例实际上被忽略。结果,错误分类的例子对模型估计的类别概率有更大的影响

关于您的文档示例:

想象一下,某个词完美地分隔了类,但它只出现在数据空间的某个部分(即决策边界附近)。那么这个词没有能力分离所有的文档(因此它对整个数据集的表现力很低),但只有那些靠近边界的地方(表现力很高)。因此,包含该词的文档将在第一次迭代中被错误分类,从而在以后的应用中获得更多关注。将数据空间限制在边界(通过文档加权),您的分类器将/应该检测单词的表达能力并正确分类该子空间中的示例。

(上帝帮助我,我想不出更准确的例子。如果缪斯后来决定花一些时间和我在一起,我会编辑我的答案)。

请注意,提升假设分类器很弱。例如,与 NaiveBayes 一起应用的 Boosting 不会产生显着影响(至少就我的经验而言)。

编辑:添加了一些关于算法的细节和图片的解释。

在训练分类器时,应在计算成本函数时应用权重。

例如,假设我们的代价函数是平方和,加权样本意味着我们在计算代价函数时,平方和的每一项都会乘以它的样本权重(以前的错误分类样本权重很大,所以训练过程为这个分类器更多地集中在那些样本上)。