1. 集成学习(Ensemble Learning)原理
2. 集成学习(Ensemble Learning)Bagging
3. 集成学习(Ensemble Learning)随机森林(Random Forest)
4. 集成学习(Ensemble Learning)Adaboost
5. 集成学习(Ensemble Learning)GBDT
6. 集成学习(Ensemble Learning)算法比较
7. 集成学习(Ensemble Learning)Stacking
1. 前言
我们之前介绍了很多的机器学习的算法,大家有没想过一个问题用所有的方法都试一遍,然后拿结果一起再来判断。其实这种思路在机器学习中完全是可以的,并且有了自己的一个阵营,就是集成学习。集成学习顾名思义是结合了好多的算法一起来进行预测。就像我们想看一部电影前,问问身边看过的几个朋友对这部电影的评价,然后作出一个综合的判断,要不要看这部电影。
2. 集成学习原理
我们之所以要把多个学习器组合在一起,是因为单个学习器往往可能效果不那么好,而多个学习器可以互相帮助,各取所长,就有可能一起决策,把一个学习任务完成得比较漂亮。单个学习器我们称为弱学习器,相对的集成学习则是强学习器。
- 弱学习器:常指泛化性能略优于随机猜测的学习器:例如在二分类问题桑精度略高于50%的分类器。
- 强学习器:通过一定的方式集成一些弱学习器,达到了超过所有弱学习器的准确度的分类器。
根据个体学习器的种类的个数,我们可以分为两种集成学习。
- 所有的个体学习器都是一个种类的,或者说是同质的。比如都是决策树个体学习器,或者都是神经网络个体学习器。
- 所有的个体学习器不全是一个种类的,或者说是异质的。比如我们有一个分类问题,对训练集采用支持向量机个体学习器,逻辑回归个体学习器和朴素贝叶斯个体学习器来学习,再通过某种结合策略来确定最终的分类强学习器,这种集成学习成为Stacking。
同质个体学习器按照个体学习器之间是否存在依赖关系可以分为两类:
- 个体学习器之间存在强依赖关系,一系列个体学习器基本都需要串行生成,代表算法是Boosting系列算法。
- 个体学习器之间不存在强依赖关系,一系列个体学习器可以并行生成,代表算法是Bagging和随机森林(Random Forest)系列算法。下面就分别对这两类算法做一个概括总结。
3. Bagging介绍
Bagging的个体弱学习器的训练集是通过随机采样得到的。通过$T$次的随机采样,我们就可以得到$T$个采样集,对于这$T$个采样集,我们可以分别独立的训练出$T$个弱学习器,再对这$T$个弱学习器通过集合策略来得到最终的强学习器。
下图是决策树的Bagging和KNN的Bagging决策边界:
4. Boosting介绍
Boosting的主要的过程如下图:
Boosting算法的工作机制:
- 首先从训练集用初始权重训练出一个弱学习器1.
- 根据学习器1的学习误差率来更新训练样本的权重,使得之前弱学习器1学习误差率高的训练样本点的权重变高,使得这些误差率高的点在后面的弱学习器2中得到更多的重视。
- 然后基于调整权重后的训练集来训练弱学习器2。
- 如此重复进行,直到弱学习器数达到事先指定的数目$T$。
- 最终将这$T$个弱学习器通过集合策略进行整合,得到最终的强学习器。
Boosting系列算法里最著名算法主要有AdaBoost算法和提升树(GBDT)系列算法。
下图是AdaBoost不同弱学习器个数的决策边界:
5. Stacking介绍
当使用Stacking的结合策略时, 我们不是对弱学习器的结果做简单的逻辑处理,而是再加上一层学习器,也就是说,我们将训练集弱学习器的学习结果作为输入,将训练集的输出作为输出,重新训练一个学习器来得到最终结果。
6. 结合策略
6.1 平均法
- 简单平均法
- 加权平均法
6.2 投票法
- 绝对多数投票法:得票过半数的标记,否则拒绝预测(可靠性要求较高的学习任务)
- 相对多数投票法:得票最多的标记(学习任务要求必须提供预测结果)
- 加权投票法