提升方法之AdaBoost算法
作为非数学专业出身看到密密麻麻的数学公式刚开始真的是非常头疼。算法的物理逻辑的时候尚能理解,但是涉及到具体的数学公式实现就开始懵逼了:为什么要用这个公式,这个公式是怎么推到的,这个公式达到什么样的效果?
这里结合自己的理解和画图,用最直白的语言对每个公式作用进行解剖。
一、AdaBoost核心概念总结
提升方法是将弱学习算法提升为强学习算法的统计学习方法。在分类学习中,提升方法通过反复修改训练数据的权值分布,构建一系列基本分类器(弱分类器),并将这些基本分类器线性组合,构成一个强分类器。代表性的提升方法是AdaBoost算法。(重点是:更新分类器的参数和训练集的权重见下2)
AdaBoost模型是弱分类器的线性组合:
f(x)=∑Mm=1αmGm(x) f ( x ) = ∑ m = 1 M α m G m ( x )- M M 表示该提升树共有 个弱分类器组成
- Gm(x) G m ( x ) 表示第 m m 个弱分类器
- 为第 m m 个弱分类器的参数(反应该分类器的重要性)
AdaBoost算法的特点是通过迭代每次学习一个基本分类器。每次迭代中,核心思想是:
提高那些被前一轮分类器错误分类数据的权值,而降低那些被正确分类的数据的权值
。最后,AdaBoost将基本分类器的线性组合作为强分类器,其中给分类误差率小的基本分类器以大的权值,给分类误差率大的基本分类器以小的权值
。- AdaBoost的训练误差分析表明,AdaBoost的每次迭代可以减少它在训练数据集上的分类误差率,这说明了它作为提升方法的有效性。(每次迭代误差递减且误差 )
- AdaBoost算法的一个解释是该算法实际是前向分步算法的一个实现。在这个方法里,
模型是加法模型,损失函数是指数损失,算法是前向分步算法时的二分类学习方法
。每一步中极小化损失函数。 - 提升树是以分类树或回归树为基本分类器的提升方法。提升树被认为是统计学习中最有效的方法之一。
AdaBoost是一种典型的提升树算法。
通过上面的总结我们看到,AdaBoost是一个神奇的算法,以精妙的方式通过更新数据集的权重以及各个弱分类器的参数组合成一个强分类器。那么它具体是怎么做到的呢?
二、AdaBoost算法推导
输入:训练数据集 T=(x1,y1),(x2,y2),...,(xN,yN) T = ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) ,其中 xi∈X⊆Rn,yi∈Y={ −1,1} x i ∈ X ⊆ R n , y i ∈ Y = { − 1 , 1 } ,弱学习算法 Gm(x) G m ( x ) ;
输出:最终强化算法分类器 G(x) G ( x )
(1)初始化训练数据总和为1的权值分布:(初始权重为归一化后的均值既 1N 1 N )
(2)对 m=1,2,...M m = 1 , 2 , . . . M :(弱分类器的个数)
(a)使用具有权值分布的 Dm D m 的训练数据集学习,得到基本分类器:(数据集 X X 到{-1,1}的映射)