十大机器学习算法-梯度提升决策树(GBDT)

简介

梯度提升决策树(GBDT)由于准确率高、训练快速等优点,被广泛应用到分类、回归合排序问题中。该算法是一种additive树模型,每棵树学习之前additive树模型的残差。许多研究者相继提出XGBoost、LightGBM等,又进一步提升了GBDT的性能。

基本思想

提升树-Boosting Tree

以决策树为基函数的提升方法称为提升树,其决策树可以是分类树或者回归树。决策树模型可以表示为决策树的加法模型。
f M ( x ) = ∑ m = 1 M T ( x ; Θ m ) f_{M}(x)=\sum_{m=1}^{M} T\left(x ; \Theta_{m}\right) fM(x)=m=1MT(x;Θm)
其中, T ( x ; θ m ) T\left(x ; \theta_{m}\right) T(x;θm) 表示决策树, θ m \theta_{m} θm表示树的参数, M M M为树的个数。

针对不同问题的提升树算法主要区别在于损失函数的不同。对于回归问题,使用的是平方损失函数;对于分类问题,使用的是指数损失函数;对二分类问题,提升树算法只需将AdaBoost的基分类器设置为二分类树即可,此时的提升树算法是AdaBoost算法的一个特例。以下主要关注回归问题的提升树算法。

对于回归问题的提升树算法,每一步拟合的是前一步的残差,具体为什么拟合的是残差看下面推导:
L ( y , f m ( x ) ) = L ( y , f m − 1 ( x ) + T ( x ; θ m ) ) = [ y − f m − 1 ( x ) − T ( x ; θ m ) ] 2 = [ r − T ( x ; θ m ) ] 2 \begin{aligned} L\left(y, f_{m}(x)\right) &=L\left(y, f_{m-1}(x)+T\left(x ; \theta_{m}\right)\right) \\=[y&-f_{m-1}(x)-T\left(x ; \theta_{m}\right) ]^{2} \\ &=\left[r-T\left(x ; \theta_{m}\right)\right]^{2} \end{aligned} L(y,fm(x))=[y=L(y,fm1(x)+T(x;θm))fm1(x)T(x;θm)]2=[rT(x;θm)]2
其中 r r r 代表残差。

回归问题中的提升树算法如下:

输入:训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … . , ( x N , y N ) } T=\left\{\left(x_{1}, y_{1}\right),\left(x_{2}, y_{2}\right), \ldots .,\left(x_{N}, y_{N}\right)\right\} T={ (x1,y1),(x2,y2),.,(xN,yN)} 其中$x_{i} \in X \subseteq R^{n} , , , y_{i} \in \gamma={-1,+1}$

输出:提升树 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 \cdots \mathrm{M}

你可能感兴趣的:(机器学习,GBDT,机器学习,梯度提升,提升树,梯度提升决策树)