一、概述
1. 什么是集成学习?
2. 例子
3. 聚类的两大算法
二、Boosting(提升方法)
1. 概述
2. Boosting的两个核心问题
三、AdaBoost
1. 概述
2. AdaBoost两个问题如何解决
3. 算法思想
4. 算法流程
5. 算法过程图示
四、Bagging(装袋法)
1. 概述
2. 自助采样方法(有放回)
五、随机森林
1. 概述
2. 算法思想
3. 随机森林的优缺点:
4. Bagging VS 随机森林
五、集成的合成策略
1. 学习器的组合可以从三个方面带来好处
2. 结合策略
集成学习(ensemble learning)是用多种学习方法的组合来获取比原方法更优的结果。
使用于组合的算法是弱学习算法,即分类正确率仅比随机猜测略高的学习算法,但是组合之后的效果仍可能高于强学习算法,即集成之后的算法准确率和效率都很高。
“三个臭皮匠顶个诸葛亮”
考虑一个简单的例子,在二分类问题中,假定3个分类器在三个样本中的表现如下图所示,其中√ 表示分类正确,X 号表示分类错误,集成的结果通过投票产生。
集成个体应:好而不同,即个体学习器要有一定的“准确性”,即学习器不能太坏,并且要有“多样性”,即学习器间具有差异
(1)个体学习器存在强依赖性、必须串行生成的序列化方法,典型代表是Boosting
(2)个体学习器之间不存在强依赖性、可同时生成的并行化方法,典型代表是Bagging和随机森林(Random Forest)
主要思想是将弱分类器组装成一个强分类器。
在分类问题中,主要思想是将弱分类器组装成一个强分类器。具体地,它通过改变训练样本的权重,学习多个分类器,并将这些分类器进行线性组合,提高分类的性能。
提升方法就是从弱学习算法出发,反复学习,得到一系列弱分类器(又称基分类器),然后组合这些弱分类器,构成一个强分类器。
大多数的提升方法都是改变训练数据的概率分布(训练数据的权值分布),针对不同的训练数据分布调用弱学习算法学习一系列弱分类器。
最著名的提升方法:AdaBoost
如何改变权重?如何将分类器融合成强分类器?
(1)如何在每一轮如何改变训练数据的权值或概率分布?
通过提高那些在前一轮被弱分类器分错样例的权值,减小前一轮分对样例的权值,来使得分类器对误分的数据有较好的效果。
(2)通过什么方式来组合弱分类器?
通过加法模型将弱分类器进行线性组合
AdaBoost是Boosting最著名的提升方法
刚开始训练时对每一个训练例赋相等的权重,然后用该算法对训练集训练t轮,每次训练后,对训练失败的训练例赋以较大的权重,也就是让学习算法在每次学习以后更注意学错的样本,从而得到多个预测函数。通过拟合残差的方式逐步减小残差,将每一步生成的模型叠加得到最终模型。
主要思想:需不断修改误分样本的权重
(1)每一轮如何改变训练数据的权值或概率分布?
AdaBoost:提高那些被前一轮弱分类器错误分类样本的权值,降低那些被正确分类样本的权值
(2)如何将弱分类器组合成一个强分类器?
AdaBoost:加权多数表决,加大分类误差率小的弱分类器的权值,使其在表决中起较大的作用,减小分类误差率大的弱分类器的权值,使其在表决中起较小的作用。
装袋法(Bagging)又称为Bootstrap Aggregating,其原理是通过组合多个训练集的分类结果来提升分类效果
装袋法由于多次采样,每个样本被选中的概率相同,因此噪声数据的影响下降,所以装袋法太容易受到过拟合的影响
Bagging的算法原理和 boosting不同在于训练数据的选取,它的弱学习器之间没有依赖关系,可以并行生成,而Bagging使用的是所有的训练数据。
bagging的个体弱学习器的训练集是通过随机采样得到的。通过T次的随机采样,我们就可以得到T个采样集,对于这T个采样集,我们可以分别独立的训练出T个弱学习器,再对这T个弱学习器通过集合策略来得到最终的强学习器。
采样方法:自助采样
自助采样法(Bootstrap sampling),即对于m个样本的原始训练集,我们每次先随机采集一个样本放入采样集,接着把该样本放回,也就是说下次采样时该样本仍有可能被采集到,这样采集m次,最终可以得到m个样本的采样集,由于是随机采样,这样每次的采样集是和原始训练集不同的,和其他采样集也是不同的,这样得到多个不同的弱学习器。
随机森林(Random Forest,简称RF)是bagging的一个扩展变种,他的随机体现在:采样的随机性,属性选择的随机性。
随机森林使用了CART决策树作为弱学习器;
在使用决策树的基础上,RF对决策树的建立做了改进,对于普通的决策树,我们会在节点上所有的n个样本特征中选择一个最优的特征来做决策树的左右子树划分,但是RF通过随机选择节点上的一部分样本特征,这个数字小于n,假设为nsub, 然后在这些随机选择的nsub个样本特征中,选择一个最优的特征来做决策树的左右子树划分。这样进一步增强了模型的泛化能力。(即:)
如果nsub=n,则此时RF的CART决策树和普通的CART决策树没有区别。nsub越小,则模型越健壮,当然此时对于训练集的拟合程度会变差。也就是说nsub越小,模型的方差会减小,但是偏倚会增大。
在实际案例中,一般会通过交叉验证调参获取一个合适的nsub的值。
优点:
1) 训练可以高度并行化,对于大数据时代的大样本训练速度有优势。
2) 由于可以随机选择决策树节点划分特征,这样在样本特征维度很高的时候,仍然能高效的训练模型。
3) 在训练后,可以给出各个特征对于输出的重要性
4) 由于采用了随机采样,训练出的模型的方差小,泛化能力强。
5) 相对于Boosting系列的Adaboost和GBDT, RF实现比较简单。
6) 对部分特征缺失不敏感。
缺点:
1)在某些噪音比较大的样本集上,RF模型容易陷入过拟合。
2) 取值划分比较多的特征容易对RF的决策产生更大的影响,从而影响拟合的模型的效果。
随着个体学习器数目的增加,随机森林通常胡收敛到更低的泛化误差;随机森林的训练效率常优于Bagging。
(一开始,随机森林的效果较差,弱学习器性能不够好,随着弱学习器数量增加,其性能更好。整体来说,随机森林比Bagging效果更好)
(b)计算的原因(学习算法往往会出现局部最小,泛化性较差,通过使用多个学习器的组合,可以达到更好的效果)
(c)表示的原因(真实假设可能不在假设空间,单一学习器会出现预测错误,但是融合之后假设空间会扩大,效果可能会更好)
(1)平均法(2)加权平均法
(3)投票法:绝对多数投票法,相对多数投票法,加权投票法
(4)Stacking (5)贝叶斯模型平均