集成学习(Ensemblelearning)张梓寒

集成学习是通过构建并结合多个学习器来完成学习任务,这些学习器被称为“个体学习器”,不同的个体学习器和这些个体学习器的不同的集成方式决定了不同的集成学习方法。

如果个体学习器都是从某一种学习算法从训练数据中产生,则称这样的集成学习是同质的,此时的个体学习器也称作基学习器,相应的学习算法称作基学习算法;

如果个体学习器是从某几种学习算法从训练数据中产生,则称这样的集成学习是异质的

强可学习:一个概念(或一个类别),若存在一个多项式的学习算法能够学习它并且正确率很高,那么称这个概念是强可学习的

弱可学习:一个概念(或一个类别),若存在一个多项式的学习算法能够学习它,学习的正确率仅比随机猜测略好,那么称这个概念是弱可学习的

在PAC(概率近似正确)框架下,强可学习与弱可学习是等价的,即:若在学习中发现了”弱学习算法“,则可以通过某些办法将它提升为”强学习算法“,这也是集成学习的理论基础

当M趋近于无穷时,集成学习的错误率趋近于0

举个例子:

假设一个学习器错误率为0.3,则1个学习器的错误率就是0.3,5个学习器的集成就是M=5,错误率为0.253,M=10时,错误率为0.099;

假设一个学习器错误率为0.4,则1个学习器的错误率就是0.4,5个学习器的集成就是M=5,错误率为0.317,M=10时,错误率为0.267;

假设一个学习器错误率为0.5,则1个学习器的错误率就是0.5,5个学习器的集成就是M=5,错误率为0.5,M=10时,错误率为0.5;

假设一个学习器错误率为0.6,则1个学习器的错误率就是0.6,5个学习器的集成就是M=5,错误率为0.683,M=10时,错误率为0.733;

可见,集成学习对个体学习器提出了两个要求:

1.错误率应当尽量的低,个体学习器错误率越低,集成学习的增效越明显,个体学习器最差也应当优于随机选择,否则集成学习反而会增大错误率

2.以上计算都是基于不同学习器的决策相互独立的情况,即每个学习器是完全不同的,如果个体学习器给出的决策都是相同或相似的,集成学习就失去了意义

但是,实际情况是我们的个体学习器的决策不可能是完全独立的,个体学习器是为了解决同一个问题训练出来的,而且可能是同一类算法从同一个训练集中产生,实际上个体学习器的准确性和多样性本身就存在冲突,这也是“没有免费午餐”定理的体现,所以如何产生并结合”好而不同“的个体学习器就是集成学习研究的核心

集成学习的优点:

由于学习任务的假设空间往往很大,可能有多个假设在训练集上达到同等性能,此时如果使用单学习器可能因为造成误选而导致泛化性能不佳,通过学习器组合之后会减小这一风险。

学习算法往往会陷入局部极小。有的局部极小点所对应的泛化性能可能很差,而通过学习器组合之后可降低陷入糟糕局部极小的风险。

某些学习任务的真实假设可能不在当前学习算法所考虑的假设空间中,此时使用单学习器肯定无效,通过学习器组合之后,由于相应的假设空间有所扩大,有可能学得更好的近似。

Boosting是一族算法,这类算法的基本原理是:

先从初始训练集训练出一个基学习器。

然后基于调整后的样本分布来训练下一个基学习器。

如此重复,直到基学习器数量达到事先指定的值M。

最终将这M个基学习器进行加权组合。

Boosting族算法最著名的代表是AdaBoost算法:

下面直接通过例子去理解AdaBoost算法。

例给定如下表所示训练数据。假设个体学习器由x(输入)和y(输出)产生,其阈值v(判定正反例的分界线)使该分类器在训练数据集上分类误差率最低。(y=1为正例,y=-1为反例)

可以看到x=6,7,8的数据的权重变大了,而其他数据的权重降低了,这是希望能把之前经常分类错误(经常分类错误会出现权重不断变大)的数据能在下一个个体学习器分类正确(记住:权重是用来计算误差的,为了降低误差,选择阈值时会倾向把权重大的分类正确)

第三个个体学习器:

(c)更新训练数据的权值分布:

最终结果:

为什么Adaboost能有效:

