提升树

2019-03-15  本文已影响0人  shenghaishxt

本文来自我的个人博客 https://www.zhangshenghai.com/posts/34928/

提升树模型

提升方法实际采用加法模型(即基函数的线性组合)与前向分布算法。以决策树为基函数的提升方法称为提升树。提升树可以表示为决策树的加法模型:
f_M(x) = \sum_{m=1}^MT(x;\Theta_m)
其中,T(x;\Theta_m)表示决策树,\Theta_m为决策树的参数,M为树的个数。

提升树算法

提升树算法采用前向分布算法,首先确定初始提升树f_0(x) = 0,第m步的模型是:
f_m(x) = f_{m-1}(x) +T(x;\Theta_m)
其中,f_{m-1}(x)为当前模型,通过经验风险极小化确定下一棵决策树的参数\Theta_m
\hat \Theta_m = arg \quad min_{\Theta_m} \sum_{i=1}^N L(y_i, f_{m-1}(x_i)+T(x_i;\Theta_m))
当采用平方损失函数时,
L(y,f(x)) = (y-f(x))^2
其损失为
L(y_i, f_{m-1}(x_i)+T(x_i;\Theta_m) = [r-T(x;\Theta_m)]^2
这里r是残差,r = y-f_{m-1}(x)

对于提升树算法,通常使用平方误差损失函数解决回归问题,而使用指数损失函数解决分类问题,以及使用一般损失函数解决决策问题。对于二类分类问题,提升树算法只需将 AdaBoost 算法中的基本分类器限制为二类分类器即可。可以说这时的提升树算法是 AdaBoost 算法的特殊情况。本节主要叙述回归问题的提升树。

回归问题的提升树算法

输入:训练数据集T = \left\{ \left( x_{1}, y_{1} \right), \left( x_{2}, y_{2} \right), \cdots, \left( x_{N}, y_{N} \right) \right\},x_{i} \in \mathcal{X} \subseteq R^{n}, y_{i} \in \mathcal{Y} \subseteq R, i = 1, 2, \cdots, N

输出:回归提升树f_{M}\left(x\right)

  1. 初始化f_{0}\left(x\right)=0

  2. m=1,2,\cdots,M​
    2.1 计算残差
    \begin{align*} \\ & r_{mi}=y_{i}-f_{m-1}\left(x_{i}\right),\quad i=1,2,\cdots,N \end{align*}
    2.2 拟合残差r_{mi}学习一个回归树,得到T\left(x;\varTheta_{m}\right)
    2.3 更新f_{m}=f_{m-1}\left(x\right)+T\left(x;\varTheta_{m}\right)

  3. 得到回归提升树
    \begin{align*} \\ & f_{M} \left( x \right) = \sum_{m=1}^{M} T \left(x;\varTheta_{m}\right) \end{align*}

梯度提升

提升树利用加法模型与前向分布算法实现学习的优化过程,当损失函数是平方损失和指数损失函数时,每一步的优化是很简单的。但对于一般损失函数而言,往往每一步优化并不那么容易,于是梯度提升 (gradient boosting) 算法被提出。

梯度提升算法

输入:训练数据集T = \left\{ \left( x_{1}, y_{1} \right), \left( x_{2}, y_{2} \right), \cdots, \left( x_{N}, y_{N} \right) \right\},x_{i} \in \mathcal{X} \subseteq R^{n}, y_{i} \in \mathcal{Y} \subseteq R, i = 1, 2, \cdots, N,损失函数L\left(y,f\left(x\right)\right)

输出:回归树\hat f\left(x\right)​

  1. 初始化
    \begin{align*} \\ & f_{0}\left(x\right) = \arg \min_{c} \sum_{i=1}^{N} L \left(y_{i},c\right) \end{align*}

  2. m=1,2,\cdots,M
    2.1 对i=1,2,\cdots,N,计算
    \begin{align*} \\ & r_{mi}=- \left[ \dfrac {\partial L \left(y_{i},f\left(x_{i}\right) \right)}{\partial f \left(x_{i} \right)}\right]_{f\left(x\right)=f_{m-1}\left(x\right)} \end{align*}
    2.2 对r_{mi}拟合回归树,得到第m棵树的叶结点区域R_{mj},j=1,2,\cdots,J
    2.3 对j=1,2,\cdots,J,计算
    \begin{align*} \\ & c_{mj}=\arg \min_{c} \sum_{x_{i} \in R_{mj}} L \left( y_{i},f_{m-1} \left(x_{i}\right)+c \right) \end{align*}
    2.4 更新f_{m}\left(x\right)= f_{m-1}\left(x\right) + \sum_{j=1}^{J} c_{mj} I \left(x \in R_{mj} \right)

  3. 得到回归树
    \begin{align*} \\ & \hat f \left( x \right) = f_{M} \left( x \right) = \sum_{m=1}^{M} \sum_{j=1}^{J} c_{mj} I \left( x \in R_{mj} \right) \end{align*}

上一篇 下一篇

猜你喜欢

热点阅读