【Adaptive Boosting】林轩田机器学习技法

首先用一个形象的例子来说明AdaBoost的过程:

1. 每次产生一个弱的分类器,把本轮错的样本增加权重丢入下一轮

2. 下一轮对上一轮分错的样本再加重学习,获得另一个弱分类器

经过T轮之后,学得了T个弱分类器,再将这T个弱分类器组合在一起,形成了一个强分类器。

 

由于每一轮样本的权重都在变化,因此分类器学习的目标函数也产生了变化:

无论是SVM还是Logistic Regression都可以用这种方式学习,给每个样本增加不同的权重。

接下来问题就变成了,如何调整样本的权重?目的是什么?

林介绍了一个原则:

目的:如果想要多个分类器的组合效果好,多个分类器之间的差异就要大一些

方法:上一轮分对的样本在下一轮权重降低,上一轮分错的样本在下一轮提高,这样gt和gt+1的对不同样本的分类能力就有区别了

林接着介绍了一种有实际操作可行性的re-weighting方法。

分对样本权重乘以错误率,分对样本权重乘以(1-错误率):上张PPT提到了,这样做的结果就是ut+1对于gt分类器来说是random的;但是,本轮对ut+1的学习结果gt+1分类器(如果真的学的靠谱)肯定要优于random的,;这样一来,既保证了差异性,又不至于调整的太过分

每一轮分类器怎么学习解决了,但是分类器怎么组合还没有提到。

林介绍了一种Linear Aggregation on the Fly的方法:

这种方法每一轮学完分类器,分类器前面的权重也就有了:

对scaling factor取一个ln当成分类器权重

1)系数为正,表示分类器能起到一定的正确分类作用

2)系数为0,表示分类器跟随机的效果一样

3)系数为负,表示分类器判断结果与真实结果更可能是相反的

如果是工程化编程,这里需要考虑如果error rate=0的情况,做一个特殊的处理。

最后林从理论上讲了AdaBoost的依据:

这种方法为什么能行呢?

1)每次前进一小步,Ein可能会越来越小

2)样本量足够多,VC bound可以保证Ein与Eout接近(泛化性好)

林接着介绍了一个AdaBoost的经典例子:

要想找一个弱分类器,那没有比one-dimension stump更弱的了,但就是这么弱的分类器,经过组合也产生了伟大的工作。

工作就是实时人脸识别。

posted on   承续缘  阅读(1491)  评论(1编辑  收藏  举报

编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示