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