天天看点

AdaBoost和Gradient Boosting算法实现

在介绍两种算法前,先介绍一下关于Boosting的两个核心问题:

1)在每一轮如何改变训练数据的权值或概率分布?

通过提高那些在前一轮被弱分类器分错样例的权值,减小前一轮分对样例的权值,来使得分类器对误分的数据有较好的效果。这样分错的样本就被突显出来,从而得到一个新的样本分布。

2)通过什么方式来组合弱分类器?

通过加法模型将弱分类器进行线性组合,比如AdaBoost通过加权多数表决的方式,即增大错误率小的分类器的权值,同时减小错误率较大的分类器的权值。

而提升树通过拟合残差的方式逐步减小残差,将每一步生成的模型叠加得到最终模型。

下面介绍算法的实现步骤:

AdaBoost算法

算法的实现:

1、若为Adaboost分类,函数模型使用CART分类树;若为Adaboost回归,函数模型使用CART回归树。

2、损失函数为“指数损失函数”

3、针对Boosting需要解决的两个问题,AdaBoost算法采用了以下策略:

使用加权后选取的训练数据代替随机选取的训练样本,这样将训练的焦点集中在比较难分的训练数据样本上;

将弱分类器联合起来,使用加权的投票机制代替平均投票机制。让分类效果好的弱分类器具有较大的权重,而分类效果差的分类器具有较小的权重。

Gradient Boosting算法

算法的实现:

1、函数模型为CART回归树模型

2、损失函数一般为“对数损失函数”或“指数损失函数”

Gradient Boosting算法即梯度提升算法,

3、优化算法采用梯度下降

4、针对Boosting需要解决的两个问题,Gradient

Boosting算法采用了以下策略:

将残差作为下一个弱分类器的训练数据,每个新的弱分类器的建立都是为了使得之前弱分类器的残差往梯度方向减少。

将弱分类器联合起来,使用累加机制代替平均投票机制。

继续阅读