【集成学习】通过构建并结合多个学习器来完成学习任务,又被称为多分类器系统(multi-classifier system)、基于委员会的学习(committe-based learning)
主要通过不同学习框架生产基学习器,并综合多有基学习器的预测结果来改善单个基学习器(based learner) 的识别率和泛化性
个体学习器可以选择:决策树、神经网络等等
集成时可以所有个体学习器属于同一种算法(同质的);也可以来自不同的算法
<常见的集成学习框架>
Bagging,Boosting 和 Stacking
【Bagging】 Bootstrap aggregating,也称作“套袋法”。个体学习器间不存在强依赖关系,并行式集成学习方法。每个基学习器都会对训练集进行有放回抽样得到子训练集,比较著名的采样法为 0.632 自助法。每个基学习器基于不同子训练集进行训练,并综合所有基学习器的预测值得到最终的预测结果。Bagging 对分类任务使用简单投票法(voting),票数最多的类别为预测类别;对回归任务使用简单平均法。
若分类预测时,两个类收到一样的票数,最简单的做法时随机选一个。
与标准的AdaBoost只适用于二分类任务不同,Bagging能不经修改地用于多分类、回归等任务。
算法:
自助采样的优点:
- 与标准的AdaBoost只适用于二分类任务不同,Bagging能不经修改地用于多分类、回归等任务
- 集成学习高效。假设基学习器的计算复杂度为O(m),则Bagging的复杂度大致为T(O(m)+O(s)) ,考虑到采样与投票/平均过程的复杂度O(s)很小,而T通常是一个不太大的常数,因此训练一个Bagging集成与直接使用基学习器训练一个学习器的复杂度同阶
- 初始训练集中有36.8%的样本可做验证集来对泛化性能进行包外估计(out-of-bag estimate)。因为每个基学习器只使用了初始训练集的63.2%的样本。
<包外样本?>
没进入bagging的那36.8%的样本,有多个用途:
1. 当基学习器是决策树时,可用包外样本辅助剪枝
2. 用于估计决策树中各节点的后验概率,辅助对零训练样本节点的处理
3. 当基学习器是神经网络时,可用包外样本辅助早期停止,减小过拟合风险
<拓展:什么是0.632自助法>
【bootstrap sampling】:自助采样法,有放回的均匀抽样
每当选中一个元组,这个元组同样也可能再次被选中并再次添加到训练集中。例如,想象一台从训练集中随机选择元组的机器,在有放回的的抽样中,允许机器多次选择同一个元组。
最常用的自助方法是0 .632自助法
假设给定的数据集包含d个元组,该数据集有放回的抽样d次,产生d个样本的自助样本集或训练集。原始数据元祖中的某些元组很可能在该样本集中出现多次。没有进入该训练集的数据元组最终形成检验集。假设进行这样的抽样多次。其结果是:在平均情况下,63.2%原始数据元组将出现在自助样本中,而其他36.8%的元组将形成检验集。
<0,632怎么来的?>
每个元组被选中的概率是 1/d, 因此未被选中的概率是(1-1/d), 需要挑选 d 次,因此一个元组在 d 次都未被选中的概率是(1-1/d)^d。如果 d 很大,该概率近似为 e^(-1)=0.368。因此36.8%的元组将作为验证集。
<举个例子🌰?>
Bagging方法更 像是一个集体决策的过程,每个个体都进行单独学习,学习的内容可以相同,也可以不同,也可以部分重叠。但由于个体之间存在差异性,最终做出的判断不会完全一致。在最终做决策时,每个个体单独作出判断,再通过投票的方式做出最后的集体决策。
代表模型:
Random Forest
【Boosting】可将弱学习器提升为强学习器的算法。个体学习器间存在强依赖关系,必须串行。训练过程为阶梯状,基模型的训练是有顺序的,每个基模型都会在前一个基模型学习的基础上进行学习,最终综合所有基模型的预测值产生最终的预测结果,用的比较多的综合方式为加权法。
思想
给定初始训练数据,由此训练出第一个基学习器;
根据基学习器的表现对样本进行调整,在之前学习器做错的样本上投入更多关注;
用调整后的样本,训练下一个基学习器;
重复上述过程 T 次,将 T 个学习器加权结合。
<举个例子🌰?>
Boosting的过程很类似于人类学习的过程(learn from your mistakes),我们学习新知识的过程往往是迭代式的,第一遍学习的时候,我们会记住一部分知识,但往往也会犯 一些错误,对于这些错误,我们的印象会很深。第二遍学习的时候,就会针对犯过错误的知识加强学习,以减少类似的错误发生。不断循环往复,直到犯错误的次数减少到很低的程度。
代表模型:
AdaBoost, GBDT
【Stacking】先用全部数据训练好基模型,然后每个基模型都对每个训练样本进行的预测,其预测值将作为训练样本的特征值,最终会得到新的训练样本,然后基于新的训练样本进行训练得到模型,然后得到最终预测结果。
stacking算法使用的是“学习法”,是一种分层模型集成框架
原理
以两层为例,首先将数据集分为训练集和测试集,利用训练集训练得到多个初级学习器,然后用初级学习器对测试集进行预测,并将输出值作为下一阶段训练的输入值,最终的标签作为输出值,用于训练次级学习器(通常最后一级用logistic regression)。由于两次所使用的训练数据不同,因此可以在一定程度上防止过拟合。
由于要进行多次训练,因此这种方法要求训练数据很多,为了防止发生划分训练集和测试集后,测试集比例过小,生成的次级学习器泛化性能不强的问题,通常在Stacking算法中会使用交叉验证法或留一法来进行训练。
<为什么集成学习器比单个学习器好?>
- 训练样本可能无法选择出最好的单个学习器,由于没法选择出最好的学习器,所以干脆结合起来一起用;
- 假设能找到最好的学习器,但由于算法运算的限制无法找到最优解,只能找到次优解,采用集成学习可以弥补算法的不足;
- 可能算法无法得到最优解,而集成学习能够得到近似解。比如说最优解是一条对角线,而单个决策树得到的结果只能是平行于坐标轴的,但是集成学习可以去拟合这条对角线。
-------如果觉得太抽象了可以参考下面-------------
集成并不是不管怎么选择学习器,怎么组合都一定会获得更好的效果,最好的情况是,每个学习器都不是特别差,并且要具有一定的多样性,否则可能集成后的会没有效果,或者起负作用
<集成学习的偏差与方差>
【偏差(bias)】描述的是预测值和真实值之差
【方差(variance)】描述的是预测值作为随机变量的离散程度
<模型的偏差与方差>
【偏差】
描述样本拟合出的模型的预测结果的期望与样本真实结果的差距,要想偏差表现的好,就需要复杂化模型,增加模型的参数,但这样容易过拟合,过拟合对应上图的 High Variance,点会很分散。低偏差对应的点都打在靶心附近,所以瞄的很准,但不一定很稳
【方差】
描述样本上训练出来的模型在测试集上的表现,要想方差表现的好,需要简化模型,减少模型的复杂度,但这样容易欠拟合,欠拟合对应上图 High Bias,点偏离中心。低方差对应就是点都打得很集中,但不一定是靶心附近,手很稳,但不一定瞄的准。
通常,集成学习中的基学习器是弱模型,通常来说弱模型是偏差高(在训练集准确度低)方差小( 防止过拟合能力强)的模型,但并不是所有集成学习框架的基模型都是弱学习器。Bagging和Stacking中的基模型为强模型(偏差低,方差 高),而Boosting这基学习器为弱模型(偏差高,方差低)
在Bagging 和 Boosting 框架中,通过计算基模型的期望和方差我们可以得到模型整体的期望和方差。为了简化模型,假设基模型的期望为μ,方差为σ^2,模型的权重为r,两两模型间的相关系数ρ相等。由于Bagging和Boosting的基模型都是线性组成的,那么有:
模型总体期望:
模型总体方差:
模型的精准度可由偏差和方差共同决定:
<Bagging的偏差和方差>
对于 Bagging 来说,每个基模型的权重等于 1/m 且期望近似相等,故我们可以得到:
- 整体模型的期望等于基模型的期望,这也就意味着整体模型的偏差和基模型的偏差近似。
- 整体模型的方差小于等于基模型的方差,当且仅当相关性为 1 时取等号,随着基模型数量增多,整体模型的方差减少,从而防止过拟合的能力增强,模型的准确度得到提高。但是,模型的准确度一定会无限逼近于 1 吗?并不一定,当基模型数增加到一定程度时,方差公式第一项的改变对整体方差的作用很小,防止过拟合的能力达到极限,这便是准确度的极限了。
为什么 Bagging 中的基模型一定要为强模型,如果 Bagging 使用弱模型则会导致整体模型的偏差提高,而准确度降低。
经典Bagging框架:Random Forest
Random Forest 是经典的基于 Bagging 框架的模型,并在此基础上通过引入特征采样和样本采样来降低基模型间的相关性,在公式中显著降低方差公式中的第二项,略微升高第一项,从而使得整体降低模型整体方差。
<Boosting 的偏差与方差>
对于 Boosting 来说,由于基模型共用同一套训练集,所以基模型间具有强相关性,故模型间的相关系数近似等于 1,针对 Boosting 化简公式为:
通过观察整体方差的表达式我们容易发现:
- 整体模型的方差等于基模型的方差,如果基模型不是弱模型,其方差相对较大,这将导致整体模型的方差很大,即无法达到防止过拟合的效果。因此,Boosting 框架中的基模型必须为弱模型。
- 此外 Boosting 框架中采用基于贪心策略的前向加法,整体模型的期望由基模型的期望累加而成,所以随着基模型数的增多,整体模型的期望值增加,整体模型的准确度提高。
基于 Boosting 框架的 Gradient Boosting Decision Tree 模型中基模型也为树模型,同 Random Forrest,我们也可以对特征进行随机抽样来使基模型间的相关性降低,从而达到减少方差的效果。
<集成学习有效的前提条件>
- 每个基分类器的错误率都应当低于0.5,否则集成的结果反而会提高错误率。
- 每个基分类器应该尽可能相互独立,这是因为如果每个基分类器分类结果差不多,则集成后的分类器整体和单个分类器做出的决策实际上没有什么差异。
<集成学习优点>
- 统计学角度:多学习器可以获得一个相对稳定的假设空间,以减少泛化误差
- 计算角度:集成可降低陷入局部最优的可能性
- 表示角度:多学习器可以让假设空间有所扩大,有可能学到更好的近似
<总结>
|
“核心思想”
|
简单介绍
|
优点
|
|
|
bagging
|
民主
|
所有基模型一致对待,每个基模型手里只有一票,然后民主投票得到最终结果
|
方差(variance)更小
|
|
boosting
|
挑选精英
|
基模型不一致对待,经过不停的考验和筛选,挑选出“精英”,给精英更多投票权,表现不好的基模型给较少的投票权,然后综合所有基模型的投票得到最终结果
|
偏差(bias)更小
|
|
样本选择
|
样例权重&预测函数
|
并行/串行
|
|
|
bagging
|
训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。
|
每个样例的权重相等;所有预测函数的权重相等。
|
并行
|
|
boosting
|
每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。
|
根据错误率不断调整样例的权值,错误率越大则权重越大; 每个弱分类器都有相应的权重,对于分类误差小的分类器的预测函数会有更大的权重。
|
串行
|
references:
浙公网安备 33010602011771号