提升树与梯度提升树 Boosting Tree & Gradient Boosting Decision Tree(GBDT)

提升树(Boosting Tree)
以决策树为基函数的提升方法称为提升树。提升树对分类问题,提升树是二叉分类树,对回归问题提升树是二叉回归树。

提升树方法实际采用的是加法模型(即基函数的线性组合)与前向分步算法,因此提升树模型可以表示为决策树的加法模型:

ŷ i=fK(x)=k=1KT(x;θk)=k=1Kfk(x;θk) y ^ i = f K ( x ) = ∑ k = 1 K T ( x ; θ k ) = ∑ k = 1 K f k ( x ; θ k )
其中 T(x;θk) T ( x ; θ k ) 表示某一颗决策树, θk θ k 是决策树的参数, K K 为决策树的个数

提升树算法过程:
假设有数据集 T={(x1,y1),(x2,y2),...,(xN,yN)} T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) }
其中 xiXRn,yiYR x i ∈ X ⊆ R n , y i ∈ Y ⊆ R
输出提升树: fK(x) f K ( x )

1、初始化 f0(x)=0 f 0 ( x ) = 0
2、对 k=1,2,...,K k = 1 , 2 , . . . , K 依次进行循环迭代:

  1. 计算后一颗树对前一颗树的残差:
    rki=yifk1(xi),i=1,2,...,N r k i = y i − f k − 1 ( x i ) , i = 1 , 2 , . . . , N
  2. 拟合残差学习一个回归树,得到 T(x,θk) T ( x , θ k )
  3. 更新 fk(x)=fk1(x)+T(x,θk) f k ( x ) = f k − 1 ( x ) + T ( x , θ k )
    3、通过迭代最终得到回归提升树
    fK(x)=k=1KT(x,θk) f K ( x ) = ∑ k = 1 K T ( x , θ k )

GBDT
提升树利用加法模型与前向分布算法实现学习的优化过程在损失函数式平方损失和指数损失时,每一步优化是很简单的。

但对一般损失函数而言,往往每一步优化并不那么容易。

Freidman提出了梯度提升算法,其关键是利用损失函数的负梯度在当前模型的值:

[L(y,f(xi))f(xi)]f(x)=fm1(x) − [ ∂ L ( y , f ( x i ) ) ∂ f ( x i ) ] f ( x ) = f m − 1 ( x )
其中 L(y,f(xi)) L ( y , f ( x i ) ) 是自定义的损失函数, y y 是残差, f(x) f ( x ) 是迭代而成的决策树。

作为回归问题提升树算法中残差的近似值来拟合一颗回归树。

你可能感兴趣的:(提升树与梯度提升树 Boosting Tree & Gradient Boosting Decision Tree(GBDT))