Adaboost
Posted lalalatianlalu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Adaboost相关的知识,希望对你有一定的参考价值。
Adaboost是boost提升算法中的一种,Boosting算法是将“弱学习算法“提升为“强学习算法”的过程,主要思想是“三个臭皮匠顶个诸葛亮”。一般来说,找到弱学习算法要相对容易一些,然后通过反复学习得到一系列弱分类器,组合这些弱分类器得到一个强分类器。Boosting算法要涉及到两个部分,加法模型和前向分步算法。加法模型就是说强分类器由一系列弱分类器线性相加而成。一般组合形式如下:
其中,h(x;am) 就是一个个的弱分类器,am是弱分类器学习到的最优参数,βm就是弱学习在强分类器中所占比重,P是所有am和βm的组合。这些弱分类器线性相加组成强分类器。
前向分步就是说在训练过程中,下一轮迭代产生的分类器是在上一轮的基础上训练得来的。也就是可以写成这样的形式:
由于采用的损失函数不同,Boosting算法也因此有了不同的类型,AdaBoost就是损失函数为指数损失的Boosting算法。
Adaboost算法流程
Adaboost每次选择一个二分类算法,然后计算当前误差,将错误的样本的权值提高,分类正确的样本权值降低,这个算法有一个权重alpha作为这个分类算法最后的权重,然后再次迭代下一次算法模型,遇到m个算法模型或者分类误差率为0时退出算法。
AdaBoost算法的解释
AdaBoost还有一种解释,即可认为AdaBoost算法是模型为加法模型、损失函数为指数函数、学习算法为前向分布算法时的二类分类学习方法。
前向分布算法
加法模型 additive model
其中, 为基函数, 为基函数系数, 为基函数参数。
在给定训练数据及损失函数 的条件下,学习加法模型 成为经验风险极小化问题
学习加法模型,从前向后每一步只学习一个基函数及其系数,即每步只优化
前向分布算法 forward stagewise algorithm:
输入:训练数据集 ,损失函数 ;基函数集
输出:加法模型
1. 初始化
2. 对
2.1 极小化损失函数
得到参数
2.2 更新
3. 得到加法模型
定理:AdaBoost算法是前向分布加法算法的特例。这时模型是由基本分类器组成的加法模型,损失函数是指数函数。
证明:
加法模型等价于AdaBoost的最终分类器
由基本分类器 及其系数 组成, 。前向分布算法逐一学习基本函数,这一过程与AdaBoost算法逐一学习基本分类器的过程一致。下面证明前向分布算法的损失函数是指数损失函数(exponential loss function)
时,其学习的具体操作等价于AdaBoost算法学习的具体操作。
假设经过$m-1$轮迭代前向分布算法已经得到 :
在第 轮得到 和 .
目标是使前向算法得到的$alpha {m}$和$G{m}$使$f_{m}(x)$在训练数据集$T$上的指数损失最小,即:
可以表示成:
其中, ,因为 不依赖于 ,也不依赖于 。
首先求 ,进一步展开:
所以最小化 由下式得到:
之后我们求解 :
对 求导:
即得:
其中 是分类错误率:
原式 =
(e^α + e^(-α)) / (e^(-α)) = 1 / em
e^(2*α) = 1 / em - 1 = (1 - em) / em
这里的 与AdaBoost算法的 完全一致。
再看一下每一轮的权值更新,由:
以及 ,可得:
这与AdaBoost算法的样本权值的更新,只相差规范会因子,因此等价。
参考链接:
【1】https://www.cnblogs.com/ScorpioLu/p/8295990.html
【2】https://zhuanlan.zhihu.com/p/39972832
【3】《统计学习方法》李航
以上是关于Adaboost的主要内容,如果未能解决你的问题,请参考以下文章