写在前面
说起集成学习,更多的是想传递一种观念,就是利用多个分类器集成,组合实现强分类。当然了,也不仅仅是用在分类中,回归问题集成,特征选取集成,异常点检测集成等等,可以说所有的机器学习领域都可以看到集成学习的身影。
先定义一些基本的,容易混淆的,关于学习器的概念
- 强学习器:Strong learner,相对于弱学习器而言的概念,强学习器指的是可以预测相当准确结果的学习算法。
- 弱学习器:Weak learner,相对于强学习器而言,通常这些弱学习器预测的结果只比随机结果稍好一些。
- 基学习器:Base Learner,集成学习中的个体学习器,基学习器经常是弱学习器,但是并非必须是弱学习器。
- 基学习算法:Base Learning Algorithm,基学习器所基于的算法,基学习器基于基学习算法生成,比如通过不同的训练集,经过训练之后,生成的不同参数的机器学习模型。
- 同质基学习器:Homogeneous Base Learner,指使用同样的基学习算法生成的基学习器
- 异质基学习器:Heterogeneous Base Learner,指使用不同的基学习算法生成的基学习器
集成学习算法两步走
- 构建基学习器:生成一系列基学习器,这个过程可以是并行的(Parallel)也可以是顺序的(Sequential)(在顺序型的生成过程中,前期生成的基学习器会对后续生成的学习器有影响)
- 组合基学习器:这些基学习器被组合起来使用,最常见的组合方法比如用于分类的多数投票(majority
voting),以及用于回归的权重平均(weighted averaging)。
集成学习算法构成方法分两类
- 平行方法: 构建多个独立的学习器,取他们的预测结果的平均 个体学习器之间不存在强依赖关系,一系列个体学习器可以并行生成。通常是同质的弱学习器,代表算法是Bagging和随机森林(Random Forest)系列算法。
- 顺序化方法: 多个学习器是依次构建的 个体学习器之间存在强依赖关系,因为一系列个体学习器需要串行生成 。通常是异质的学习器,代表算法是Boosting系列算法,比如AdaBoost,梯度提升树(GBDT)等
也就是说,如何定义一个完整的集成学习算法,有几个问题需要考虑: 如何生成若干个基学习器; 如何选择一种组合策略,将这些个体学习器集合成一个强学习器。
集成学习算法的策略三种
集成学习的算法策略有许多种,主要有三个比较有代表性的:Boosting、Bagging、Stacking。
为了说明这三种方法,定义一个二元分类任务:
X表示样例空间,Y表示分类标签,即{-1,+1} 训练数据集D={(x1,y1),(x2,y2),…,(xm,ym)},其中xi∈X,yi∈Y(i=1,…,m)
Boosting
Bagging
Stacking
参考文献
https://zhuanlan.zhihu.com/p/445039170 https://cs.nju.edu.cn/zhouzh/zhouzh.files/publication/springerEBR09.pdf
|