本文是综合了之前的以往多个笔记汇总而成,内容较长。感兴趣的建议收藏用到时随时翻阅内容包含:
若有遗漏错误之处请反馈修改,感激不尽
一、Boosting基本概念
二、前向分步加法模型
1. 加法模型
2. 前向分步算法
三、AdaBoost
1. 算法解析
2. 模型构建
3. 算法缺点
四、二叉分类树
五、回归分类树
1. 算法解析
2. 模型构建
六、梯度提升树(GBDT)
1. 算法解析
2. 模型构建
七、XGBoost
1. 原理详解
2. 目标函数
3. 学习过程
4. 损失函数
5. 正则化
6. 决策树的构建
7. 流程步骤
8. 优缺点
八、总结
1. Boosting家族
2. AdaBoost
3. 回归提升树和AdaBoost
4. GBDT和回归提升树
5. XGBoost和GBDT
6. 参考文献
提升(Boosting)是集成学习方法里的一个重要方法,其主要思想是将弱分类器组装成一个强分类器。在 PAC(概率近似正确)学习框架下,则一定可以将弱分类器组装成一个强分类器。
提升树模型实际采用加法模型(即基函数的线性组合)与前向分步算法,以决策树为基函数的提升方法称为提升树(Boosting Tree)。
对分类问题决策树是二叉分类树,对回归问题决策树是二叉回归树。
提升树模型可以表示为决策树的加法模型:
不同问题的提升树学习算法,其主要区别在于损失函数不同。平方损失函数常用于回归问题,用指数损失函数用于分类问题,以及绝对损失函数用于决策问题。
由于树的线性组合可以很好的拟合训练数据,即使数据中的输入和输出之间的关系很复杂也是如此,所以提升树是一个高功能的学习算法。
一、基本概念
提升(Boosting)方法是一类应用广泛且非常有效的统计学习方法。
它基于这样一种思想:对于一个复杂任务来说,将多个专家的判断进行适当的综合所得出的判断,要比其中任何一个专家单独的判断好。实际上,就是“三个臭皮匠顶个诸葛亮”的道理。
强可学习:如果存在一个多项式的学习算法能够学习它,并且正确率很高,那么就称这个概念是强可学习的
弱可学习:如果存在一个多项式的学习算法能够学习它,学习的正确率仅比随机猜测略好,那么就称这个概念是弱可学习的
AdaBoost算法:那么如何将弱学习算法提升为强学习算法呢?关于提升方法的研究很多,有很多算法被提出。最具代表性的是AdaBoost算法(AdaBoost algorithm)
Boosting算法的两个核心问题
在每一轮如何改变训练数据的权值或概率分布
通过提高那些在前一轮被弱分类器分错样例的权值,减小前一轮分对样例的权值,来使得分类器对误分的数据有较好的效果。
。如何将弱分类器组合成一个强分类器
通过加法模型将弱分类器进行线性组合,比如 AdaBoost 通过加权多数表决的方式,即增大错误率小的分类器的权值,同时减小错误率较大的分类器的权值。
。
AdaBoost的巧妙之处就在于它将这些想法自然且有效地实现在一种算法里。
AdaBoost算法是损失函数为指数函数时的Boosting算法
二、前向分步加法模型(Forward Stagewise Additive Modeling)
1. 加法模型
(形为
的模型为加法模型)
2. 前向分步算法
在给定训练数据及损失函数 L(y,f(x)) L ( y , f ( x ) ) 的条件下,学习加法模型 f(x) f ( x ) 称为经验风险极小化,即损失函数极小化的问题:
通常这是一个复杂的优化问题。前向分布算法(forward stagwise algorithm)求解这一优化问题的思路是:因为学习的是加法模型,如果能够从前向后,每一步只学习一个基函数及其系数,逐步逼近优化目标函数式 f(x)=∑Mm=1βmb(x;γm) f ( x ) = ∑ m = 1 M β m b ( x ; γ m ) ,那么就可以简化优化的复杂度。
具体地,每步只需优化如下损失函数:
前向分布算法步骤如下:
输入:训练数据集 D=(x1,y1),(x2,y2),(x3,y3),...,(xN,yN) D = ( x 1 , y 1 ) , ( x 2 , y 2 ) , ( x 3 , y 3 ) , . . . , ( x N , y N ) ;损失函数 L(y,f(x)) L ( y , f ( x ) ) ;基函数集 (β(x;γ)) ( β ( x ; γ ) ) ;
输出:加法模型 f(x) f ( x )(1)初始化 f0(x)=0 f 0 ( x ) = 0
(2)对于 k=1,2,...,K k = 1 , 2 , . . . , K
(a)极小化损失函数,得到 βm,γm β m , γ m :