zoukankan      html  css  js  c++  java
  • Ensemble learning(集成学习)

    定义

    集成学习是一种机器学习范式,其中多个学习器被训练来解决相同的问题。 这与试图从训练数据中学习一个假设的普通机器学习方法相反,集成方法尝试构造一组假设并将它们结合使用。

    一个集合包含一些通常被称为基础学习器的学习器。 一个集合的泛化能力通常比单个基础学习器的泛化能力强得多。 实际上,集成学习具有极大吸引力,因为它可以将弱于随机猜测的弱学习器提升为能够做出非常准确预测的强大学习器。 所以,“基础学习器”也被称为“弱学习器”。 然而,值得注意的是,尽管大多数理论分析都是针对弱学习器的,但实践中使用的基础学习器并不一定很弱,因为使用不那么薄弱的基础学习器通常会导致更好的表现。

    基础学习器通常通过基础学习算法从训练数据生成,所述基础学习算法可以是决策树,神经网络或其他种类的机器学习算法。 大多数集成方法使用单一的基本学习算法来生成均匀基础学习器,但也有一些方法使用多种学习算法来生成异构学习器。 在后一种情况下,没有单一的基本学习算法,因此,有些人更喜欢称学习器为个别学习器或组件学习者为“基础学习器”,而“个别学习器”和“组件学习器”的名称也可用于同质基础学习器。

    构成集合

    通常情况下,集合是分两步构建的。 首先,生成许多基础学习器,这些基础学习器可以以并行样式或序列样式生成,序列样式即基础学习器的生成影响后续学习器的生成。 然后,将基础学习器结合使用,其中最流行的组合方案是用于分类的多数投票和用于回归的加权平均。

    一般来说,为了获得一个好的集合,基础学习器应该尽可能地更加准确,并尽可能多样化。这已经被Krogh和Vedelsby正式表现出来,并且被许多其他人所强调。对于估计学习器的准确性有很多有效的过程,例如交叉验证,保持测试等。然而,对于直觉上认为是多样性的东西没有严格的定义。虽然已经设计了多种多样性措施,但Kuncheva和Whitaker 表示,现有的多样性措施在建设集合方面的作用是值得怀疑的。在实践中,可以从不同的渠道引入基础学习器的多样性,例如对训练样例进行二次采样,操纵属性,操纵输出,将随机性注入学习算法,甚至同时使用多种机制。采用不同的基础学习器生成过程和/或不同的组合方案导致不同的集合方法。

    有许多有效的集成方法。 下面将简要介绍三种有代表性的方法,Boosting ,Bagging 和Stacking 。 这里为了简单考虑二元分类。 也就是说,设X和Y分别表示实例空间和一组类标签,假设Y = {-1;+1}中。 训练数据集D = {(x1 ; y1); (x2; y2); …; (xm; ym)}给出,其中xi∈X和yi∈Y(i = 1;….; m)。

    Boosting

    实际上,Boosting是一系列算法,因为它有许多变体。在这里,最着名的算法AdaBoost 被认为是一个例子。首先,它为所有训练实例分配相同的权重。将第t轮学习中权重的分布表示为Dt。从训练数据集和Dt算法生成一个基本学习器ht:X-> Y通过调用基础学习算法。然后,它使用训练样例来测试ht,并且不正确分类的例子的权重将会增加。因此,获得更新的权重分布Dt + 1。从训练数据集和Dt + 1中,AdaBoost通过再次调用基础学习算法生成另一个基础学习器。这种过程重复进行T次,每次都称为一轮,最终的学习器是通过T轮基础学习者的加权多数投票得出的,其中在训练过程中确定了学习器的权重。在实践中,基础学习算法可以是可以直接使用加权训练样例的学习算法;否则可以通过根据权重分布Dt对训练样本进行采样来利用权重。 AdaBoost的伪代码如图1所示。

    image

    Bagging

    Bagging 通过调用基础学习算法来训练大量基础学习器,每个基础学习器都来自不同的bootstrap样本。 Bootstrap样本是通过对替换的训练数据集进行二次采样得到的,其中样本的大小与训练数据集的大小相同。 因此,对于bootstrap样本,可能会出现一些训练样例,但有些训练样例可能不会,例如至少出现一次样例的概率约为0.632。 在获得基础学习器后,Bagging通过多数投票将他们结合起来,并预测得票最多的类。 Bagging的伪代码如图2所示。 值得一提的是Bagging随机森林的一个变种被认为是迄今为止最强大的集合方法之一。

    image

    Stacking

    在Stacking的典型实现中,通过采用不同的学习算法从训练数据集中生成许多第一级个体学习器。 这些个别学习器然后被称为元学习器的二级学习者组合。 Stacking的伪代码如图3所示。 很明显Stacking与信息融合方法有着密切的关系。

    image

    一般来说,没有一种整体方法比其他整体方法更出色。 流行的集合方法的实证研究可以在许多论文中找到。 以前,有人认为使用更多的基础学习器会导致更好的表现,但周等人证明了“许多可能比所有更好“的理论,这就表明更多的基础学习器带来更好的表现可能不是事实。 结果表明,在生成一组基础学习器之后,选择一些基础学习器而不是全部使用它们来组成一个集合是更好的选择。 这样的集合被称为选择性集合。

    值得一提的是,除了分类和回归之外,集合方法也被设计用于聚类和其他类型的机器学习任务。

    为什么集合优于单个

    为了理解为什么一个集合的泛化能力通常比单个学习器的泛化能力强得多,Dietterich 通过观察机器学习的本质为寻找最准确假设的假设空间提供了三个理由。第一个原因是,训练数据可能无法提供足够的信息来选择单一的最佳学习器。例如,可能有许多学习器在训练数据集上的表现同样出色。因此,结合这些学习器可能是更好的选择。第二个原因是,学习算法的搜索过程可能不完善。例如,即使存在唯一的最佳假设,也可能难以实现,因为运行算法会导致次优假设。因此,集合可以弥补这种不完善的搜索过程。第三个原因是,被搜索的假设空间可能不包含真正的目标函数,而集合可以给出一些很好的近似值。例如,众所周知,决策树的分类边界是与坐标轴平行的线段。如果目标分类边界是一条光滑的对角线,则使用单个决策树不能产生良好的结果,但通过组合一组决策树可以实现良好的近似。请注意,这些是直观的,而不是严格的理论解释。

    有关Boosting和Bagging等着名集合方法的理论研究很多,但对这些方法的潜在机制还没有一个清晰的认识。 例如,经验观察表明,即使经过大量循环,Boosting也不会遭受过度拟合,有时甚至能够在训练误差已经达到零之后减少泛化误差。 尽管许多研究人员已经研究了这种现象,但理论解释仍在争论中。

    偏差方差分解常用于研究集合方法的性能。 众所周知Bagging可以显着减少方差,因此最好应用于遭受大方差的学习器,例如决策树或神经网络等不稳定的学习器。 除了减少方差外,Boosting可以显着减少偏差,因此,对于弱决策者如决策残块,Boosting通常更有效。

    总结

    集成学习是一种强大的机器学习范式,在许多应用中展现出明显的优势。 通过使用多个学习者,一个集合的泛化能力可以比单个学习者的泛化能力好得多。 目前的集合方法的严重缺陷是缺乏可理解性,即集合体所学的知识对于用户是不可理解的。 提高集合的可理解性是一个重要但尚未充分研究的方向。 另一个重要问题是目前没有多样性措施令人满意,尽管众所周知多样性在集合中起着重要作用。 如果这些问题能够得到很好的解决,集体学习将能够为更多的应用做出更多贡献。


    参考文献:“Ensemble Learning” Zhi-Hua Zhou




  • 相关阅读:
    装饰器模式
    mockups 安装
    单例设计模式
    css优先级问题
    GPU的nvadiasmi解析
    conda配置镜像并安装gpu版本pytorch和tensorflow2
    索引的优化
    [转]必须掌握的八个【cmd 命令行】
    BDE莫名的不自动COMMIT问题
    窗体控件笔记
  • 原文地址:https://www.cnblogs.com/yifdu25/p/8598228.html
Copyright © 2011-2022 走看看