Alex_McAvoy

想要成为渔夫的猎手

提升树

References:

【提升树】

提升树(Boosting Tree)是 Boosting 算法族的一种

对于 Boosting 提升法的加法模型:

当基函数 $G_t(\mathbf{x})$ 为决策树,且基函数系数 $\alpha_t=1$ 时,为提升树模型,即:

关于 Boosting 算法,详见:Boosting 提升算法

【提升树的回归算法】

CART 回归树

对于回归问题,设给定的容量为 $n$ 的训练集 $D=\{(\mathbf{x}_1,y_1),(\mathbf{x}_2,y_2),…,(\mathbf{x}_n,y_n)\}$,第 $i$ 组样本中的输入 $\mathbf{x}_i$ 具有 $m$ 个特征值,即:$\mathbf{x}_i=(x_i^{(1)},x_i^{(2)},…,x_i^{(m)})\in \mathbb{R}^m$,输出 $y_i\in\mathcal{Y}\subset \mathbb{R}$

依照 CART 回归树,将输入空间 $\mathcal{X}$ 划分为 $K$ 个互不相交的区域 $R_1,R_2,\cdots,R_K$,并且在每个区域上确定输出的常量 $c_k$,那么决策树可表示为:

其中,$K$ 为回归树的复杂度即叶结点个数,$\{(R_1,c_1),(R_2,c_2),\cdots,(R_K,c_K)\}$ 为树的区域划分和各区域上的最优值

关于 CART 回归树,详见:决策树的 CART 生成算法

前向分步法

对于提升树算法,使用前向分步法进行求解,即:

对于前向分步法的第 $t$ 步来说,给定当前模型 $f_{t-1}(\mathbf{x})$,需求解:

得到第 $t$ 棵树的参数,即第 $t$ 棵树的区域划分和各区域上的最优值

当采用平方损失函数 $L(y,f(\mathbf{x}))=(y-f(\mathbf{x}))^2$ 时,损失变为:

其中,$r=y-f_{t-1}(\mathbf{x})$ 为当前模型 $G_t(\mathbf{x})$ 拟合数据的残差(Residual)

因此,对于回归问题的提升树来说,只需要简单地拟合当前模型 $G_t(\mathbf{x})$ 的残差即可

算法流程

下面给出回归问题的提升树的算法流程

输入:容量为 $n$ 的训练集 $D=\{(\mathbf{x}_1,y_1),(\mathbf{x}_2,y_2),…,(\mathbf{x}_n,y_n)\}$,第 $i$ 组样本中的输入 $\mathbf{x}_i$ 具有 $m$ 个特征值,即:$\mathbf{x}_i=(x_i^{(1)},x_i^{(2)},…,x_i^{(m)})\in \mathbb{R}^m$,输出 $y_i\in\mathcal{Y}\in \mathbb{R}$

输出:提升树 $f(\mathbf{x})$

算法流程:

Step1:初始化 $f_0(\mathbf{x})$

Step2:对 $t=1,2,\cdots,T$

1)计算残差

2)根据 CART 算法,对残差 $r_{ti}$ 学习一个回归树,得到树的区域划分 $\{R_{t1},R_{t2},\cdots,R_{tK}\}$

3)根据树的区域划分 $R_{tk}$ ,计算各区域上的最优值 $\{c_{t1},c_{t2},\cdots,c_{tK}\}$

4)得到回归决策树

5)更新回归决策树

Step3:根据加法模型得到最终的提升树

【提升树的分类算法】

对于分类问题,提升树算法可以看作是 AdaBoost 分类算法的特例,这里不再赘述

关于 AdaBoost 分类算法,详见:AdaBoost 算法

感谢您对我的支持,让我继续努力分享有用的技术与知识点!