GBDT
一、概述
梯度提升(Gradient boosting)是一种用于回归、分类和排序任务的机器学习技术1,属于Boosting算法族的一部分。Boosting是一族可将弱学习器提升为强学习器的算法,属于集成学习(ensemble learning)的范畴。Boosting方法基于这样一种思想:对于一个复杂任务来说,将多个专家的判断进行适当的综合所得出的判断,要比其中任何一个专家单独的判断要好。通俗地说,就是“三个臭皮匠顶个诸葛亮”的道理。梯度提升同其他boosting方法一样,通过集成(ensemble)多个弱学习器,通常是决策树,来构建最终的预测模型。
GBDT中的树是回归树(不是分类树),GBDT用来做回归预测,调整后也可以用于分类。
二、回归树
回归树(Regression Decision Tree),总体流程类似于分类树,区别在于,回归树的每一个节点都会得一个预测值,该预测值等于属于这个节点的所有样本的平均值。分枝时穷举每一个feature的每个阈值找最好的分割点,但衡量最好的标准不再是最大熵,而是最小化平方误差。也就是被预测出错的数量越多,错的越离谱,平方误差就越大,通过最小化平方误差能够找到最可靠的分枝依据。分枝直到每个叶子节点上样本特征都唯一或者达到预设的终止条件(如叶子个数上限),若最终叶子节点上样本特征不唯一,则以该节点上所有样本的平均做为该叶子节点的预测值。
回归树的生成方法如下:
- 输入:训练数据集 D D D
- 输出:回归树 f ( x ) f(x) f(x)
在训练数据集所在的输入空间中,递归地将每个区域划分为两个子区块并决定每个子区域上的输出值,构建二叉决策树:
1.选择最优切分变量 j j 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 _{j, s}\left[\min _{c_1} \sum_{x_i \in R_1(j,s)} (y_{i}-c_{1})^{2}+\min _{c_{2}} \sum_{x_{i} \in R_{2}(j, s)}\left(y_{i}-c_{2}\right)^{2}\right] j,smin⎣⎡c1minxi∈R1(j,s)∑(yi−c1)2+c2minxi∈R2(j,s)∑(yi−c2)2⎦⎤
容易得出,在 j j j和 s s s固定时, c 1 = 1 N 1 ∑ x i ∈ R 1 y i , c 2 = 1 N 2 ∑ x i ∈ R 2 y i c_{1}=\frac{1}{N_{1}} \sum_{x_{i} \in R_{1}} y_{i}, \quad c_{2}=\frac{1}{N_{2}} \sum_{x_{i} \in R_{2}} y_{i} c1=N11∑xi∈R1yi,c2=N21∑xi∈R2yi
遍历变量 j j j,对固定的切分变量 j j 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 ∈ R m , m = 1 , 2 \begin{array}{c} R_{1}(j, s)=\left\{x \mid x^{(j)} \leqslant s\right\}, \quad R_{2}(j, s)=\left\{x \mid x^{(j)}>s\right\} \\ \hat{c}_{m}=\frac{1}{N_{m}} \sum_{x_{i} \in R_{m}(j, s)} y_{i}, \quad x \in R_{m}, \quad m=1,2 \end{array} R1(j,s)={
x∣x(j)⩽s},R2(j,s)={
x∣x(j)>s}c^m=Nm1∑xi∈Rm(j,s)yi,x∈Rm,m=1,2
3.继续对两个子区域调用步骤(1),(2),直至满足停止条件。
4.将输入空间划分为 M M M个区域 R 1 , R 2 , ⋯ , R M R_{1}, R_{2}, \cdots, R_{M} R1,R2,⋯,RM,生成决策树:
f ( x ) = ∑ m = 1 M c ^ m I ( x ∈ R m ) f(x)=\sum_{m=1}^{M} \hat{c}_{m} I\left(x \in R_{m}\right) f(x)=m=1∑Mc^mI(x∈Rm)
三、提升树
提升树(Boosting Decision 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=1∑MT(x;Θm)
其中, T ( x ; Θ m ) T(x;\Theta_m) T(x;Θm)表示决策树;