【问题标题】:how to use weight when training a weak learner for adaboost在为 adaboost 训练弱学习者时如何使用权重
【发布时间】:2013-08-05 22:07:25
【问题描述】:

以下是adaboost算法:

它在第 3.1 部分提到了“在训练数据上使用权重 wi”。

我不太清楚如何使用权重。我应该重新采样训练数据吗?

【问题讨论】:

  • 为什么要投反对票?我的问题有什么问题?请告诉我,以便我更正。
  • 没有投反对票,但也许您可以将这几个点写入真实的标记列表而不是图像。

标签: machine-learning adaboost


【解决方案1】:

我不太清楚如何使用权重。我应该对训练数据重新采样吗?

这取决于您使用的分类器。

如果您的分类器可以考虑实例权重(加权训练示例),那么您无需对数据重新采样。示例分类器可以是累积加权计数的朴素贝叶斯分类器或加权 k 最近邻分类器。

否则,您希望使用实例权重对数据进行重新采样,即可以对具有更多权重的实例进行多次采样;而那些权重很小的实例甚至可能不会出现在训练数据中。大多数其他分类器都属于这一类。

实践中

实际上,如果您仅依赖于非常幼稚的分类器池(例如决策树桩、线性判别器),则提升性能会更好。在这种情况下,您列出的算法具有易于实现的形式(有关详细信息,请参阅here): 选择 alpha 的位置(epsilon 的定义与您的类似)。

一个例子

在平面上定义一个二分类问题(例如,一个圆点 在一个正方形内)并从随机池中构建一个强大的分类器 生成符号类型(ax1 + bx2 + c)的线性判别式。

两个类标签用红叉和蓝点表示。我们在这里使用一堆线性判别式(黄线)来构建朴素/弱分类器池。我们为图中的每个类(无论是否在圆圈内)生成 1000 个数据点,并保留 20% 的数据用于测试。

这是我得到的分类结果(在测试数据集中),其中我使用了 50 个线性判别式。训练误差为1.45%,测试误差为2.3%

【讨论】:

  • 不错的答案!你说random linear discriminants,但是你如何确保每个弱学习器都满足error rate < 0.5 约束?你能澄清这个/或发布一些代码吗?谢谢!
  • 在此处查看幻灯片 - 第 8 至 10 页 (csd.uwo.ca/~olga/Courses//Fall2005//Lecture4-2.pdf)。您要考虑的一件事:这是一个增量模型,在每一步,我们只需要更加关注这些错误分类的示例。是的,它是一个线性判别式,但是这次需要对那些权重很大的样本进行正确分类,而不是那些权重很小的样本。希望对您有所帮助。
  • D(i) 到底在哪里使用?
【解决方案2】:

权重是在步骤 2 中应用于每个示例(样本)的值。这些权重随后会在步骤 3.3 (wi) 中更新。

所以最初所有的权重都是相等的(第 2 步),对于错误分类的数据,它们会增加,对于正确分类的数据,它们会减少。所以在步骤 3.1 中,你必须考虑这些值来确定一个新的分类器,更加重视更高的权重值。如果您不更改权重,则每次执行步骤 3.1 时都会生成完全相同的分类器。

这些权重仅用于训练目的,它们不是最终模型的一部分。

【讨论】: