实用机器学习笔记二十二:集成学习之 Boosting
前言:
本文是个人在 B 站自学李沐老师的实用机器学习课程【斯坦福 2021 秋季中文同步】的学习笔记,感觉沐神讲解的非常棒 yyds。
Boosting:
什么是 Boosting 以及它的核心思想:把多个弱模型(偏差比较大的模型)组合成一个强壮的模型。
主要目的:减小偏差。
实现步骤:有顺序地学习个弱模型。在时间步:
训练一个弱模型,然后评估它的误差
把那些被错误预测的样本拿出来,并根据误差,针对被预测错误的样本从新训练一个模型
具体算法:AdaBoost, gradient boosting
Gradient Boosting:
表示在步的模型,可以认为=0
在第一步时,即
针对残差: , 训练一个新的模型。假设是个回归任务,帮助我们理解:从新训练一个模型,对上一步 boosting 没有拟合好的那部分数据做拟合(实际上是对残差做拟合)。只有在时,是对原始数据集进行训练,其他的时候都是对上一步 boosting 模型的输出与真实值之间的差值训练新的模型。
学习率的作用:通过收缩的方式正则化这个模型,防止过拟合。因为:模型是对残差进行拟合,如果拟合的太好,直接加上的话,反复 boosting 几次,很容易出现过拟合(对数据学习的很好),因此通过学习率,一点一点的加上,不那么信任,防止过拟合。
Gradient Boosting 代码:
Gradient Boosting Decision Trees(GBDT):
这里使用决策树作为弱模型来举例说明:
决策树本身并不是弱模型,它实际上是一个很强的模型,如果树的层数够深的化,可以很好的拟合数据
如何构建弱决策树模型?把树的深度设置的小一点,比如 3。或者随机采样特征,并不把所有的特征都拟合。
顺序构建决策树来做 boosting。如果数据集很大,构建决策树运行会很慢。目前有一些加速算法:XGBoost,lightGBM 等
GBDT 性能如下:
从图中可以看出,并没有出现过拟合,因为设置决策树的时候,把决策树设置成了弱模型。这也是 Boosting 的优点:防止过拟合
总结:
Boosting 把 n 个弱模型组合在一起构成强模型,以此降低偏差
Gradient Boosting 是使用弱模型去拟合标号上的残差
版权声明: 本文为 InfoQ 作者【打工人!】的原创文章。
原文链接:【http://xie.infoq.cn/article/fa0f3d462b437e53446924067】。文章转载请联系作者。
评论