树模型-GBDT

树模型

1、决策树 ID3,C4.5,CART
2、随机森林RF
3、Adaboost
4、GBDT
5、XGboost
6、孤立森林(异常检测)

四、GBDT

提升树,GBDT同样基于最小化第 m m 个学习器和前m1个学习器累加起来损失函数最小,提升树采用残差的思想来最小化损失函数,将投票权重放到学习器上,使得基学习器的权重都为1;GBDT将损失用一阶多项式拟合,基学习器拟合梯度,学习器的权重为一阶多项式的系数。

​ 在前面的Adaboost中,我们需要学习 M M 个基学习器,赋予不同的权重组合得到最后的强学习器。它是基于M个基学习器组合而成。而提升树中,直接将他们以“残差(损失函数的残差)”的形式累加起来,故也为加法模型,而且是逐步累加。

提升树模型如下:

fM(x)=m=1MT(x;θm) f M ( x ) = ∑ m = 1 M T ( x ; θ m )

其中, T(x,θm) T ( x , θ m ) 表示决策树, θm θ m 为决策树的参数, M M 为树的个数。

提升树优化过程:

输入:训练集{(xi,yi)}i=1N,损失函数 L(y,f(x)) L ( y , f ( x ) )

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

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

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

​ a)计算残差:

rmi=yifm1(xi)   ,{1,2,,N} r m i = y i − f m − 1 ( x i )       , { 1 , 2 , … , N }

​ b)拟合残差 rmi r m i 学习基学习器 T(x;θm) T ( x ; θ m ) ,训练集为 {(xi,rmi)}Ni=1 { ( x i , r m i ) } i = 1 N

​ c)更新模型: fm(x)=fm1(x)+T(x;θm) f m ( x ) = f m − 1 ( x ) + T ( x ; θ m )

3)得到最终的强学习器

fM(x)=m=1MT(x;θm) f M ( x ) = ∑ m = 1 M T ( x ; θ m )

可以看出,提升树本质与Adboost一致,也是最小化第 m m 个学习器和前m1个学习器组合的损失函数,不同的是提升树采用决策树作为基学习器,采用残差的思想使得每个决策树的投票权重为 1 1

GBDT

​ GBDT是基学习器采用的Decision Tree的Gradient Boosting方法。Gradient Boosting模型与Adaboost的形式一致,采用M个基学习器的线性组合得到最终模型:

fM(x)=mγmT(x;θm) f M ( x ) = ∑ m γ m T ( x ; θ m )

首先确定初始模型,定义初始基学习器 f0(x) f 0 ( x ) ,当模型迭代到第 m m 步时:
fm(x)=fm1(x)+γmT(x;θm)

通过最小化损失来确定参数 θm θ m 的值:
argminθmiL(yi,fm1(xi)+γmT(x;θm)) a r g min θ m ∑ i L ( y i , f m − 1 ( x i ) + γ m T ( x ; θ m ) )

这里有两种理解Gradient Boosting的方式,从优化角度可以理解是采用梯度下降算法, T T 表示负梯度方向,γm为步长。从模型角度我们可以理解为损失函数一阶多项式展开 γmT(x,θm)+fm1 γ m T ( x , θ m ) + f m − 1 ,而 T T 表示一阶信息,γm为系数。

优化角度,保证损失函数在递减:

L(yi,fm(xi))<L(yi,fm1(xi)) L ( y i , f m ( x i ) ) < L ( y i , f m − 1 ( x i ) )

为了使得损失函数不断减少,即梯度下降:
fm(xi)=fm1(xi)+γm(L(yi,fm1(xi))fm1(xi)) f m ( x i ) = f m − 1 ( x i ) + γ m ( − ∂ L ( y i , f m − 1 ( x i ) ) ∂ f m − 1 ( x i ) )

fm(x)=fm1(x)+γmT(x;θm) f m ( x ) = f m − 1 ( x ) + γ m T ( x ; θ m ) 代入上式有:
T(x;θm)=L(yi,fm1(xi))fm1(xi) T ( x ; θ m ) = − ∂ L ( y i , f m − 1 ( x i ) ) ∂ f m − 1 ( x i )

