1 对决策树使用adaboost

对决策树使用adaboost时,有以下几个问题:

 (1)adaboost每次更新的样本权重如何应用到决策树中?

  由于我们不知道决策树的err目标是什么,因此通常的方法是根据权重对样本采样,然后给决策树训练,这样我们不需要修改决策树算法本身,样本的权重信息就传进去了。

(2)如果处理某个决策树的ε达到0的情况?

  达到0时,相应的投票数变为无穷大,因此我们需要对树的强度做限制,使得ε不会为0。通常简单的做法是限制树的高度。

  特别的,当树的高度被限制为1时,且不纯度定义为二分类错误时,decision Tree等效为decision stump:
  

因此adaboost-Dtree就是:

 

 

2 深入看Adaboost

Adaboost是一个特殊的gradient boosting,它有自己的损失函数叫做errADA:

它也是01err的一个上界。

把adaboost写成gradient boosting的形式:

3 Gradient Boosting

gradient Boosting是Adaboost的延伸。

已知前t-1轮的子模型和投票,在第t轮,选取合适的η和h(x)使得加上该轮后的总模型的损失函数最小,这就是gradient boosting:

如果这里的err是平方误差,有如下推导:

对h的大小做限制,后续用η控制大小,这里限制的方法是加一个平方项作惩罚项:

可以看出,这里是最小化平方误差,也就是在残差(s-y)上做回归。这里我们用回归树来做。

得到了h之后,接下来是选择合适的η:

 

 也就是相当于对于残差和gt转换过的特征做单变量线性回归。

因此,我们的GBDT算法流程如下:

 

 

版权声明:本文为coldyan原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/coldyan/p/6625646.html