梯度提升决策树(Gradient Boosting Decision Trees,GBDT)
提升树是以分类树或回归树为基本分类器的提升方法。 提升树被认为是统计学习 中性能最好的方法之一。
提升方法实际采用加法模型(即基函数的线性组合)与前向分步算法。 以决策树为基函数的提升方法称为提升树 (boosting tree)。 对分类问题决策树是二叉分类树, 对回归问题决策树是二叉回归树。
---------------------------------------------------------------------------------------------------------------------------------------
输入:线性可分训练数据集T={(x1,y1),(x2,y2),…,(xN,yN)}T= \{(x_1,y_1), (x_2,y_2),…, (x_N,y_N)\}T={(x1,y1),(x2,y2),…,(xN,yN)}
其中,xi∈X=Rn,yi∈Y,i=1,2,…,Nx_i∈X=R^n,y_i∈Y, i = 1,2,…,Nxi∈X=Rn,yi∈Y,i=1,2,…,N;弱学习算法
输出:提升树fM(x)f_M(x)fM(x)
优化问题:
不同问题的提升树学习算法,其主要区别在于使用的损失函数不同。回归问题:平方误差损失函数;分类问题:指数损失函数。
fm−1(x)f_{m-1}(x)fm−1(x) 为当前模型,通过经验风险极小化确定下一颗决策树的参数Θm\Theta_mΘm :
Θ^m=arg minΘm∑i=1NL(yi,fm(x))→Θ^m=arg minΘm∑i=1NL(yi,fm−1(xi)+T(x;Θm))
\hat\Theta_m=arg\ \underset{\Theta_m}{min}\sum_{i=1}^NL(y_i,f_m(x))\\ \\
→\hat\Theta_m=arg\ \underset{\Theta_m}{min}\sum_{i=1}^NL(y_i,f_{m-1}(x_i)+T(x;\Theta_m))
Θ^m=arg Θmmini=1∑NL(yi,fm(x))→Θ^m=arg Θmmini=1∑NL(yi,fm−1(xi)+T(x;Θm))
回归问题:
Θ^m=arg minΘm∑i=1N(yi−fm(x))2→Θ^m=arg minΘm∑i=1N(yi−fm−1(x)−T(x;Θm))2→Θ^m=arg minΘm∑i=1N(r−T(x;Θm))2,r=y−fm−1(x)
\hat\Theta_m=arg\ \underset{\Theta_m}{min}\sum_{i=1}^N(y_i-f_{m}(x))^2\\ \\
→\hat\Theta_m=arg\ \underset{\Theta_m}{min}\sum_{i=1}^N(y_i-f_{m-1}(x)-T(x;\Theta_m))^2\\ \\
→\hat\Theta_m=arg\ \underset{\Theta_m}{min}\sum_{i=1}^N(r-T(x;\Theta_m))^2,r=y-f_{m-1}(x)
Θ^m=arg Θmmini=1∑N(yi−fm(x))2→Θ^m=arg Θmmini=1∑N(yi−fm−1(x)−T(x;Θm))2→Θ^m=arg Θmmini=1∑N(r−T(x;Θm))2,r=y−fm−1(x)
分类问题:
Θ^m=arg minΘm∑i=1Nexp(−yifm(x))→Θ^m=arg minΘm∑i=1Nexp[−yi(fm−1(x)+T(x;Θm))]
\hat\Theta_m=arg\ \underset{\Theta_m}{min}\sum_{i=1}^Nexp(-y_if_m(x))\\ \\
→\hat\Theta_m=arg\ \underset{\Theta_m}{min}\sum_{i=1}^Nexp[-y_i(f_{m-1}(x)+T(x;\Theta_m))]
Θ^m=arg Θmmini=1∑Nexp(−yifm(x))→Θ^m=arg Θmmini=1∑Nexp[−yi(fm−1(x)+T(x;Θm))]
---------------------------------------------------------------------------------------------------------------------------------------
提升树模型可以表示为决策树的加法模型:
fM(x)=∑m=1MT(x;Θm)
f_M(x)=\sum_{m=1}^MT(x;\Theta_m)
fM(x)=m=1∑MT(x;Θm)
其中,T(x;Θm)T(x;\Theta_m)T(x;Θm)表示决策树,Θm\Theta_mΘm为决策树的参数,M为树的个数。
首先确定初始提升树f0(x)=0f_0(x)=0f0(x)=0,第m步的模型是:
fm(x)=fm−1(x)+T(x;Θm)
f_{m}(x)=f_{m-1}(x)+T(x;\Theta_m)
fm(x)=fm−1(x)+T(x;Θm)
回归问题的提升树
已知一个训练数据集T={(x1,y1),(x2,y2),…,(xN,yN)}T= \{(x_1,y_1), (x_2,y_2),…, (x_N,y_N)\}T={(x1,y1),(x2,y2),…,(xN,yN)}其中,xi∈X=Rn,yi∈Y,i=1,2,…,Nx_i∈X=R^n,y_i∈Y, i = 1,2,…,Nxi∈X=Rn,yi∈Y,i=1,2,…,N;X 为输入空间,Y 为输出空间。
如果将输入空间划分为J 个互不相交的区域R1,R2,...,RJR_1,R_2,...,R_JR1,R2,...,RJ ,并且在每个区域上确定输出的常量cjc_jcj ,那么树可以表示为:
T(x;Θ)=∑j=1JcjI(x∈Rj)
T(x;\Theta)=\sum_{j=1}^Jc_jI(x∈R_j)
T(x;Θ)=j=1∑JcjI(x∈Rj)
其中,参数Θ={(R1,c1),(R2,c2),...,(RJ,cJ)}\Theta=\{(R_1,c_1),(R_2,c_2),...,(R_J,c_J)\}Θ={(R1,c1),(R2,c2),...,(RJ,cJ)} 表示树的区域划分和各个区域上的常数。J 是回归树的复杂度即叶节点个数。
回归问题的前向分布算法
f0(x)=0fm(x)=fm−1(x)+T(x;Θm), m=1,2,...,MfM(x)=∑m=1MT(x;Θm) f_0(x)=0\\ \\ f_m(x)=f_{m-1}(x)+T(x;\Theta_m),\ \ \ m=1,2,...,M\\ \\ f_M(x)=\sum_{m=1}^MT(x;\Theta_m) f0(x)=0fm(x)=fm−1(x)+T(x;Θm), m=1,2,...,MfM(x)=m=1∑MT(x;Θm)
第m步时,当前模型是fm−1(x)f_{m-1}(x)fm−1(x) ,要求解以下的式子(回归问题采用均方误差损失函数)得到Θ^m\hat\Theta_mΘ^m:
Θ^m=arg minΘm∑i=1N(yi−fm(x))2→Θ^m=arg minΘm∑i=1N(yi−fm−1(x)−T(x;Θm))2→Θ^m=arg minΘm∑i=1N(r−T(x;Θm))2,r=y−fm−1(x)
\hat\Theta_m=arg\ \underset{\Theta_m}{min}\sum_{i=1}^N(y_i-f_{m}(x))^2\\ \\
→\hat\Theta_m=arg\ \underset{\Theta_m}{min}\sum_{i=1}^N(y_i-f_{m-1}(x)-T(x;\Theta_m))^2\\ \\
→\hat\Theta_m=arg\ \underset{\Theta_m}{min}\sum_{i=1}^N(r-T(x;\Theta_m))^2,r=y-f_{m-1}(x)
Θ^m=arg Θmmini=1∑N(yi−fm(x))2→Θ^m=arg Θmmini=1∑N(yi−fm−1(x)−T(x;Θm))2→Θ^m=arg Θmmini=1∑N(r−T(x;Θm))2,r=y−fm−1(x)
算法流程:
输入:线性可分训练数据集T={(x1,y1),(x2,y2),…,(xN,yN)}T= \{(x_1,y_1), (x_2,y_2),…, (x_N,y_N)\}T={(x1,y1),(x2,y2),…,(xN,yN)}
其中,xi∈X=Rn,yi∈Y,i=1,2,…,Nx_i∈X=R^n,y_i∈Y, i = 1,2,…,Nxi∈X=Rn,yi∈Y,i=1,2,…,N;弱学习算法
输出:提升树fM(x)f_M(x)fM(x)
(1)初始化f0(x)=0f_0(x)= 0f0(x)=0。
(2)对m=1,2,…,M。
(a)按照T(x;Θ)=∑j=1JcjI(x∈Rj)T(x;\Theta)=\sum_{j=1}^Jc_jI(x∈R_j)T(x;Θ)=∑j=1JcjI(x∈Rj)计算残差:
rmi=yi−fm−1(xi), i=1,2,...,N
r_{mi}=y_i-f_{m-1}(x_i),\ \ \ i=1,2,...,N
rmi=yi−fm−1(xi), i=1,2,...,N
(b)拟合残差rmir_{mi}rmi学习一个回归树,得到T(x;Θm)T(x;\Theta_m )T(x;Θm)
(c)更新fm(x)=fm−1(x)+T(x;Θm)f_m(x)=f_{m-1}(x)+T(x;\Theta_m)fm(x)=fm−1(x)+T(x;Θm)
(3)得到回归问题的提升树
fM(x)=∑m=1MT(x;Θm)
f_M(x)=\sum_{m=1}^MT(x;\Theta_m)
fM(x)=m=1∑MT(x;Θm)
梯度提升
提升树算法利用加法模型与前向分布算法实现学习的优化过程。当损失函数时平方损失和指数损失函数的时候,每一步的优化时很简单的。但是对于一般损失函数而言,往往每一步优化都不是容易的。
其关键是利用损失函数的负梯度在当前模型的值
−[∂L(y,f(xi))∂f(xi)]f(x)=fm−1(x)
-[\frac{\partial L(y,f(x_i))}{\partial f(x_i)}]_{f(x)=f_{m-1}(x)}
−[∂f(xi)∂L(y,f(xi))]f(x)=fm−1(x)
作为回归问题提升树算法中的残差的近似值,拟合一个回归树。
算法流程:
输入:线性可分训练数据集T={(x1,y1),(x2,y2),…,(xN,yN)}T= \{(x_1,y_1), (x_2,y_2),…, (x_N,y_N)\}T={(x1,y1),(x2,y2),…,(xN,yN)}
其中,xi∈X=Rn,yi∈Y,i=1,2,…,Nx_i∈X=R^n,y_i∈Y, i = 1,2,…,Nxi∈X=Rn,yi∈Y,i=1,2,…,N;损失函数L(y,f(x))L(y,f(x))L(y,f(x)) ;
输出:提升树f^(x)\hat f(x)f^(x)
(1)初始化f0(x)=argminc∑i=1NL(yi,c)f_0(x)= arg \underset{c}{min}\sum_{i=1}^NL(y_i,c)f0(x)=argcmin∑i=1NL(yi,c)。
(2)对m=1,2,…,M。
(a)对i=1,2,…,N,计算:
rmi=−[∂L(y,f(xi))∂f(xi)]f(x)=fm−1(x)
r_{mi}=-[\frac{\partial L(y,f(x_i))}{\partial f(x_i)}]_{f(x)=f_{m-1}(x)}
rmi=−[∂f(xi)∂L(y,f(xi))]f(x)=fm−1(x)
(b)拟合残差rmir_{mi}rmi学习一个回归树,得到第m颗树的叶节点区域Rmj,j=1,2,...,JR_{mj},j=1,2,...,JRmj,j=1,2,...,J
(c)对j=1,2,…,J,计算
cmj=arg minc∑xi∈RmjL(yi,fm−1(xi)+c)
c_{mj}=arg\ \underset{c}{min}\sum_{x_i∈R_{mj}}L(y_i,f_{m-1}(x_i)+c)
cmj=arg cminxi∈Rmj∑L(yi,fm−1(xi)+c)
(d)更新fm(x)=fm−1(x)+∑j=1JcmjI(x∈Rmj)f_m(x)=f_{m-1}(x)+\sum_{j=1}^Jc_{mj}I(x∈R_{mj})fm(x)=fm−1(x)+∑j=1JcmjI(x∈Rmj)
(3)得到回归树
f^(x)=fM(x)=∑m=1M∑j=1JcmjI(x∈Rmj)
\hat f(x)=f_M(x)=\sum_{m=1}^M\sum_{j=1}^Jc_{mj}I(x∈R_{mj})
f^(x)=fM(x)=m=1∑Mj=1∑JcmjI(x∈Rmj)
本文详细介绍了梯度提升决策树(GBDT)算法。提升树是以分类树或回归树为基本分类器的提升方法,采用加法模型与前向分步算法。文中阐述了回归问题的提升树及前向分布算法,还介绍了梯度提升算法,利用损失函数的负梯度近似残差来拟合回归树。
&spm=1001.2101.3001.5002&articleId=135479070&d=1&t=3&u=b9afb3238d9c4f3487313cd007b6075f)
302

被折叠的 条评论
为什么被折叠?



