Java教程

集成学习06-Boosting

本文主要是介绍集成学习06-Boosting,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

目录

1. Boosting原理

2. Adaboost

3. 前向分布算法

4. 梯度提升算法

4.1 GBDT

4.2 Xgboost

4.3 LightGBM


上一章讲了使用Bagging去优化模型,Bagging思想的实质是:通过Bootstrap 的方式对全样本数据集进行抽样得到抽样子集,对不同的子集使用同一种基本模型进行拟合,然后投票得出最终的预测。我们也从前面的探讨知道:Bagging主要通过降低方差的方式减少预测误差。

那么,本章介绍的Boosting是与Bagging截然不同的思想,Boosting方法是使用同一组数据集进行反复学习,得到一系列简单模型,然后组合这些模型构成一个预测性能十分强大的机器学习模型。显然,Boosting提高最终的预测效果是通过不断减少偏差的形式,与Bagging有着本质的不同。在Boosting这一大类方法中,主要介绍两类常用的Boosting方式:Adaptive Boosting (自适应增强)和 Gradient Boosting(梯度增强) ,以及它们的变体Xgboost、LightGBM。


1. Boosting原理

"强可学习"和"弱可学习":

  • 弱学习:识别错误率小于1/2(即准确率仅比随机猜测略高的学习算法)
  • 强学习:识别准确率很高并能在多项式时间内完成的学习算法

强可学习和弱可学习的错误率都小于1/2。

在PAC(概率近似正确)学习的框架下,强可学习和弱可学习是等价的。在学习中,如果已经发现了弱可学习算法,能否将他提升至强可学习算法。提升方法就是从弱学习算法出发,反复学习,得到一系列弱分类器(基本分类器),然后通过一定的形式去组合这些弱分类器构成一个强分类器。

大多数的Boosting方法都是通过改变训练数据集的概率分布(训练数据不同样本的权值),针对不同概率分布的数据调用弱分类算法学习一系列的弱分类器,组合形成强分类器。简单说:1)反复训练预测错误的“错题”样本;2)多个模型的综合判断比单个模型更准确。

2. Adaboost算法

对于Boosting方法来说,有两个问题需要给出答案:第一个是每一轮学习应该如何改变数据的概率分布,第二个是如何将各个弱分类器组合起来。

对于Adaboost来说,解决上述的两个问题的方式是:1. 提高那些被前一轮分类器错误分类的样本的权重,而降低那些被正确分类的样本的权重。这样一来,那些在上一轮分类器中没有得到正确分类的样本,由于其权重的增大而在后一轮的训练中“备受关注”。2. 各个弱分类器的组合是通过采取加权多数表决的方式,具体来说,加大分类错误率低的弱分类器的权重,因为这些分类器能更好地完成分类任务,而减小分类错误率较大的弱分类器的权重,使其在表决中起较小的作用。

Adaboost算法:

 对于步骤(3),线性组合

这篇关于集成学习06-Boosting的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!