GBDT学习整理

参考资料:

《机器学习方法》 李航

https://zhuanlan.zhihu.com/p/260959204

一、集成学习

集成学习是一种通过训练若干个弱学习器(个体学习器),通过一定的结合策略,将这些弱学习器结合为强学习器的学习方式,分为以下两类:

1. 同质集成,即集成中仅包含同种类型的个体学习器。“决策树集成”中仅包含决策树,“神经网络集成”仅包含神经网络。此时,个体学习器又称为基学习器(base learner),相应的学习算法称为基学习算法(base learning algorithm)。

同质集成按照个体学习器之间是否存在依赖关系可以分为两类:

(1)个体学习器之间存在强依赖关系,一系列的个体学习器需要串行生成,如boosting系列算法;

(2)个体学习器之间不存在强依赖关系,一系列的个体学习器可以并行生成,如bagging系列算法。

2. 异质集成,即个体学习器由不同的算法生成。此时,个体学习器又称为组件学习器。

集成学习中对个体学习器的要求是“好而不同”,即个体学习器不能太差,个体学习器之间也要有差异。然而个体学习器的准确性和多样性之间存在trade-off,准确性很高之后,如果增加学习器的多样性,就会牺牲一定的准确性。

二、目前常见的集成学习框架

1. bagging:从训练集中子抽样,构成每个基模型需要的子训练集。

2. boosting:基模型按照次序一一训练,每次用于训练基模型的数据按照某种策略进行转化,最后对所有基模型的预测结果进行线性综合。

3. stacking:将训练好的所有基模型对训练集进行预测,第j个基模型对第i个训练样本的预测值将作为新的训练集中第i个训练样本的第j个特征,然后基于新的训练集进行训练。在预测时,也要通过基模型得到新的测试集,然后对测试集进行预测。

 三、详细了解boosting

在分类问题中,一个弱分类器的分类性能只比随机选择要好一点。boosting通过迭代的方式将弱分类器组合成强分类器,步骤如下:

(1)弱学习器对每个观测点都有相同的权重;

(2)如果第1个弱学习器在某个点预测错误,则该点在下一次训练弱学习器时有更高的权重;

(3)重复(2),直到达到预定的学习器数量或者预定的预测精度。

boosting的底层可以是任何算法,其中最著名的算法是(1)AdaBoost(2)GBM(Gradient Boosting Machine)(3)XGBoost

boosting多通过改变训练数据的权值分布,针对不同的训练分布学习一系列弱学习器。待解决的问题是:(1)在每轮训练中,如何改变训练数据的权值分布?(2)如何将弱学习器组合为强学习器?

1. AdaBoost

针对问题(1),AdaBoost会提高前一轮被弱学习器错误分类的样本的权值,降低正确分类样本的权值,下一轮训练中弱学习器就会更关注没有被正确分类的样本。

针对问题(2),AdaBoost会加大误差小的学习器的权重,使其在综合表决时起到更大的作用,同时减小误差大的学习器的权重。

AdaBoost算法步骤参见李航的《机器学习方法》,其中明确了样本权重和分类器权重的计算方法。AdaBoost不改变训练数据的取值,改变的是训练数据的权值分布,使得训练数据在每个基本学习器的学习过程中起到不同的作用。

AdaBoost最终分类器的训练误差具有上界。它的另一个解释是,可以认为它是模型为加法模型,损失函数为指数函数,学习算法为前向分步算法时的二类分类学习方法。

  • 加法模型:$f(x)=\sum_{m=1}^M\beta_mb(x;\gamma_m)$\beta_m是系数,b(x;\gamma_m)是基函数;
  • 前向分步算法:从前向后,每一步只学习一个基函数及其系数,逐步逼近优化目标。

2. 提升树

提升树是以分类树或回归树作为基本分类器的boosting,是机器学习中性能最好的方法之一。分类问题的提升树基函数为二叉分类树,回归问题的提升树基函数为二叉回归树。提升树模型实际上就是决策树的加法模型:

f_{M}(x)=\sum _{i=1}^{M}T(x;{\theta}_M)

树模型的线性组合可以很好地拟合训练数据的输入和输出之间的复杂关系。

对于二分类问题,将AdaBoost算法中的基本分类器设置为二叉分类树即可。对于回归问题,提升树的前向分步算法的每一步拟合上一步得到的残差:

f_m(x) =f_{m-1}(x)+T(x;\theta_m)

 采用平方误差损失函数:

L(y,f(x))=(y-f(x))^2 =(y-f_{m-1}(x)-T(x;\theta_m))^2

=(r-T(x;\theta_m))^2

3. 梯度提升

当损失函数是一种规范的形式(如平方损失、指数损失),前向分步算法的每一步优化都比较容易;但是对于一般形式的损失函数,优化时难以达到统一的形式,比较困难,此时可以使用Freidman提出的梯度下降法。此时,将损失函数在当前模型的负梯度作为残差的近似值进行拟合:

-[\frac{\partial L(y,f(x_i))}{\partial f(x_i)}]_{f(x)=f_{m-1}(x)}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值