所以 Gradient Boosting 的算法流程如下:

输入:训练集 {(xi,yi)}Ni=1 { ( x i , y i ) } i = 1 N ,损失函数 L(y,f(x)) L ( y , f ( x ) )

输出: fM(x) f M ( x )

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

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

​ a)计算梯度:

rmi=[L(yi,f(xi))f(xi)]f(xi)=fm1(x)   ,{1,2,,N} r m i = [ − ∂ L ( y i , f ( x i ) ) ∂ f ( x i ) ] f ( x i ) = f m − 1 ( x )       , { 1 , 2 , … , N }

​ b)拟合梯度 rmi r m i 学习基学习器 T(x;θm) T ( x ; θ m ) ,训练集为 {(xi,rmi)}Ni=1 { ( x i , r m i ) } i = 1 N

​ c)根据梯度下降算法,计算学习器 γm γ m :

γm=argminγiL(yi,fm1(xi)+γT(x;θm)) γ m = a r g min γ ∑ i L ( y i , f m − 1 ( x i ) + γ T ( x ; θ m ) )

​ d)更新模型: fm(x)=fm1(x)+γmT(x;θm) f m ( x ) = f m − 1 ( x ) + γ m T ( x ; θ m )

3)得到最终的强学习器

fM(x)=m=1MγmT(x;θm) f M ( x ) = ∑ m = 1 M γ m T ( x ; θ m )

可以看出 Gradient Boosting 是一个不断基于残差弥补的模型,目标不断地减少Bais,而没有关注Variance。它不像随机森林的集成引入随机性减少Variance的思想。

下面考虑决策树为基学习器的Gradient Boosting的方法GBDT,其在GB基础上有两点值得一提:

​ 1)GBDT,采用决策树作为基函数将样本划分到固定数目 J J 个决策区间Rmj,j=1,2..J,m=1,2..M

​ 2)在决策树中决策函数采用指示函数 I(xRmj) I ( x ∈ R m j ) ,梯度与步长的积直接放到 γmj γ m j

下面给出GBDT回归和分类两个问题的算法流程

1)GBDT 回归

输入:训练集 {(xi,yi)}Ni=1 { ( x i , y i ) } i = 1 N xiRn,yR x i ∈ R n , y ∈ R ,损失函数 L(y,f(x)) L ( y , f ( x ) )

输出: fM(x) f M ( x )

1)初始时给出一个最优的偏置常数 c c f0(x)=c

f0(x)=argminciL(yi,c) f 0 ( x ) = a r g min c ∑ i L ( y i , c )

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

​ a)计算梯度:

rmi=[L(yi,f(xi))f(xi)]f(xi)=fm1(x)   ,{1,2,,N} r m i = [ − ∂ L ( y i , f ( x i ) ) ∂ f ( x i ) ] f ( x i ) = f m − 1 ( x )       , { 1 , 2 , … , N }

​ b)拟合梯度 rmi r m i 学习一个回归树 T(x;θm)=αI(xRmj) T ( x ; θ m ) = α I ( x ∈ R m j ) ,产生 J J 个决策区间Rmj,j=1,2..J

​ c)对于决策区间 j=1,2..J j = 1 , 2.. J ,计算 γmj γ m j :

γmj=argminγxiRmjL(yi,fm1(xi)+γmjI(xRmj)) γ m j = a r g min γ ∑ x i ∈ R m j L ( y i , f m − 1 ( x i ) + γ m j I ( x ∈ R m j ) )

​ d)更新模型: fm(x)=fm1(x)+Jj=1γmjI(xRmj) f m ( x ) = f m − 1 ( x ) + ∑ j = 1 J γ m j I ( x ∈ R m j )

3)得到最终的强学习器

fM(x)=m=1Mj=1JγmjI(xRmj) f M ( x ) = ∑ m = 1 M ∑ j = 1 J γ m j I ( x ∈ R m j )

2) GBDT分类

考虑 K K 分类问题,采用Softmax思想,将K类映射到 K K 维。第m个决策树的决策第 k k 维的值为fM,k(x),对输出进行Softmax归一化,可以得到 k k 类的概率为pm,k(x) K K 类的概率和kpm,k(x)=1,分类损失函数采用交叉熵损失。

