其他分享
首页 > 其他分享> > 机器学习:集成学习

机器学习:集成学习

作者:互联网

1、个体与集成

集成学习(ensemble learning):构建并结合多个学习器来完成学习任务

集成学习可以只包含同种类型的个体学习器,如全是决策树、神经网络,称为“同质”(homogeneous);也可以包含不同类型的个体学习器,如同时包含决策树、神经网络,称为异质的(heterogeneous)

集成学习对学习器的要求:

目前集成主要有两个方法:

2、boosting

Boosting是一族可将弱学习器提升为强学习器的算法,这族算法的工作机制类似:

先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多关注,然后基于调整后的样本分布来训练下一个基学习器;如此重复进行,直至基学习器数目达到事先指定的值T,最终将这T个基学习器进行加权结合.

Boosting是一种串行的工作机制,即个体学习器的训练存在依赖关系,必须一步一步序列化进行。

Boosting族算法最著名、使用最为广泛的就是数据挖掘十大算法之一的AdaBoost。

Adaboost

AdaBoost使用的是指数损失函数,因此AdaBoost的权值与样本分布的更新都是围绕着最小化指数损失函数进行的。看到这里回想一下之前的机器学习算法,不难发现机器学习的大部分带参模型只是改变了最优化目标中的损失函数:如果是Square loss,那就是最小二乘了;如果是Hinge Loss,那就是著名的SVM了;如果是log-Loss,那就是Logistic Regression了。

AdaBoost算法有多种推导方式,比较容易理解的是基于“加性模型”(additive model),即基学习器的线性组合。

具体说来,整个Adaboost 迭代算法分为3步:

更新样本权重的方法

Boosting算法要求基学习器能对特定分布的数据进行学习,即每次都更新样本分布权重,这里书上提到了两种方法:“重赋权法”(re-weighting)和“重采样法”(re-sampling):

从偏差-方差分解来看:Boosting算法主要关注于降低偏差,每轮的迭代都关注于训练过程中预测错误的样本,将弱学习提升为强学习器。从AdaBoost的算法流程来看,标准的AdaBoost只适用于二分类问题。

3、Bagging与随机森林

Bagging

Bagging是一种并行式的集成学习方法,即基学习器的训练之间没有前后顺序可以同时进行,Bagging使用“有放回”采样的方式选取训练集(Bootstrap),对于包含m个样本的训练集,进行m次有放回的随机采样操作,从而得到m个样本的采样集,这样训练集中有接近36.8%的样本没有被采到。

按照相同的方式重复进行,我们就可以采集到T个包含m个样本的数据集,从而训练出T个基学习器,最终对这T个基学习器的输出进行结合。

Bagging算法的流程:

可以看出Bagging主要通过样本的扰动来增加基学习器之间的多样性,因此Bagging的基学习器应为那些对训练集十分敏感的不稳定学习算法,例如:神经网络与决策树等。

从偏差-方差分解来看,Bagging算法主要关注于降低方差,即通过多次重复训练提高稳定性。不同于AdaBoost的是,Bagging可以十分简单地移植到多分类、回归等问题。总的说起来则是:AdaBoost关注于降低偏差,而Bagging关注于降低方差。

随机森林

在以决策树为基学习器构建Bagging集成的基础上,在决策树训练中引入了随机属性选择。
传统决策树选择当前节点属性集合中的最优属性;而随机森林先从该节点的属性集合中随机选择包含K个属性的子集,再从该子集中选择一个最优属性用于划分。

这样随机森林中基学习器的多样性不仅来自样本扰动,还来自属性扰动,从而进一步提升了基学习器之间的差异度。相比决策树的Bagging集成,随机森林的起始性能较差(由于属性扰动,基决策树的准确度有所下降),但随着基学习器数目的增多,随机森林往往会收敛到更低的泛化误差。同时不同于Bagging中决策树从所有属性集中选择最优划分属性,随机森林只在属性集的一个子集中选择划分属性,因此训练效率更高。

4、结合策略

结合策略指的是在训练好基学习器后,如何将这些基学习器的输出结合起来产生集成模型的最终输出。

⭐平均法(averaging):回归问题

⭐投票法(voting):分类问题

⭐学习法(stacking)

通过另一个学习器来结合。把个体学习器称为初级学习器,用于结合的学习器称为次级学习器。stacking先从初始数据集训练出初级学习器,然后把初级学习器的输出当作样例输入特征,把初始样本的标记当作样例标记,产生一个新的数据集,用于训练次级学习器。

5、多样性

在集成学习中,基学习器之间的多样性是影响集成器泛化性能的重要因素。因此增加多样性对于集成学习研究十分重要,一般的思路是在学习过程中引入随机性,常见的做法主要是对数据样本、输入属性、输出表示、算法参数进行扰动。

多样性的增强

在学习过程中引入随机性

⭐数据样本扰动

⭐输入属性扰动

⭐输出表示扰动法

⭐算法参数扰动

6、参考文献

《机器学习》周志华

标签:集成,Bagging,机器,训练,样本,学习,算法,属性
来源: https://www.cnblogs.com/caolanying/p/16485237.html