集成学习

What is ensemble learning? | IBM

总览

集成学习使用多个学习器来强化预测性能。它的采用是为了解决有限的数据集。

集成学习是一个机器学习技术集合了多种学习器(如回归模型,神经网络)为了产生更好的预测。联合模型结合几个单独的模型以产生比单一模型更准确的预测。同时,资源可能指代基于决策的学习。集成学习基于这样一个原则,即集体的学习器会比单个的学习器产生更准确的输出。事实上,研究机器学习模型和卷积神经网络cnn来支持它的有效性。

关于术语的说明:基础学习器,基础模型在一些例子中,基于估计器指的是集成算法中使用单个模型或者多个模型。文献进一步将强学习器分为和弱学习器。弱模型或学习器被定义为比那些随机猜测表现更好的模型。对于二元分类问题,弱分类器更正式的定义是那些能达到大约百分之五十准确率的分类器。相比之下强模型或者学习器可以达到更好的预测性能,他们在二分类中被形式化为大于等于80%的准确率。

需要注意的是,一些资料会将弱学习器(weak learner)和基学习器(base learner)混为一谈,这是因为集成方法,特别是连续的集成方法,实际上能够将弱学习器提升成为强学习器。

为什么使用集成学习

偏差-方差权衡

Regularization 正则化是一项机器学习用来对抗过拟合的中的技术集,在训练过程中在损失函数中添加惩罚项,正则化有助于创建一个简单模型以更好的泛化数据。常见的正则化措施包括:丢弃,早停

偏差方差权衡是机器学习中著名的问题,也是许多正则化技术的激励原则,我们这样定义:

偏差:测量不同预测值和真值之间的平均值。当偏差增大了,模型在训练集上的准确度就较低。高的变差代表着高的训练集错误率。优化意味着意图减少偏差。

方差:测量给定模型的不同实现之间的预测差异,随着方差的增加,模型对未知数据的预测就不那么准确了。高的方差代表了训练集和验证集的高错误率。泛化只得是减少方差。偏差和方差分别代表模型在训练数据和测试数据的精度。

他们是构成总错误率三个术语中的俩个,第四个叫做不可约误差。第三个术语表示了数据集中固定有的随机性而导致的误差。总模型误差公式可以定义成:$误差=偏差^2+方差+不可约误差$

多模型对比单模型

任意的模型训练算法包括了数字变量即训练集,超参数,以此类推-这影响了模型的总误差。因此,即使是单个训练算法也可以产生不同的模型,它们都有自己的偏差,方差和不可约错误率。通过结合几个不同的模型,集成算法可以产生更低总错误率,保留了每个模型自己的复杂度和优势,例如对特定数据子集的显著偏差降低。

研究表明,一般情况下,模型组合出了更好的多样性,得到的集成模型也更精确。因此集成学习能在不需要消除模型偏差的情况下解决退化问题,比如过拟合。事实上,研究表明,由不同的不规范模型组成的集合(在训练集上过拟合的模型)由于单一的正则化模型。有时,集成学习技术可以帮助解决来自的高纬数据问题,并且有效的替代降维。

集成模式的类型

文献将机器学习中集群学习的方法大致分为俩类:并行和串行

并行方法训练每个基础学习器,使其与其他学习器分开。顾名思义,并行集成训练基于并行和彼此独立的学习器。

串行方法训练每一个新的基础学习器,以便最小化上述步骤中之前模型产生的误差。换句话说。串行方法基于模型的连续状态来进行构建的。

并行模型进一步的划分了同质和异质的方法。同质并行集成使用了相同的基于学习算法以产生所有组件的基础学习器。异质并行集成使用了不同的算法生产基础学习器。

投票

集成方法如何将基础学习器组合成最终学习器?一些技术如:堆叠-使用了单独的学习算法从基础学习器中去训练集成学习器。但是巩固基础学习这预测的一种常用方法是投票-更准确的说是多数投票。

多数投票考虑了给定数据集下每个学习器的预测,最终的预测决定通过大多数学习者的预测。例如,对于二分类问题,每个基础学习器需要对与给定的数据实例进行预测,并且使用多数预测最为最终预测。加权多数投票是这个技术的扩展,他给定了特定的学习器比其他学习器更大的权重。

集成学习技术

