【随心记】Boosting算法随想

Boosting算法,常看常新

集成学习:体现在能够把一些弱学习器集成成为一个强学习器。

(1)弱学习器 vs 强学习器 定义:

强学习器就是准确率更高?仅此而已吗

强学习器的通俗理解就是预测的准确度很高。如果给它足够多的训练样本,那么它最终能够实现任意小的一个错误率。

但是弱学习器的预测准确度很低,可能只比随机猜测好一些(1%),而且有个预测准确率的极限,就是无论再怎样增大样本数量,预测准确度也无法提升了。

实际中,找到一个强学习器可能会很难,但找到弱学习器却很简单,Boosting算法就是能够把不同的(不要求是同一类,可以是神经网络+决策树)弱学习器集成成为强学习器,达到“三个臭皮匠,赛过诸葛亮”的目的。

(2)Boostings算法实例: Adaboost

Adaboost的原理通过调整每轮中错误样本的权重(增大)和弱学习器的权重,在之前的错误上不断迭代,最终的学习器就成为一个比较强的学习器。

Adaboost的优势仅止于此吗?那也不至于成为这样一个写进教科书里的算法。其实另外的优势是,能够很好地防止过拟合。也就是模型在训练集上效果很好后,在测试集上的效果不会下降,反而还能继续提升。

是怎么做到的呢?其实体现在采用了“margin”的思想。回想SVM,最大化样本离分界面的距离,实现一个最优的分割。在boosting论文提到了他的损失函数里其实也包含了这样一个margin,这样就可以让训练数据上的错误率达到零之后,效果还能不断继续改进,不断增大决策的信心。

(3)boosting算法的应用有哪些呢?

比如:人脸图像分割。现在手机拍照里就能够实时检测到人脸,决策一张图片是不是人脸,弱学习器可以就是简单地看人脸特征的某个值是否大于某个threshold,可以简单地用一个条件判断语句来形容。当然效果不太好,但是用到boosting算法就可以很好解决。

另外 XGboost,已成为Kaggle竞赛上的常见获奖算法,是实现了 Gradient Boosting 的算法,计算速度快且耗用内存很小。 作者:幽灵公主喵 https://www.bilibili.com/read/cv14581546?spm_id_from=333.999.0.0 出处:bilibili

猜你喜欢

转载自blog.csdn.net/weixin_43846562/article/details/122158661