pm,k(x)=exp(fm,k(x))Kl=1exp(fm,l(x)),   k=1,,K p m , k ( x ) = e x p ( f m , k ( x ) ) ∑ l = 1 K e x p ( f m , l ( x ) ) ,       k = 1 , … , K

似然函数为:
L(yi,fm(xi))=k=1K[fm,k(xi)]yik L ( y i , f m ( x i ) ) = ∏ k = 1 K [ f m , k ( x i ) ] y i k

对数损失函数为:
L(yi,fm(xi))=k=1Kyiklogfm,k(xi) L ( y i , f m ( x i ) ) = − ∑ k = 1 K y i k l o g f m , k ( x i )

由于Softmax将分类映射到 K K 维,对应的基分类器和损失函数都是K维。因此算法流程中负梯度方向也是一个 K K 维向量。

输入:训练集{(xi,yi)}i=1N xiRn,yR x i ∈ R n , y ∈ R ,损失函数 L(y,f(x)) L ( y , f ( x ) )

输出: fM(x) f M ( x )

1)初始时 f0,k(x)=0 f 0 , k ( x ) = 0

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

​ a)对决策树 fm1,k f m − 1 , k 进行Softmax归一化

pm1,k(x)=exp(fm1,k(x))Kl=1exp(fm1,l((x)),   k=1,,K p m − 1 , k ( x ) = e x p ( f m − 1 , k ( x ) ) ∑ l = 1 K e x p ( f m − 1 , l ( ( x ) ) ,       k = 1 , … , K

​ b)对 k=1,2..K k = 1 , 2.. K

​ ba)计算梯度

rik=L(yi,fm1(xi))fm1,k(xi)=yikpm1,k(xi),  i=1,2,N r i k = ∂ L ( y i , f m − 1 ( x i ) ) ∂ f m − 1 , k ( x i ) = y i k – p m − 1 , k ( x i ) ,     i = 1 , 2 , … N

​ bb)拟合梯度 rik r i k 学习第 m m 个决策树T(x;θm)=αI(xRmkj)在第 k k 维产生的J个决策区间 Rmkj,j=1,2..J R m k j , j = 1 , 2.. J
rik=L(yi,fm1(xi))fm1,k(xi)=yikpm1,k(xi),  i=1,2,N r i k = ∂ L ( y i , f m − 1 ( x i ) ) ∂ f m − 1 , k ( x i ) = y i k – p m − 1 , k ( x i ) ,     i = 1 , 2 , … N

​ bc)计算第 m m 颗树第k维在区间 Rmj R m j 的参数 γmkj γ m k j
γmkj=K1KxiRmkjrikxiRmkj|rik|(1|rik|),   j=1,2,..., γ m k j = K − 1 K ∑ x i ∈ R m k j r i k ∑ x i ∈ R m k j | r i k | ( 1 − | r i k | ) ,       j = 1 , 2 , . . . ,

​ bd)更新模型: fm,k(x)=fm1,k(x)+Jj=1γmkjI(xRmkj) f m , k ( x ) = f m − 1 , k ( x ) + ∑ j = 1 J γ m k j I ( x ∈ R m k j )

3)得到最终的强学习器

fM(x)=m=1Mj=1JγmjI(xRmj) f M ( x ) = ∑ m = 1 M ∑ j = 1 J γ m j I ( x ∈ R m j )

GBDT到此,可以看出Boosting的这些方法,都是前向分步加法模型,分类回归采用不同的损失函数,加法模型都是考虑学习 M M 模型来不断地减小损失函数,即第m个模型的学习是基于前 m1 m − 1 个模型组合起来最小化损失函数。Adboost是基于最小化损失函数在导数为 0 0 处取到,针对二分类问题导出样本系数,决策器权重系数,决策树。提升树是基于残差思想最小化损失函数,使得决策树的权重为1,GBDT采用一阶多项式来拟合残差,进而导出梯度提升的思想。GBDT中 γmTm γ m T m 存在冗余项,在GBDT中用决策树拟合梯度, γ γ 来确定步长。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值