Adaboost详解
第一次写博客,本人数学基础不是太好,如果有幸能得到读者指正,感激不尽,希望能借此机会向大家学习。这一篇的大部分内容都来自于《机器学习》这本书,以及自己的一些见解。MathJax还不会用,so公式都是我用MathType打出来后截图生成的。
预备知识:
这一部分主要是谈一谈Boosting的概念和原理,以及Adaboost中涉及到的基础数学公式即定理的推导。
弱学习器
弱学习器常指泛化性能略优于随机猜测的学习器,例如在二分类问题上精度略高于50%的分类器。——《机器学习》周志华 P171
Boosting(提升)
Boosting是一族可将弱学习器提升为强学习器的算法。这族算法的工作机制类似:先从初始训练集训练出一个基学习器,再根据基学习器的表现队训练集样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多关注,然后基于调整后的样本分布来训练下一个基学习器;如此反复进行,直至基学习器数目达到事先指定的值T,最终将这T个基学习器进行加权结合。——《机器学习》周志华 P173
加性模型(additive model)
其中,αtαt为每个基学习器的权值,ht(x)ht(x)为每个基学习器的预测结果。
数学期望的一条重要定理
若存在x∈X,y∈Yx∈X,y∈Y,且存在这样的映射Y=f(X)Y=f(X),则可以得到,
其中,E(x)E(x)、E(y)E(y)分别为xx和yy的期望。
泰勒展开式
其中,f(n)(x)f(n)(x)表示f(x)f(x)的n阶导数,等号后的多项式称为函数f(x)f(x)在x0x0处的泰勒展开式,剩余的Rn(x)Rn(x)是泰勒公式的余项,是(x−x0)n(x−x0)n的高阶无穷小。
以下列举一些常用函数的泰勒公式:
推导过程
主要分为三部分:指数损失函数、基学习器的权值αtαt的更新和训练集样本分布Dt(x)Dt(x)的更新。
指数损失函数
若f(x)f(x)为样本xx的实际标签值,H(x)H(x)为样本的预测标签值,则指数损失函数可以表示为,
其中Ex~D[e−f(x)H(x)]Ex~D[e−f(x)H(x)]为样本服从分布DD时,e−f(x)H(x)e−f(x)H(x)的期望值,II(f(x)=1)II(f(x)=1)当f(x)=1f(x)=1时,等于1,否则为0。
若存在H(x)H(x)使得lexp(H|D)lexp(H|D)可以最小化,则可以将式子(1)对H(x)H(x)求偏导数,即
令式子(2)为零,得到
从而得到,
这证明sign(H(x))sign(H(x))达到了最小贝叶斯最优错误率。换言之,若指数损失最小化,则分类错误率也将最小化,这说明指数损失函数是分类任务原本0/1损失函数的一致的替代函数,由于其具有良好的数学性质,因此用它替代0/1损失函数作为优化目标。
基学习器的权值αtαt的更新
当基学习器ht(x)ht(x)基于分布DtDt产生后,该基学习器的权重αtαt应使得αthtαtht最小化指数损失函数
上式中εt=Px~D(f(x)≠ht(x))εt=Px~D(f(x)≠ht(x))为加权误差,误差权值即为样本权值,为了最小化式子(4),将其对求偏导数并置零,得到
这样就得到了基学习器的权值更新公式。
训练集样本分布Dt(x)Dt(x)的更新
在获得基学习器ht−1(x)ht−1(x)后,样本分布将进行调整,使下一轮基学习器ht(x)ht(x)能纠正Ht−1Ht−1(集成了前t−1t−1个学习器后的集成学习器)的全部错误,即最小化
注意到f2(x)=h2t(x)=1f2(x)=ht2(x)=1,上式中e−f(x)ht(x)e−f(x)ht(x)经过泰勒展开【5】后得到
于是,理想的基学习器
式子(6)中Ex~D[e−f(x)Ht−1(x)]Ex~D[e−f(x)Ht−1(x)]是一个常数,令DtDt表示一个分布,即
根据数学期望的定理【4】,可以将式子(6)转化为
由f(x),ht(x)∈{−1,1}f(x),ht(x)∈{−1,1},有如下关系式
则理想学习器为
由此可见,理想的基学习器ht(x)ht(x)将在分布Dt(x)Dt(x)下最小化分类误差,因此ht(x)ht(x)应该基于分布Dt(x)Dt(x)来训练。由Dt(x)Dt(x)和Dt−1(x)Dt−1(x)的关系,可以得到
上式即为样本分布的更新公式。
Adaboost伪代码
参考资料
【1】《机器学习》周志华
【2】泰勒公式——百度百科
【3】数学期望——百度百科
【4】《机器学习实战》