容易分类对的数据大多数前面的分类器能分类对,虽然前面的分类器权值较低,但是个数多。不容易分类对的数据后面的分类器能分对,虽然个数少,但是权值高(比如,有一部分数据在1,2号分类器可以分对,有一部分在2,3号分类器可以分对)

标准的AdaBoost算法只适用二类分类问题,可以将它推广到多分类问题。有两种算法:

SAMME算法:该算法不需要个体分类器输出预测类别的概率。

SAMME.R算法:该算法需要个体分类器输出类别的概率。(用类似于交叉熵的方式计算损失函数)

此外还有用于回归问题的AdaBoost回归算法。

思想与AdaBoost算法是类似的,在此就不介绍

Bagging直接基于自助采样法。

自助采样法给Bagging算法带来了额外的优点:由于每个基学习器只用初始训练集中约63.2%的样本来训练,剩下的约36.8%的样本可用作验证集来对泛化性能进行包外估计。

Bagging的基本流程:

经过M轮自助采样,可以得到N个包含训练样本的采样集。

然后基于每个采样集训练出一个基学习器。

最后将这M个基学习器进行组合,得到集成模型。

在使用Bagging学习器进行预测时:

分类任务采取简单投票法,取每个基学习器的预测类别的众数。

回归任务使用简单平均法,取每个基学习器的预测值的平均。

从偏差-方差分解的角度来看:

随机森林:

随机森林RandomForest:RF是Bagging的一个扩展变体。

随机森林对Bagging做了小改动:

Bagging中基学习器的“多样性”来自于样本扰动。样本扰动来自于对初始训练集的随机采样。随机森林中的基学习器的多样性不仅来自样本扰动,还来自属性扰动。这就是使得最终集成的泛化性能可以通过个体学习器之间差异度的增加而进一步提升。

随机森林在以决策树为基学习器构建Bagging集成模型的基础上,进一步在决策树的训练过程中引入了随机属性选择。传统决策树在选择划分属性时,是在当前结点的属性集合中(假定有n个属性)选择一个最优属性。随机森林中,对基决策树的每个结点,先从该结点的属性集合中随机选择一个包含k个属性的子集,然后再从这个子集中选择一个最优属性用于划分。

如果k=n则基决策树的构建与传统决策树相同。

如果k=1则随机选择一个属性用于划分。

随机森林的优点:

训练效率较高。因为随机森林使用的决策树只需要考虑所有属性的一个子集。

随机森林简单、容易实现、计算开销小。

随机森林在很多现实任务中展现出强大的性能,被称作“代表集成学习技术水平的方法”。

随着树的数量的增加,随机森林可以有效缓解过拟合。因为随着树的数量增加,模型的方差会显著降低。但是树的数量增加并不会纠正偏差,因此随机森林还是会有过拟合。

一共有三种集成策略:平均法,投票法,学习法

学习法:

学习法中,个体学习器的分类结果通过与另一个学习器来组合。

此时称个体学习器为初级学习器,用于组合的学习器称作次级学习器或者元学习器meta_learner。

学习法的典型代表就是stacking集成算法。stacking集成算法中:

首先从初始数据集训练出初级学习器。

然后将初级学习器的预测结果作为一个新的数据集用于训练次级学习器,在这个新数据集中,初级学习器的输出被当作样本输入特征;初始样本的标记仍被视作标记。

若直接使用初级学习器的输出来产生次级训练集,则容易发生过拟合,一般是通过使用交叉验证,使用训练初级学习器时未使用的样本来产生次级学习器的训练样本。

次级学习器的输入属性表示和次级学习算法对stacking集成算法的泛化性能有很大影响。通常推荐:次级学习器的输入特征是以初级学习器的输出类概率为特征。或采用多响应线性回归Multi-responseLinearRegression:MLR。

增强多样性的方法:

数据样本扰动:给定初始数据集,可以从中产生出不同的数据子集。再利用不同的数据子集训练出不同的个体学习器。数据样本扰动通常是基于采样法,此类做法简单高效、使用最广。对于常见的基学习器,如决策树、神经网络等,训练样本稍加变化就会导致学习器有显著的变动,数据样本扰动法对这样的“不稳定基学习器”很有效。对于一些基学习器对数据样本的扰动不敏感,如线性学习器、支持向量机、朴素贝叶斯、KNN等,这样的基学习器称作稳定基学习器。对于此类的基学习器进行集成往往需要使用输入属性扰动等其他机制。

