Adaboosting 算法简介
Boosting算法-集成方法
Boosting算法是Ensembel方法的序列化方法,适用于弱分类器,将若学习器提升为强学习器,主要目的是减小偏差,典型的算法:AdaBoost、Arc-X4、LPBoost
Boosting的思想:-通过关注被已有分类器错分的数据来获得新的分类器(类似于团队合作中的互补性)
- 获得第一个分类器f1(x);
- 根据f1(x)的表现,对数据进行调整(重点关注做错的样本),并基于新的数据集训练得到下一个学习器,直到学习器的数目达到指定的数量,最终将这些学习器进行加权结合。
注意: Boosting算法在训练的每一轮都要检查当前生成的基学习器是否满足基本条件(即:当前的基学习器是否比随机猜测好),如果基于Re-weighting方法,则当前学习器即被抛弃,且学习过程停止,此种情况下,初始设置的学习轮数T也许还远未达到,可能导致最终集成中只包含很少的基学习器而性能不佳;若采用Re-sampling 方法,则可以获得“重新启动”的机会以避免训练过程过早停止,即不满足条件时,可以根据当前分布重新对训练样本进行采样,训练新的学习器,从而使学习过程持续。
AdaBoost算法(Adaptive boosting,自适应boosting)
一、AdaBoost算法的特点
AdaBoost算法中的个体学习器存在着强依赖关系,应用的是串行生成的序列化方法。每一个基生成器的目标,都是为了最小化损失函数。所以,可以说AdaBoost算法注重减小偏差。
采用的是加性模型,对每个基学习器的输出结果加权处理,只会得到一个输出预测结果。所以标准的AdaBoost只适用于二分类任务。
优点: 精确度高、泛化错误率低、易编码,可以用于大部分分类器上。
缺点: 对离群点敏感
二、AdaBoost算法的思想及流程
思想: 关注做错的样本得到下一个学习器,即training ??(?) on the new training set that fails ??(?)
流程:
- 通过初始数据(样本均匀分布,即权重都相等)训练得到第一个学习器;
- 根据学习器的错误率对样本权重进行调整,加大对错误样本的权重,减小对正确样本的权重,基于新的分布得到新的学习器;
- 直到得到指定数量的学习器,将这些学习器加权结合得出集成后的分类器。
三、 利用Re-weight方法得到不同的数据
1: ??(?) 在原始数据上的错误率:
2: 通过重新赋权法得到改变数据的分布,得到新的数据,增大做错数据的权重,减小正确数据的权重(d1>1)
3: 令,此时f1(x)在新的数据上错误率是随机的(f1在新的数据上不满足弱分类器的要求),带入2中公式,结合1,可得
4:由此:
5:其中,
用于确定αt的符号,若f(t)分类正确,则
结果为正,否则结果为负。代入5.1式子印证了错误数据权重增大,
四、如何将所有的基学习器结合?
1> 权重相同,将所有输出结果相加,假定结果>0则为第一类,结果<0是第二类。但这种方法不是最好的方法,应该给每个f(x)一个权重
2> 加权法:注意:此处不同于求新的权重U,结合时应考虑使得结合后的误差率尽可能小,因此,分类器原本错误率较低的权重应该较大。
即:分类器原本错误率较低的权重应该较大
五、最终分类器的错误率
随着学习器数量的增加,H(x)在训练集上的误差会越来越小。
证明最终的误差率小于某个值:
1]: https://blog.csdn.net/zwqjoy/article/details/80431496
2]: http://speech.ee.ntu.edu.tw/~tlkagk/courses/ML_2016/Lecture/Ensemble (v6).pdf