笔记来自:https://www.cnblogs.com/pinard/p/6131423.html
首先对集成学习的做一些概述。
集成学习(ensemble learning)本身不是一个单独的机器学习算法,而是通过构建并结合多个机器学习器来完成学习任务。也就是我们常说的“博采众长”。集成学习可以用于分类问题集成,回归问题集成,特征选取集成,异常点检测集成等等,可以说所有的机器学习领域都可以看到集成学习的身影。
从下图,我们可以对集成学习的思想做一个概括。对于训练集数据,我们通过训练若干个个体学习器,通过一定的结合策略,就可以最终形成一个强学习器,以达到博采众长的目的。
集成学习的第一个问题就是如何得到若干个个体学习器。这里我们有两种选择。第一种就是所有的个体学习器都是一个种类的,或者说是同质的。比如都是决策树个体学习器,或者都是神经网络个体学习器。第二种是所有的个体学习器不全是一个种类的,或者说是异质的。比如我们有一个分类问题,对训练集采用支持向量机个体学习器,逻辑回归个体学习器和朴素贝叶斯个体学习器来学习,再通过某种结合策略来确定最终的分类强学习器。
目前来说,同质个体学习器的应用是最广泛的,一般我们常说的集成学习的方法都是指的同质个体学习器。而同质个体学习器使用最多的模型是CART决策树和神经网络。同质个体学习器按照个体学习器之间是否存在依赖关系可以分为两类,第一个是个体学习器之间存在强依赖关系,一系列个体学习器基本都需要串行生成,代表算法是boosting系列算法,第二个是个体学习器之间不存在强依赖关系,一系列个体学习器可以并行生成,代表算法是bagging和随机森林(Random Forest)系列算法。
下面收集了一些机器学习面试中关于集成学习的题目以及我对它们的理解。
1.bagging和boosting的原理是什么,以及它们的区别
答:
-
boosting算法的工作机制是首先从训练集用初始权重训练出一个弱学习器1,根据弱学习的学习误差率表现来更新训练样本的权重,使得之前弱学习器1学习误差率高的训练样本点的权重变高,使得这些误差率高的点在后面的弱学习器2中得到更多的重视。然后基于调整权重后的训练集来训练弱学习器2.,如此重复进行,直到弱学习器数达到事先指定的数目T,最终将这T个弱学习器通过集合策略进行整合,得到最终的强学习器。
提升⽅法是⼀个迭代的过程,通过改变样本分布,使得分类器聚集在那些很难分
的样本上,对那些容易错分的数据加强学习,增加错分数据的权重,这样错分的数据再下⼀
轮的迭代就有更⼤的作⽤(对错分数据进⾏惩罚) -
bagging的个体弱学习器的训练集是通过随机采样得到的。通过T次的随机采样,我们就可以得到T个采样集,对于这T个采样集,我们可以分别独立的训练出T个弱学习器,再对这T个弱学习器通过集合策略来得到最终的强学习器。
该⽅法是通过降低基分类器⽅差来改善泛化能⼒,因此Bagging的性能依赖于基分类器的稳定性,如果基分类器是不稳定的,Bagging有助于减低训练数据的随机扰动导致的误差,但是如果基分类器是稳定的,即对数据变化不敏感,那么Bagging⽅法就得不到性能的提升,甚⾄会降低。 -
二者的区别
- boosting算法的个体学习器之间存在强依赖关系,一系列个体学习器基本都需要串行生成;bagging算法的个体学习器之间不存在强依赖关系,一系列个体学习器可以并行生成。
在于Bagging的训练集的选择是随机的,各轮训练集之间相互独立,而Boostlng的训练集的选择是独立的,各轮训练集的选择与前面各轮的学习结果有关;Bagging的各个预测函数没有权重,而Boosting是有权重的;Bagging的各个预测函数可以并行生成,而Boosting的各个预测函数只能顺序生成。**(下面是二者的优缺点:)**对于象神经网络这样极为耗时的学习方法。Bagging可通过并行训练节省大量时间开销。bagging和boosting都可以有效地提高分类的准确性。在大多数数据集中,boosting的准确性比bagging高。在有些数据集中,boosting会引起退化。—Overfit - bagging是减少variance,⽽boosting是减少bias。Bagging 是 Bootstrap Aggregating
的简称,意思就是再取样 (Bootstrap) 然后在每个样本上训练出来的模型取平均,所以
是降低模型的 variance. Bagging ⽐如 Random Forest 这种先天并⾏的算法都有这个效
果。Boosting 则是迭代算法,每⼀次迭代都根据上⼀次迭代的预测结果对样本进⾏加
权,所以随着迭代不断进⾏,误差会越来越⼩,所以模型的 bias 会不断降低。这种算
法⽆法并⾏。https://blog.csdn.net/anshuai_aw1/article/details/82911612
- boosting算法的个体学习器之间存在强依赖关系,一系列个体学习器基本都需要串行生成;bagging算法的个体学习器之间不存在强依赖关系,一系列个体学习器可以并行生成。
2.bagging的采样问题
答:一般采用的是自助采样法(Bootstap sampling),即对于m个样本的原始训练集,我们每次先随机采集一个样本放入采样集,接着把该样本放回,也就是说下次采样时该样本仍有可能被采集到,这样采集m次,最终可以得到m个样本的采样集,由于是随机采样,这样每次的采样集是和原始训练集不同的,和其他采样集也是不同的,这样得到多个不同的弱学习器。
3.stacking原理
答:Stacking是一种集成学习算法,很多算法可以视作它的特例,它也是一种很重要的结合策略。主要的原理也很简单,我们根据训练集训练出T个初级学习器,这些初级学习器更多的时候是互不相同的,比如可能是决策树,神经网络等,当然也可能是相同的,比如都是决策树。然后我们还有一个次级学习器(也叫元学习器),我们拿所有的初级学习器的输出作为次级学习器的输入来训练次级学习器,最后得到一个总的学习器。