回归问题提升树

网上已经有很多介绍Boosting的资料了,这里简单概述一下Boosting

Boosting是一种ensemble的学习方法。通过反复学习多个弱学习器,然后使用加法模型将弱学习器组合到一起形成一个强学习器。如果每次学习一个弱分类器都用同样的数据,显然是学习多少次都是没有太大意义。所以,大多数Boosting每一轮训练一个弱学习器时就会改变样本的概率分布,也就是每个样本的权重。然后下一个弱学习器就会学到不同分布的样本。

接着我们来看一下什么是加法模型:

加法模型为一系列模型的线性相加:

                                                             f(x)=\sum_{m=1}^{M}\beta_nb(x;\gamma _m)

其中,b(x;\gamma_m)为基学习器,\gamma_m为基学习器的参数,\beta_m为基学习器的系数,也可以理解为每个基学习的权重。

所以在给定训练数据及损失函数L(y,f(x))的情况下,学习一个加法模型f(x)就成为经验风险极小化,即cost function极小化问题:

                                                        \min_{\beta_m,\gamma_m}\sum_{i=1}^{N}L(y_i,\sum_{m=1}^{M}\beta_mb(x_i;\gamma_m))

因为加法模型要同时优化所有的基学习器是一个很复杂的问题,为了make life easier,同时结合加法模型的特性(基学习器的线组合),我们可以采用前向分布算法,每次优化新加入的基学习器的参数, 因为前面已经变为常数了,逐步逼近优化上面的cost function。

前向分布算法

输入:训练数据集T=\{(x_1,y_1),(x_2,y_2),...,(x_n,y_n)\}x_i\in \chi \subseteq R^n, y_i\in Y=\{-1,1\}); 损失函数L(y,f(x));基函数集为b\{x;\gamma \};

输出:加法模型f(x)

1) 初始化f_0(x)=0

2) 对m=1,2,3,...,M, 依次训练第m个基学习器

      a) 极小化损失函数

                                  (\beta_m,\gamma_m)=arg\min_{\beta ,\gamma }\sum_{i=1}^{N}L(y_i,f_{m-1}(x_i)+\beta b(x_i;\gamma )))

          得到参数\beta_m,\gamma_m;
      b) 更新

                                                f_m(x)=f_{m-1}(x)+\beta _mb(x;\gamma _m)

 3) 得到加法模型

                                               f(x)=f_M=\sum _{m=1}^{M}\beta _mb(x;\gamma _m)

有了上面的铺垫,我们可以开始回归问题提升树

回归提升树是采用CART回归树作为基学习器的Boosting算法。它会训练多棵CART树,然后每棵树的预测结果的线性组合就是回归问题提升树。

回归提升树算法

输入:训练数据集T=\{(x_1,y_1),(x_2,y_2),...,(x_n,y_n)\}x_i\in \chi \subseteq R^n, y_i\in Y=\{-1,1\});

           损失函数为平方误差损失函数(MSE) : L(y,f(x))=(y-f(x))^2

输出:提升树f_M(x)

1) 初始化f_0(x)=0

2) 对m=1,2,3,...,M, 依次训练第m个CART回归树

     a) 计算残差

                                          r_{mi}=y_i-f_{m-1}(x_i), i=1,2,...,N

     b) 拟合残差r_{mi}学习一个回归树,得到

                                             T(x;\Theta _m) = \sum_{j=1}^{J}c_jI(x\in R_j)

        R_j为回归树在输入空间划分的J个区域j = 1,2,...,J,也就是叶子结点的个数。所以c_j就表示每个结点也就是区域输出的常            量 。参数\Theta _m=\{(R_1,c_1),(R_2,c_2),...,(R_J,c_J)\},表示树的区域划分和各区域上的常数。

     c) 更新

                                                 f_m=f_{m-1}+T(x;\Theta _m)

 3) 得到回归问题提升树

                                                f_M(x)=\sum _{m=1}^MT(x;\Theta _m)

在《统计学习算法》书上p149页给出了一个具体的回归问题提升树的实例,大家可以去看一下。

接下来讲一下为什么下一棵树拟合的是当前模型的残差,不是应该拟合原始数据,然后最小化损失函数吗?

因为回归问题提升树是加法模型,在使用前向分布算法拟合数据时,我可以把前几步具体写出来:

                                                 f_0(x) =0

                                                 f_m(x)=f_{m-1}(x)+T(x;\Theta _m)

此时要最小化损失函数得到下一颗树的参数\widehat{\Theta }

                                                 \widehat{\Theta }=arg\min_{\Theta _m}\sum _{i=1}^{N}L(y_i, f_{m-1}(x_i)+T(x _i;\Theta _m))

因为使用的是平方误差损失函数,所以就有:

                                               L(y,f_{m-1}+T(x;\Theta ))=(y-f_{m-1}(x)-T(x;\Theta ))^2

y-f_{m-1}}(x)正是当前模型的残差r, 就可以得到:

                                                     L(y,f_{m-1}+T(x;\Theta ))=(r-T(x;\Theta _m))^2

因为回归树的损失函数也是MSE,所以(r-T(x;\Theta _m))^2  正好是回归树的损失函数,只是说 r 就充当了原本 y 的位置,所以下一棵树拟合的是当前模型的残差。也就是拟合数据集T=\{(x_1,r_1),(x_2,r_2),...,(x_n,r_n)\}

回归问题提升树和GBDT也有联系。首先,都用的是CART回归树;其次,因为GBDT下一棵树拟合的是损失函数在当前模型的负梯度,而回归问题提升树的损失函数为MSE,而该损失函数的梯度就是残差。所以回归问题提升树可以看做是损失函数为MSE的GBDT.

GBDT的解释请看下一篇

参考书籍:李航《统计学习方法》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值