Machine Learning-L12-集成学习:Boosting/Bagging/随机森林

简介: Machine Learning-L12-集成学习:Boosting/Bagging/随机森林

集成学习通过构建并结合多个学习器来完成学习任务,然后把结果整合起来进行整体预测。也称为multi-classifier system、committee-based learning。



20200427095753543.png

对于训练集数据,训练若干个个体学习器,并通过一定的结合策略,最终形成一个强学习器。集成学习常可获得比单一学习器显著优越的泛化性能。集成学习要求个体学习器(individual learner)要有一定的准确性及多样性。


集成只包含同种类型的个体学习器,如“决策树”集成中全是决策树,称为“同质”的(homogeneous)。同质集成中的个体学习器又称基学习器(base learner)或弱学习器(weak learner)。

集成也可包含不同类型的学习器,如同时包含决策树和神经网络,称为“异质”的(heterogenous).异质集成中的个体学习器又称组件学习器(component learner)。

根据个体学习器的生成方式,集成学习算法分为两类:


Boosting:个体学习器之间存在强依赖关系,必须串行生成的序列化方法。

关注降低偏差,参数选择一般较低 e.g.决策树深度6

对离群点和噪声数据敏感

典型算法:AdaBoost/GradientBoostingDecisionTree

Bagging:个体学习器间不存在强依赖关系、可同时生成的并行化方法。

关注降低方差,参数选择一般较高 e.g.决策树深度10

对离群点和噪声数据不敏感

典型算法:Bagging/Random Forest

对于Boosting,每一步都会在上一轮的基础上更加拟合原数据,可以降低偏差(bias);因此对于每个基分类器来说,关键在于如何选择variance更小的分类器,即更简单的分类器,所以选择深度很浅的决策树。


对于Bagging,由于会并行地训练很多不同的(相互独立)分类器,可以降低方差(variance) ,因此对于每个基分类器来说,关键就是如何降低偏差(bias),即更准确的分类器,所以选择深度很深甚至不剪枝的决策树。


1. Boosting


Boosting 是一族将弱学习器提升为强学习器的算法,关注降低偏差,每个分类器采用的样本分布都和上一轮的学习结果有关,因此Boosting能基于泛化性能相当弱的学习器构建出很强的集成。工作机制如下:


从训练集训(使用初始权重)训练出一个基学习器

根据基学习器的表现(学习误差率),对训练样本分布进行调整,使先前基学习器做错的样本后续受到更多关注(权重变高)

基于调整后的样本分布来训练下一个基学习器,重复直到基学习器数目到底指定的T值

将这T个基学习器进行加权结合

Boosting中的三个要素:


基学习器,如决策树

误差函数,如分类用cross entropy,回归用 mean squared error

加权模型

其中,如何计算学习误差率(损失函数)决定了算法的名字与效果,Boosting系列算法主要有AdaBoost算法和提升树(boosting tree)系列算法,详见下表:


20200427101255276.png


1.1 AdaBoost


AdaBoost(Adaptive Boosting)算法由Freund and Schapire在1996年提出(A decision-theoretic generalization of on-line learning and an application to boosting)。AdaBoost基于加性模型(additive model),即基学习器的线性组合,来最小化指数损失函数(exponential loss function),过程如下:

20200427095938105.png



20200427095951457.png


1.2 GBDT


GBDT(Gradient Boosting Decison Tree)有很多简称GBT(Gradient Boosting Tree), GTB(Gradient Tree Boosting ), GBRT(Gradient Boosting Regression Tree), MART(Multiple Additive Regression Tree),都是指同一种算法,本文统一简称GBDT。


GBDT是一种迭代的决策树算法,该算法由多棵决策树(GBDT中的树是回归树)组成,所有树的结论累加起来做最终答案。主要的思想是,每一次建立单个学习器时,是在之前建立的模型的损失函数的梯度下降方向。


下面两个图分别表示 DT 和 GB(由100棵树组合成)在树的深度为 0,3,6 时的效果。0 时就是要拟合的函数的图像,可以看到 GB 可以在有限的深度就能得到比较光滑的的拟合:


20200427100637839.png

提升树是迭代多棵回归树来共同决策,利用最速下降的近似方法,即利用损失函数的负梯度在当前模型的值,作为回归问题中提升树算法的残差的近似值,拟合一个回归树。提升树即是整个迭代过程生成的回归树的累加。过程如下:

20200427101159411.png


Xgboost(eXtreme Gradient Boosting) 是 GB 算法的C++高效实现,最大的特点在于,它能够自动利用CPU的多线程进行并行,同时在算法上加以改进提高了精度。


2. Bagging


为了得到泛化性能强的集成,集成中的个体学习器应尽可能相互独立,设法使基学习器尽可能具有较大差异。


Bagging是并行式集成学习方法的最著名代表,基于bootstrap sampling采用出T个含m个训练样本的采样集,然后基于每个采样训练出一个基学习器,再将基学习器进行结合。输出预测时,对分类任务使用简单投票,对回归任务使用简单平均法。


20200427101413946.png


随机采样(bootsrap)就是从我们的训练集里面采集固定个数的样本,但是每采集一个样本后,都将样本放回(GBDT的子采样是无放回采样)。Bagging算法,一般随机采集和训练集样本数m一样个数的样本,得到的采样集和训练集样本的个数相同,但是样本内容不同。对有m个样本训练集做T次的随机采样,则由于随机性,T个采样集各不相同。


对于一个样本,每次被采集到的概率是image.png ,不被采集到的概率为image.png 。如果m次采样都没有被采集中的概率是image.png