最受欢迎的集成学习技术困难技术bagging和bootsting还有stacking。事实上,这些共同说明了串行,并行,同质异质类型集成方法之间的区别。

这些概述并不详尽;例如混合于加权平均集成。这仅仅是为了调查文献中重要的放啊

bagging

bagging是同质并行方法有点时候也被叫做bootstrap aggregating。他使用给定的训练集数据去修改副本以在相同的训练算法下训练多个基础学习器。Scikit-learn在python中的集成模块包含实现了bagging的函数,比如BaggingClassifier。

更广泛的说,bagging使用了叫做自助抽样从单个初始训练集中获得多个新数据集以便训练多个基础模型。他是怎么工作的?假设训练集包含了n个训练样例。自助抽样从那个集合中复制n'个数据实体到新的子样例数据集,对于一些初始的实例不止一次出现,而另一些被排除在外。这些就是自助样本。重复此过程x次将生产原始数据集的x次迭代,每次包含n个来自初始集合的样本。每个一个对于初始集合的迭代被用来训练单独的基础学习器使用并使用相同的算法。

随机森林是bagging的扩展,具体表示使用bagging来构建随机决策树的集成。这与标准决策树不同,后者对每个特征进行采样,以确定最后的分割特征。相比之下,随机森林迭代抽样每个随机特征的子集,以创建决策点。

Stacking

stacking或者堆叠泛化,是异质的并行方法,他体现了所谓的元学习。元学习由多个基础学习器的输出中训练一个元学习器。Stacking专门训练来自同一个数据集的几个基础学习器。每个学习器之间使用不同的训练算法。每个基础学习器做出对未知数据的预测。对这些最初的模型预测进行编译进行训练得到最终模型作为元模型。

注意,为了训练元学习器,使用来自不同于训练基础学习器的数据集是很重要的。使用相同的数据集去训练基础的学习器,元学习器的返回会过拟合。这可能需要从基础学习器训练数据中排除数据以作为测试集的数据,反过来又称为元学习器的训练数据。资料中一般推荐交叉验证以确保这些数据集不会重复。

如同stacking(装袋),python中的sklearn.ensemble模块提供了多个函数以实现stacking技术。

boosting

boosting算法是连续的集成算法。Boosting 有很多变量,但是他们都遵循相同的一般顺序。Boosting 在一些初始数据d上训练学习器。由此产生的学习器是典型的弱学习器,数据集中的很多样本会被错误分类。于bagging非常相似Boosting 会从初始数据中采样实例以创建新的数据集d2。然而不同于bagging,boosting优先处理来自第一个模型或学习器的错误分类数据实例。新的学习器在新的数据集d2上被训练出来。如何第三个数据集d3会从d1和d2中进行收集,有限考虑第二个学习器的样本和d1与d2中不一样的实例。这个过程会重复n次,产生n个学习器。Boosting 之后会结合权重与联合所有的学习器产生最终输出。

在创建新的数据集时,Boosting算法他们对错误预测的数据实例进行优先级排列存在很大的差异。俩种最突出的boosting算法可以说明这点。

  • 自适应boosting(adaboost):权重模型误差是当创建新的数据集迭代器以训练下一个学习器,Adaboost添加了权重到先前的学习器误分类的样本,成为下一个学习者以优先处理这些错误分类。
  • 梯度boosting:当训练新的学习器用户会使用残差而不是加权错误分类,梯度boosting利用前一个模型的残次为下一个模型设定目标预测。以这种方式缩小一个模型留下的误差差距。

不幸的是sklearn没有预定义函数能实现boosting。然而,极端梯度增强(XGBoost)开源库,提供了python中梯度boosting的实现。

最近的研究

在获取大型,易用,标记的数据集在用于学习器方面存在困难。集成学习在试图使用更少的数据来提升学习者的表现方面有了许多的应用。例如,最近的几项研究在使用集成方法于计算机视觉任务中的泛化性方面产生了令人鼓舞的结果。例如用数据集的不同表示来训练几个模型或者组合几个有偏差的模型。

尽管集成学习提升了泛化能力,然而他们会遭受不公平的待遇。在机器学习中,公平指的是常识在自动系统中减少算法的偏差,通常是由学习器在铭感数据上产生的。一些研究提出了度量,预处理标准,和后处理技术以提高集成学习的公平。

Last modification:July 23, 2024
如果觉得我的文章对你有用,请随意赞赏