机器学习算法一:详解Boosting系列算法一Adaboost
本文主要介绍boosting算法得基本原理,以及的三种典型算法原理:adaboost,GBM(Gradient bossting machine),XGBoost。
Boosting方法原理
boosting算法是一类将弱学习器提升为强学习器的集成学习算法,它通过改变训练样本的权值,学习多个分类器,并将这些分类器进行线性组合,提高泛化性能。
先介绍一下“强学习”和“弱学习”的概念:一个分类,如果存在一个多项式算法能够学习他,并得到很高的正确率,那么这个算法称为强学习器,反之如果正确率只是稍大于随机猜测(50%),则称为弱学习器。在实际情况中,我们往往会发现弱学习器比强学习器更容易获得,所以就有了能否把弱学习器提升(boosting)为强学习器的疑问。于是提升类方法应运而生,它代表了一类从弱学习器出发,反复训练,得到一系列弱学习器,然后组合这些弱学习器,构成一个强学习器的算法。大多数boost方法会改变数据的概率分布(改变数据权值),具体而言就是提高前一轮训练中被错分类的数据的权值,降低正确分类数据的权值,使得被错误分类的数据在下轮的训练中更受关注;然后根据不同分布调用弱学习算法得到一系列弱学习器实现的,再将这些学习器线性组合,具体组合方法是误差率小的学习器会被增大权值,误差率大的学习器会被减小权值,典型代表adaboost算法。
1.1 Adaboost算法
Adaboost,全称adaptive boosting,前面已经大致介绍了它的基本原理,接下来会简答推导它的算法过程。
给定一个二分类的训练数据集:T=(x1,y1),(x2,y2),……,(xN,yN)T=(x1,y1),(x2,y2),……,(xN,yN),标记yi∈[−1,1]yi∈[−1,1]。
(1) 初始化训练数据的权值分布
D1=(w11,…,w1i,…,w1N),w1i=1/N,i=1,2,…,ND1=(w11,…,w1i,…,w1N),w1i=1/N,i=1,2,…,N
(2) 指定生成TT个学习器,即进行t=1,2,…,Tt=1,2,…,T迭代。
(3) 对于第tt次迭代,根据前一次迭代得到的权值分布DtDt训练数据集,得到弱分类器
Gt(x):X→{−1,1}
(4) 计算Gt(x)Gt(x)在权值分布DtDt上的分类误差
et=P(Gt(xi)≠yi)=∑i=1w1iI(Gt(xi)≠yi)
这里很关键,我们可以发现,分类误差et是当前学习器得到的未正确分类数据项对应的权值之和,说明adaboost算法的分类误差是受权值分布Dt影响的,具体怎么影响继续往下看。
(5)计算当前学习器Gt(x)Gt(x)的权值
这个权值是用在最后线性组合时乘在分类器前的,仔细观察这个函数式不难发现当et≤1/2et≤1/2时,αt>0αt>0,并且随着etet的减小而增大,也就是说分类误差越小分类器的权值越大,这里还可以看出可以看出权值分布DtDt通过影响etet来影响了αtαt,这是Dt的第一个影响。