输出表示扰动:此类做法的思路是对输出表示进行操纵以增强多样性。如:可以对训练样本的类标记稍作变动,如翻转法FlippingOutput随机改变一些训练样本的标记。

算法参数扰动:基学习算法一般都有超参数需要设置。可以通过随机设置不同的超参数,从而产生差别较大的个体学习器。使用单一学习器时通常需要使用交叉验证等方法来确定最佳的超参数值。这种做法实际上是用了不同的超参数训练出来了多个学习器,只不过最终挑选出来效果最好的那个学习器来使用。集成学习则是相当于把所有这些学习器都利用起来。

不同的多样性增强机制可以同时使用。如随机森林同时是用了数据样本扰动和输入属性扰动。

提升树boostringtree(BT)是以决策树为基本学习器的提升方法。它被认为是统计学习中性能最好的方法之一。提升树模型可以表示为决策树为基本学习器的加法模型(也被叫做前向分步算法):

梯度提升树(GBT):

梯度提升树用于分类模型时,是梯度提升决策树GBDT;用于回归模型时,是梯度提升回归树GBRT

提升树中,当损失函数是平方损失函数和指数损失函数时,无论残差是什么值,拟合都非常简单,但当损失函数是其他自定义的函数时,拟合就会很困难,这是就要对残差做一些近似的操作,利用损失函数的负梯度在当前模型的值作为残差的近似值,从而拟合一个树。

思想类似于最速下降法,根据:

则有:

对于平方损失函数,它就是通常意义上的残差。对于一般损失函数,它就是残差的近似。

提升树的正则化方法:

2.xgboost算法:xgboost也是使用与提升树相同的前向分步算法。其区别在于:xgboost通过结构风险极小化来确定下一个决策树的参数

有一种常见的衡量决策树复杂程度的方法(该复杂度是一个经验公式。事实上还有很多其他的定义复杂度的方式,只是这个公式效果还不错):

