15、集成学习——GBDT算法

1 GBDT概述

梯度提升树(GBDT,Gradient Boosting Decison Tree),同为Boosting家族的一员,它和Adaboost有很大的不同。Adaboost 是利用前一轮弱学习器的误差率来更新训练集的权重,这样一轮轮的迭代下去,简单的说是Boosting框架+任意基学习器算法+指数损失函数

GBDT通过多轮迭代,每轮迭代产生一个弱分类器,每个分类器在上一轮分类器的残差基础上进行训练。对弱分类器的要求一般是足够简单,并且是低方差和高偏差的。训练的过程是通过降低偏差来不断提高最终分类器的精度

GBDT由三部分构成:回归树(Regression Decistion Tree,DT)、GB(Gradient Boosting)和Shrinkage(衰减)

回归树(Regression Decistion Tree, DT):无论是处理回归问题还是二分类以及多分类,GBDT使用的决策树通通都是都是CART回归树。因为GBDT每次迭代要拟合的是梯度值,是连续值所以要用回归树。

梯度提升树(Grandient Boosting):是提升树(Boosting Tree)的一种改进算法。假如有个人30岁,我们首先用20岁去拟合,发现损失有10岁;我们去拟合损失,拟合的数值为6岁,发现差距还有4岁,第三轮我们用3岁拟合剩下的差距,差距就只有1岁了。如果我们的迭代轮数还没有完,可以继续迭代下面,每一轮迭代,拟合的岁数误差都会减小。最后将每次拟合的岁数加起来便是模型输出的结果。

在这里插入图片描述

衰减(Shrinkage):每次走一小步逐渐逼近结果,要比每次迈一大步很快逼近结果的方式更容易避免过拟合。即模型不完全信任每一个残差树,认为每颗树只“学习”到一部分预测信息,所以在累加的时候只累加一小部分,通过多棵树的迭代就可以弥补不足。

迭代决策树和随机森林的区别:

  • 随机森林使用抽取不同的样本构建不同的子树,也就是说第 m m m棵树的构建和前 m − 1 m-1 m1棵树的结果是没有关系
  • 迭代决策树在构建子树的时候,使用之前构建子树结果后形成的残差作为输入数据构建下一个子树;然后最终预测的时候按照子树构建的顺序进行预测,并将预测结果相加

2 回归树生成算法(DT)

输入:训练数据集 D D D
输出:回归树 f ( x ) = ∑ m = 1 M c m I ( x ∈ R m ) f(x)=\sum_{m=1}^M {c}_mI(x \in R_m) f(x)=m=1McmI(xRm)

在训练数据集所在的输入空间中 , 递归地将每个区域划分为两个子区域并决定每个子区域上的输出值,构建二叉决策树:

(1) 选择最优切分变量 x ( j ) x^{(j)} x(j) 与切分点 s s s , 求解
min ⁡ j , s [ min ⁡ c 1 ∑ x i ∈ R 1 ( j , s ) ( y i − c 1 ) 2 + [ min ⁡ c 2 ∑ x i ∈ R 2 ( j , s ) ( y i − c 2 ) 2 ] \min \limits_{j,s} [\min \limits_{c_1} \sum_{x_i \in R_1(j,s)}(y_i-c_1)^2+[\min \limits_{c_2} \sum_{x_i \in R_2(j,s)}(y_i-c_2)^2] j,smin[c1minxiR1(j,s)(yic1)2+[c2minxiR2(j,s)(yic2)2]
遍历变量 x ( j ) x^{(j)} x(j) , 对固定的切分变量 x ( j ) x^{(j)} x(j) 扫描切分点 s s s ,选择使上式达到最小值的对 ( j , s ) (j, s) (j,s)

(2) 用选定的对 ( j , s ) (j, s) (j,s)划分区域并决定相应的输出值:
R 1 ( j , s ) = { x ∣ x ( j ) ≤ s } , R 2 ( j , s ) = { x ∣ x ( j ) > s } c ^ m = 1 N m ∑ x i ∈ R m ( j , s ) y i ,         x i ∈ R m , m = 1 , 2 R_1(j,s)=\{ x|x^{(j)}\le s\}, R_2(j,s)=\{ x|x^{(j)}> s\}\\ \hat{c}_m=\frac{1}{N_m}\sum_{x_i \in R_m(j,s)}y_i,\ \ \ \ \ \ \ x_i \in R_m,m=1,2 R1(j,s)={ xx(j)s},R2(j,s)={ xx(j)>s}c^m=Nm1xiRm(j,s)yi,       xiRm,m=1,2
(3) 继续对两个子区域调用步骤 (1), (2) ,直至满足停止条件 。

(4) 将输入空间划分为 M M M 个区域 R 1 , R 2 , … , R M R_1,R_2,…,R_M R1,R2,,RM,生成决策树:
f ( x ) = ∑ m = 1 M c ^ m I ( x ∈ R m ) f(x)=\sum_{m=1}^M {\hat{c}}_mI(x \in R_m) f(x)=m=1Mc^mI(xRm)

3 Gradient Boosting:拟合负梯度

梯度提升树(Grandient Boosting)是提升树(Boosting Tree)的一种改进算法,所以在讲梯度提升树之前先来说一下提升树。

提升树算法:

  • 输入:训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } T=\{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\} T={(x1,y1),(x2,y2),...,(xN,yN)}

  • 输出:提升树 f M ( x ) f_M(x) fM(x)

  • (1)初始化 f 0 ( x ) = 0 f_0(x)=0 f0(x)=0

  • (2)对 m = 1 , 2 , . . . , M m=1,2,...,M m=1,2,...,M

    • a. 计算残差 r
  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

healed萌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值