目录
一、模型融合
模型融合,又叫集成学习(Ensemble Learning),它不是指具体的某一个算法,而是一种把多个弱模型合并在一起变成一个强模型的思想。
1、模型融合的原因
- 单个模型容易发生过拟合,多个模型融合可以提高泛化能力
- 单个模型模型预测精度不高,多个模型往往能提升预测能力
- 对于数据集过大或者过小,可以分别进行划分和有放回的操作产生不同的数据子集,然后使用数据子集训练不同的分类器,最终再合并成为一个大的分类器;
- 对于多个异构的特征集的时候,很难进行融合,那么可以考虑每个数据集构建一个分类模型,然后将多个模型融合。
- 模型融合算法成功的关键在于能保证弱分类器(弱模型)的多样性(diversity),融合不稳定的学习算法能得到更明显的性能提升。
2、融合方法
-
投票法 (Voting)
如果是分类模型,每一个模型都会给出一个类别预测结果,
可以通过投票的方式,按照少数服从多数的原则融合得到一
个新的预测结果。 -
均值法 (Averaging)
如果是回归模型,每一个模型给出的预测结果不是类别,而
是一个数值,这个时候我们可以通过求所有子模型的预测结
果的均值作为最终的融合结果。这就是Averaging的融合方
法。
二、 融合框架
Voting
和Averaging
是模型融合底层最基础的方法,但是在顶层还有两种经典的融合框架:Bagging
和Boosting
。
1、 bagging 融合框架
Bagging融合就是采用 有放回抽样(Bootstrap
抽样,又叫重采样,自助抽样法)的方法,用K次抽样的样本来训练得到K个子模型,然后对K个模型结果最后进行Voting或者Averaging融合。它的主要流程是:
- 重复进行K次Bootstrap抽样(每次抽样的样本数量与总体样本数量保持一致)
- 对K个抽样得到的训练样本进行训练得到K个子模型
- 对K个子模型的结果进行融合:分类用voting,回归用Averaging
- 基于Bagging融合框架的典型算法代表是
随机森林
,它的子模型采用的是决策树算法
。
2、 Boosting 融合框架
Boosting融合在每一次训练模型的时候都更加关注上一次模型错判的样例,会给这些错判的样例更大的权重,这样做的目的就是为了加强对错判样本的学习,让模型通过不断的迭代,效果越来越好。最终将多次迭代训练得到的弱模型
进行加权求和,得到最终的强模型
。
基于Boosting融合框架的典型算法代表是 Adaboost
,GBDT
(梯
度提升决策树)
3、 bagging 和 boosting 的区别
-
Bagging 融合
是一种并行
方法(同时并行处理K个子模型),而Boosting融合是一种迭代的方法,它是串行
的 -
Bagging融合
更关注的是得到一个更稳定
的模型,而Boosting融合关注的是得到一个预测能力
更强的模型
三、随机森林
1、算法概述
- 随机森林,顾名思义,就是由很多决策树模型融合在一起的算法。
- 随机森林是一种基于Bagging框架的模型融合算法
- 随机森林的“森林”指的就是它的弱模型是由决策树算法训练的(具体是CART算法),CART算法既能做分类也能做回归
- 随机森林的“随机”指的是构造的若干个弱模型是有一定的“随机性”的
2、随机性
2.1、数据的随机选取
- 首先,从原始的数据集中采取有放回的抽
样,构造子数据集,子数据集的数据量是
和原始数据集相同的。不同子数据集的元
素可以重复,同一个子数据集中的元素也
可以重复。 - 第二,利用子数据集来构建子决策树,将
这个数据放到每个子决策树中,每个子决
策树输出一个结果。 - 最后,如果有了新的数据需要通过随机森
林得到分类结果,就可以通过对子决策树
的判断结果的投票,得到随机森林的输出
结果了。
2.2、待选特征的随机选取
3、随机森林的特点
- 它可以处理数千个输入变量而无需变量删除。
- 它给出了对分类中哪些变量重要的估计。
- 随着森林建设的进展,它会产生对泛化误差的内部无偏估计。
- 它有一种估算缺失数据的有效方法,并在大部分数据丢失时保持准确性。
- 它具有平衡类群不平衡数据集中的错误的方法。
- 可以保存生成的林以备将来用于其他数据。
- 计算原型,提供有关变量和分类之间关系的信息。
4、The out-of-bag(oob) error estimate oob误差估计
- 袋外误差(out-of-bag error)是Bagging融合框架独有的一个术语,我们先来理解什么叫袋外。
- 由于Bagging融合方法使用了有放回的Boostrap抽样,必然导致随机森林的每一个子模型训练样本不是全部样本,这样就很容易理解袋外了:那些没有被子模型抽中的样本就是这个子模型的袋外样本,所以每一个样本可能都是若干个子模型的袋外样本,你可以把这些袋外样本作为该子模型的测试集。
- 知道了袋外样本的定义之后,那么袋外误差就是用袋外样本评估模型得到的误差。之前我们是把数据集拆分为训练集和测试集,用测试集来评估模型的误差。现在,随机森林算法由于存在袋外样本,所以,那些袋外样本天然的就可以作为测试集对模型进行评估。所以理论上随机森林算法可以不用人为的拆分训练集和测试集,我们通过查看袋外误差也能达到评估模型的目的。
5、随机森林模型中几个比较重要的结果
- feature_importances_ :特征变量的重要性,可以用来进行变量筛选
- oobscore :袋外误差率,用来评估模型
四、Adaboost 算法
AdaBoost
是 adaptive boosting 的缩写,一种基于Boosting融合框架
的算法。
基础算法用的是决策树
。
1、Adaboost 算法基本原理
2、 Adaboost算法构建过程
注意其中的两个权值计算公式;