image.png  即在bagging的每轮随机采样中,训练集中大约有36.8%的数据没有被采样集采集中,称之为袋外数据(Out Of Bag, 简称OOB)。这些数据没有参与训练集模型的拟合,因此可以用来检测模型的泛化能力。


由于Bagging算法每次都进行采样来训练模型,因此泛化能力很强,对于降低模型的方差很有作用。当然对于训练集的拟合程度就会差一些,也就是模型的偏倚会大一些。


3. Random Forest


随机森林(RF,Random Forest),在以决策树(CART)为基学习器构建Bagging集成的基础上,进一步在决策树的训练过程中引入了随机属性选。

对基决策树的每个节点,先从该节点的n nn个属性集合中随机选择一个包含k ( k < n )个属性的子集,然后再从这个子集中选择一个最优属性用于划分。

随机森林中基学习器的多样性不仅来自样本扰动,还来自属性扰动,进一步增强了模型的泛化能力


4. Stacking


Stacking使用“学习法”,通过该次级学习器(元学习器,meta-learner)来结合多个初级学习器。

Stacking先从初始数据集训练出初级学习器,然后“生成”一个新数据集用于训练次级学习器,在这个新数据集中,初级学习器的输出被当作样例输入特征,而初始样本的标记仍被当作样例标记。


20200427101530126.png


数据集输入->若干学习器-->若干学习器输出(输出作为次级学习器的输入)-->次级学习器-->学习器2输出(预测输出)

以下是stacking中一个模型的完整流程,stacking中同一层通常包含多个模型,可重复相关步骤。


20200427101551273.jpg



首先用一个初级学习器(Model1)进行5折交叉验证,包含两个过程,


基于其中80%数据训练模型(Learn);

使用训练生成的模型对剩余20%数据进行预测(Predict)。

在5折交叉验证完成后,会形成整个Training Data的预测值(Predications)。这些预测值作为新的Training Data,输入下一层的模型,进行训练。


在5折交叉验证完成的同时,还要整个Test Data进行预测,并对5次预测值取加权平均,形成新的Test Data,输入下一层模型,进行预测。

相关文章
|
4天前
|
机器学习/深度学习 算法 前端开发
机器学习中的集成学习(二)
**集成学习概述** 集成学习通过结合多个弱学习器创建强学习器,如Bagging(Bootstrap Aggregating)和Boosting。Bagging通过随机采样产生训练集,训练多个弱模型,然后平均(回归)或投票(分类)得出结果,减少方差和过拟合。Boosting则是迭代过程,每个弱学习器专注于难分类样本,逐步调整样本权重,形成加权平均的强学习器。典型算法有AdaBoost、GBDT、XGBoost等。两者区别在于,Bagging模型并行训练且独立,而Boosting模型间有依赖,重视错误分类。
|
4天前
|
机器学习/深度学习 人工智能 自然语言处理
机器学习中的集成学习(一)
集成学习是一种将多个弱学习器组合成强学习器的方法,通过投票法、平均法或加权平均等策略减少错误率。它分为弱分类器集成、模型融合和混合专家模型三个研究领域。简单集成技术包括投票法(用于分类,少数服从多数)、平均法(回归问题,预测值取平均)和加权平均法(调整模型权重以优化结果)。在实际应用中,集成学习如Bagging和Boosting是与深度学习并驾齐驱的重要算法,常用于数据竞赛和工业标准。
|
4天前
|
机器学习/深度学习 人工智能 算法
AI - 集成学习
集成学习是一种机器学习策略,它通过组合多个模型(称为基学习器)来创建一个更强大、更稳健的预测模型。基学习器可以是不同类型或同类型的模型,如决策树、SVM、神经网络等。
|
4天前
|
机器学习/深度学习 算法 前端开发
集成学习思想
**集成学习**是通过结合多个预测模型来创建一个更强大、更鲁棒的系统。它利用了如随机森林、AdaBoost和GBDT等策略。随机森林通过Bootstrap抽样构建多个决策树并用多数投票决定结果,增强模型的多样性。Boosting,如Adaboost,逐步调整样本权重,使后续学习器聚焦于前一轮分类错误的样本,减少偏差。GBDT则通过拟合残差逐步提升预测精度。这些方法通过组合弱学习器形成强学习器,提高了预测准确性和模型的鲁棒性。
|
7天前
|
机器学习/深度学习 算法 Python
【机器学习】集成学习在信用评分领域实例
【机器学习】集成学习在信用评分领域实例
29 1
|
7天前
|
机器学习/深度学习 算法 数据挖掘
【机器学习】Voting集成学习算法:分类任务中的新利器
【机器学习】Voting集成学习算法:分类任务中的新利器
14 0
|
7天前
|
机器学习/深度学习 算法 大数据
【机器学习】集成学习:强化机器学习模型与创新能的利器
【机器学习】集成学习:强化机器学习模型与创新能的利器
7 0
|
6天前
|
消息中间件 Java Kafka
集成Kafka到Spring Boot项目中的步骤和配置
集成Kafka到Spring Boot项目中的步骤和配置
34 7
|
6天前
|
druid Java 关系型数据库
在Spring Boot中集成Druid实现多数据源有两种常用的方式:使用Spring Boot的自动配置和手动配置。
在Spring Boot中集成Druid实现多数据源有两种常用的方式:使用Spring Boot的自动配置和手动配置。
58 5
|
6天前
|
Java 数据库连接 mybatis
在Spring Boot应用中集成MyBatis与MyBatis-Plus
在Spring Boot应用中集成MyBatis与MyBatis-Plus
38 5