![1e7cfb24de71f77affec9dfa4c464911.png](https://i-blog.csdnimg.cn/blog_migrate/075bc864153431330c19228f8da8f98e.jpeg)
Gradient Boosting Decision Tree
梯度提升树(Gradient Boosting Decison Tree,GBDT)是集成学习Boosting重要算法。该方法是针对模型的偏差进行的优化。而随机森林是基于对模型的方差进行优化。即使在集成算法中,Adaboost是利用前一轮迭代器弱学习器的误差率来更新训练集的权重。
GBDT算法中,限定了只能使用CART回归模型。一般的CART是这样的:用于分类任务时,树的分裂准则采用基尼指数,用于回归任务时,用MSE(均方误差)。前一轮迭代得到的强学习器是
关于损失函数拟合方法,Freidman提出了用损失函数的负梯度来拟合本轮损失的近似值,进而拟合新的CART回归树。与XGBOOST的明显区别,就是这样的一阶导数与二阶导数的拟合方式。在不同任务中区别仅仅在损失函数不同导致的负梯度不同而已。
GBDT算法过程
输入:训练集样本
1) 初始化弱学习器
2) 对迭代轮数
a)对样本
b)利用
c) 对叶子区域
d) 更新强学习器:
3) 得到强学习器
GBDT回归与分类
回归算法是比较简单的,毕竟CART就是回归树。回归的问题也可以看成分类任务中一种特殊方法。分类问题的处理,类似与图像识别中的分类任务,分类任务变化成每一类别的概率值预测。
二元GBDT分类算法
对数似然损失函数为:
负梯度误差为:
各个叶子节点的最佳残差拟合值为:
上式的计算过于复杂,通常选取近似的方式:
多元GBDT分类算法
第
计算出第
其实这里的误差就是样本
一般使用近似值代替:
GBDT的正则化
模型加入正则是为了防止过拟合。GBDT的正则化主要有三种方法:
- 第一种是正则化项,步长(learning rate),定义为
。
。较小的
意味着需要更多的弱学习器的迭代次数。通常我们用步长和迭代最大次数一起来决定算法的拟合效果。
- 第二种正则化的方式是通过子采样比例(subsample)。注意这里的子采样和随机森林不一样,随机森林使用的是放回抽样,而这里是不放回抽样。并且取值为(0,1]。
- 第三种是对于弱学习器即CART回归树进行正则化剪枝。决策树的剪枝包括预剪枝与后剪枝。通过对叶子节点的控制实现正则。
GBDT优缺点
优点:
- 可以灵活处理各种类型的数据,包括连续特征和离散特征。
- 在相对少的调参时间情况下,预测的准确率也可以比较高。
缺点:
- 由于弱学习器之间存在依赖关系,难以并行训练数据。不过可以通过自采样的SGBT来达到部分并行。
- 对数据异常值比较敏感。使用一些健壮的损失函数(Huber损失函数),对异常值的鲁棒性非常强。Huber损失,它是均方差和绝对损失的折中产物,对于远离中心的异常点,采用绝对损失,而中心附近的点采用均方差。这个界限一般用分位数点度量。损失函数如下:
对应的负梯度误差为:
有关GBDT回归于分类的真实例子,可以参考以下连接:
- GBDT原理与Sklearn源码分析-回归篇 - SCUT_Sam - CSDN博客
- GBDT原理与Sklearn源码分析-分类篇 - SCUT_Sam - CSDN博客