THE END
1.如何有效学习算法?算法学习算法设计与分析: 算法设计:学习常用的算法设计技巧,如分治法、动态规划、贪心算法、回溯算法等 算法分析:掌握时间复杂度和空间复杂度分析方法 实践练习: 在线平台:使用LeetCode、HackerRank、Codeforces、AtCoder等在线平台进行算法题目练习 项目实践:参与开源项目或自己动手实现一些算法项目,以实际应用加深理解 https://blog.csdn.net/qq_49548132/article/details/140109291
2.机器学习K邻近算法(KNN)简介腾讯云开发者社区在我们遇到的所有机器学习算法中,KNN很容易成为最简单的学习方法。 尽管它很简单,但是事实证明它在某些任务上非常有效(正如您将在本文中看到的那样)。 甚至更好? 它可以用于分类和回归问题! 但是,它广泛用于分类问题。 我很少看到在任何回归任务上实施KNN。我的目的是说明和强调当目标变量本质上是连续的时,KNN如何https://cloud.tencent.com/developer/article/1520927
3.青少年网络信息安全知识竞赛题库(中职(学)版)网络安全16. 以下选项属于对称加密算法 ( D ) A. SHA B. RSA C. MD5 D. AES 17. 假设使用一种加密算法,它的加密方法很简单:将每一个字母加 5,即 a 加密成 f。 这种算法的密钥就是 5,那么它属于 。 ( A ) A. 对称加密技术 B. 分组密码技术 https://www.wxjsxy.com/xxglzx/wlaq/content_11087
4.机器学习(一)2万多字的监督学习模型总结? KNN 算法可以说是最简单的机器学习算法,构建和预测都非常简单。构建模型只需要保存训练数据集即可。想要对新数据点做出预测,算法会在训练数据集中找到最近的数据点,也就是它的“最近邻”。 ?一个邻居:KNN算法最简单的就是一个最近邻,也就是与我们想要预测的数据点最近的训练数据点。预测结果就是这个训练数https://www.flyai.com/article/515
5.如何系统地学习算法?使用深度优先搜索算法即可解决。本题在其基础上加强了难度,有两种方法可解。第一种方法最简单,直接用https://www.zhihu.com/question/20588261/answer/776221336
6.一年级数学准备课教案(精选13篇)我把这一部分教材进行整合,把教材中十几减9和十几减几这两节课的内容整合到第一节课,集中教学计算方法,再安排练习课进行巩固复习。我比较了苏教版和北师大教材,发现用14-9作为例题最为合适,先从实际问题引入14-9,再让学生联系实际情境和生活经验,探索算法。https://www.unjs.com/jiaoan/shuxue/20220713084600_5290225.html
7.《机器学习》第10章降维与度量分析k近邻学习是一种常用的监督学习方法,无需训练训练集,是较为简单的经典机器学习算法之一,可以处理回归问题和分类问题。 其工作机制很简单:给定测试样本,基于某种距离度量找出训练集中与其最靠近的k个训练样本,然后基于这k个“邻居”的信息来进行预测。一般来说,我们只选择样本数据集中前k个最相似的数据,这就是k近邻算https://www.jianshu.com/p/db8f15c3fe56
8.《长方形和正方形的周长》说课稿范文(通用14篇)学生在交流的基础上,在多次的计算过程中,会逐步实现多种算法的自我优化。算法多样化并不要求学生都能用几种不同方法解决同一个数学问题,算法多样化的核心是每一个学生个性的思考。在算法多样化的基础上进行优化,帮助学生选择最简单、最方便的计算方法。 5、求护栏的钱数https://xiaoxue.ruiwen.com/shuokegao/99265.html
9.TensorFlow机器学习常用算法解析和入门集成学习就是将很多分类器集成在一起,每个分类器有不同的权重,将这些分类器的分类结果合并在一起,作为最终的分类结果。最初集成方法为贝叶斯决策。 集成算法用一些相对较弱的学习模型独立地就同样的样本进行训练,然后把结果整合起来进行整体预测。集成算法的主要难点在于究竟集成哪些独立的较弱的学习模型以及如何把学习https://www.w3cschool.cn/tensorflow/tensorflow-s8uq24ti.html
10.统计学习方法(豆瓣)读完《统计学习方法》的评价 花了2个星期看完了这本书,觉得作者前半部分写的还是挺用心的。当然前面的内容也比较简单。但是最后面两章写的有些莫名其妙,很多东西都根本没有交代清楚,上来就列个公式,都不告诉你是怎么来的。也可能是我水平有限,不过确实感觉作者在后两章节上写的有点应付得感觉 (展开) 3 2回https://book.douban.com/subject/10590856
11.学习,是治愈焦虑的良药只有不断学习、奔跑、更新自己的知识体系,外界发生的变化才不足以影响我们。 相反,如果我们在焦虑的时期选择躺平、摆烂,却不去学习,还抱怨不休,那么我们就会陷入双重困境,无法自拔。 二、建立一套有意识的学习算法 1.人的学习风格天然存在差异 我曾采访过很多人,包括小朋友,发现每个人的学习方法都不一样。在课堂上https://36kr.com/p/2375197738412036
12.集成学习方法目前来说,同质个体学习器的应用是最广泛的,一般我们常说的集成学习的方法都是指的同质个体学习器。而同质个体学习器使用最多的模型是CART决策树和神经网络。同质个体学习器按照个体学习器之间是否存在依赖关系可以分为两类,第一个是个体学习器之间存在强依赖关系,一系列个体学习器基本都需要串行生成,代表算法是boostinghttps://www.yjbys.com/xuexi/fangfa/1655637.html
13.DizzyK/ustccyber教材: 人工智能导论模型与算法, 高等教育出版社, 吴飞 参考书: 机器学习, 清华大学出版社, 周志华 很有名的一本书, 绰号"西瓜书" 参考书: 神经网络与深度学习, 机械工业出版社, 邱锡鹏 教学内容: 搜索, 知识的表示方式, 确定性逻辑推理, 非精确性概率推理, 统计学习方法, 深度学习, 强化学习与博弈 https://toscode.gitee.com/DizzyK/ustc_cyber_security
14.神经网络和深度学习简史但是,这种灾难性的形容的确可以用来描述深度学习在过去几年中的异军突起——显著改善人们对解决人工智能最难问题方法的驾驭能力,吸引工业巨人(比如谷歌等)的大量投资,研究论文的指数式增长(以及机器学习的研究生生源上升)。在听了数节机器学习课堂,甚至在本科研究中使用它以后,我不禁好奇:这个新的「深度学习」会不会https://mse.xauat.edu.cn/info/1037/2151.htm