提升方法
提升方法就是从弱学习算法出发,反复学习,得到一系列弱分类器(又称为基本分类器),然后组合这些弱分类器,构成一个强分类器。大多数的提升方法都是改变训练数据的概率分布(训练数据的权值分布),针对不同的训练数据分布调用弱学习算法学习一系列弱分类器。
在每一轮如何改变训练数据的权值或概率分布:提高那些被前一轮弱分类器错误分类样本的权值,而降低那些被正确分类样本的权值。这样一来,那些没有得到正确分类的数据,由于其权值的加大而受到后一轮的弱分类器的更大关注。
如何将弱分类器组合成一个强分类器:AdaBoost采取加权多数表决的方法.具体地,加大分类误差率小的弱分类器的权值,使其在表决中起较大的作用,减小分类误差率大的弱分类器的权值,使其在表决中起较小的作用。
提升树
参考资料:
提升树模型
GBDT的求解过程就是梯度下降在函数空间中的优化过程。
- 我们能通过一阶泰勒展开证明负梯度方向是下降最快的方向。对于函数f:
则优化函数f时:
\[\theta_{k+1} = \theta_{k}-\eta \frac{\partial f(\theta_{k})}{\partial \theta_k} \]- 在GB中,对损失函数展开:
即
\[L(y,F_m(x)) \approx L(y,F_{m-1}(x)) + \frac{\partial L(y, F_{m-1}(x))}{\partial F_{m-1}(x)} T_m(x) \]则在优化 \(L(y,F(x))\) 的时候: ,
\[F_m(x) = F_{m-1}(x)-\eta \frac{\partial L(y, F_{m-1}(x))}{\partial F_{m-1}(x)} \]即,\(T_m(x)=-\eta \frac{\partial L(y, F_{m-1}(x))}{\partial F_{m-1}(x)}\) 。所以需要当前的弱学习器来学习负梯度,这里和GBDT中差了一个\(\eta\) 。
- 在1和2中都是随机梯度下降,但是不同的是:1在参数空间中优化,每次迭代得到参数的增量,这个增量就是负梯度乘上学习率;2在函数空间中优化,每次得到增量函数,这个函数会去拟合负梯度,在GBDT中就是一个个决策树。要得到最终结果,只需要把初始值或者初始的函数加上每次的增量。所以1的优化过程是(假设迭代了M次):
等号两边相加,得到最终的优化结果:
\[\theta_M = \theta_0 + \eta \sum_{m=0}^{M-1} -\frac{\partial f(\theta_{m})}{\partial \theta_m} \]同样的,2中优化的过程是:
\[F_1(x) = F_0(x) - \eta \frac{\partial L(y, F_{0}(x))}{\partial F_{0}(x)},即 T_1(x) = -\eta \frac{\partial L(y, F_{m-1}(x))}{\partial F_{m-1}(x)} \\ ...\\ F_M(x) = F_{M-1}(x) - \eta \frac{\partial L(y, F_{M-1}(x))}{\partial F_{M-1}(x)},即 T_M(x) = -\eta \frac{\partial L(y, F_{M-1}(x))}{\partial F_{M-1}(x)} \]等号两边相加,得到:
\[F(x)=F_M(x)=F_0(x)+\eta \sum_{m=0}^{M-1} -\frac{\partial L(y, F_{m}(x))}{\partial F_{m}(x)}=\sum_{m=0}^{M}T_m(x) \]- 无论损失函数是什么形式,每个决策树拟合的都是负梯度。准确的说,不是用负梯度代替残差,而是当损失函数是均方损失时,负梯度刚好是残差,残差只是特例。