Boosting 最初是为解决分类问题设计的,后来又被扩展到了回归问题。Boosting 的原理是将很多弱分类器组合起来产生一个强分类器。
一个弱分类器是某种比随机猜测结果略好的简单分类器。Boosting 每次将输入特征赋予不同的权重,并应用弱分类器进行分类,最后将所有结果通过投票的形式产生最终结果。
AdaBoost
我们从最基本的 AdaBoost 开始介绍。
假设某个分类问题结果为 -1 或者 +1。一共有 个样本,并且我们已有
个弱分类器。AdaBoost算法表述为:
- 初始化权重
- For
to
:
a. 对每个样本附加权重
并送入分类器
b. 计算错误率:
c. 根据错误率计算该分类器权重(错误率越低权重越高)
d. 更新分类错误的样本权重,并归一化处理(判断错误的样本权重提高,交由下一个分类器分类)
- 最终生成的强分类器为:
其中, 是条件判断。false = 0, true = 1。
2.d 比较难理解。调整样本权重的意义在于,如果某个分类器已经正确分类 i 样本,后续的分类器的责任在于“补全” A 分类器的功能,即,不要重复正确的结论,应该把重点放在 A 分类错误的样本上。
如果后续某个分类器与 A 分类器的结论重复,那由 2.c 得到的分类器权重会很低。在最终的强分类器中,几乎不产生影响。反之,如果与 A 互补,那可能会得到一个很高的权重。
AdaBoost 简单例子
假设有如下训练数据。
![](https://img.haomeiwen.com/i4482847/0a40d02c35271ee1.png)
我们有如下分类器(都比随机猜测略好):
首先,我们将样本权重设置为 ,应用
分类器,发现位于 (1.5, 0.5) 的点(假设为 5 号点)分类错误:
计算 分类器权重:
调整分类错误的样本权重并归一化:
此后再将新的权重用于 的分类:
再用 分类:
最终得出:
![](https://img.haomeiwen.com/i4482847/78b65c7b857cc0be.png)
得到的边界为:
![](https://img.haomeiwen.com/i4482847/9bd3c1c891c407b8.png)
网友评论