集成方法
- Bagging
- Boosting
- Stacking
集成学习(Ensemble Learning),基于多个学习算法的集成,提升预测结果。
- 多个弱学习器通过一定的策略结合成一个强学习器。
- 集成学习不是一个算法,是算法的门类。
The process by which multiple models are strategically generated and combined in order to better solve a particular Machine Learning problem.
清华大学-数据挖掘:集成学习
如何创建多个、不同的基础分类器/基础学习器/基分类器:
- 使用不同的学习算法:DT,SVM,NN,KNN,…
- 使用不同的训练过程:
- 不同的参数
- 不同的训练集:bootstrap samples(有放回采样)
- 不同的特征集
基学习器
基分类器:
- 基分类器不需要很强;强分类器可能会有很多问题
- 基分类器需要有较大的差异,差异性过小的分类器被集成没有意义
- 基分类器的精度最好略高于0.5(正确分类率)
随着集成规模的增加,低于0.5的弱分类器会导致集成分类准确率不断下降,而高于0.5则会提升模型的准确率(趋于1)
结合策略
怎么将基分类器的结果结合起来?
- 平均法
- 投票法
- 学习法
平均法
平均法(Averaging):取所有基础学习器(基分类器)的输出结果的平均作为最终决策
$$H(x)=\sum_{i=1}^T\omega_ih_i(x)$$
其中
- 共$T$个基础学习器(弱学习器)${h_1,\cdots,h_T}$
- 对任意一个样本$x$,$h_i(x)$为第$i$个学习器的分类结果
- $\omega_i$为基础学习器$h_i$的权重,$\omega_i\geq0,\ \sum_{i=1}^T\omega_i=1$
- 预测类别为${c_1,c_2,\cdots,c_K}$
最简单的平均是\textbf{算数平均}:
$$\omega_i=\frac{1}{T}$$
$$H(x)=\frac{1}{T}\sum_{i=1}^Th_i(x)$$
投票法
投票法(Voting):使用所有基础学习器(基分类器)结果的凸组合作为最终决策
- 相对多数投票法(Plurality Voting):少数服从多数;分类问题中,对样本的预测结果中票数最多的那个类别作为最终的分类类别;若获得最高票的类别不止一个,则随机选择其中一个作为最终类别
- 绝对多数投票法(Majority Voting):票过半数;多个基分类器对某一类别的预测结果大于总投票结果的一半,则预测结果为该类别,否则拒绝预测
- 加权投票法(Weighted Majority Voting):类似加权平均法;给予每个基分类器的预测结果权重,计算各类别的加权票数和,票数最高的那个类别作为最终预测类别
如:AdaBoost
学习法
- General Combiner:Stacking
- Piecewise Combiner:RegionBoost
类别
集成学习的集成方法按基分类器连接方式分为两种:
- 序列集成(sequential ensemble):基分类器按照顺序生成;基分类器之间存在依赖关系;通过对前面训练中错误——Boosting
- 并行集成(parallel ensemble):基学习器可以并行生成;利用基学习器之间的独立性,通过平均可以显著降低分类错误——Bagging
Bagging
Bagging(Bootstrap Aggregating):对样本进行Bootstrap随机采样(Bootstrap sampling),得到k个训练集,对每个训练集训练一个弱学习器(弱分类器),得到k个分类器,通过一定的结合策略,得到一个强学习器。
Boosting
- AdaBoost
- XGBoost
- LightGBM
- CatBoost
- Boosting Tree(提升树)
Boosting算法(提升方法),是一类可以用来减小监督式学习中偏差的机器学习算法;将弱分类器提升为强分类器。
- Boosting会减小在上一轮训练正确的样本的权重,增大错误样本的权重
AdaBoost
- 每次使用的是全部样本
- 每轮训练改变样本的权重
- 下一轮训练的目标是找到一个函数来拟合上一轮训练后的残差
- 当残差足够小或达到设置的最大迭代次数时停止训练
Stacking
- 是Bagging的升级版
- 改进预测
- 结合策略是“学习法”
- 将训练集弱学习器(基学习器)的学习结果作为输入,将训练集的输出作为输出,重新训练一个学习器来得到最终决策
- 这里称弱学习器为初级学习器,最后用于结合的学习器称为次级学习器
- 对于测试集,先用初级学习器预测一次,得到次级学习器的输入(Input),再用次级学习器预测一次,得到最终的预测结果
Bagging vs Boosting
相同点
- 都是模型融合的方法
- 可以将弱分类器融合形成一个强分类器,融合之后的分类效果比最好的弱分类器效果更好
不同点
Bagging | Boosting | |
---|---|---|
样本选择 | 训练集是在原始数据集中有放回抽取的 | 每一轮的训练集不变 |
从原始数据集中选出的各轮训练集之间相互独立 | 每轮的训练集中每个样例在分类器中的权重发生变化;权值根据上一轮的分类结果进行调整 | |
样例权重 | 每个样例的权重相等 | 根据错误率不断调整样例的权重; 错误率越大则权重越大 |
基分类器 | 所有基分类器权重相等 | 分类误差小的基分类器权重更大 |
并行计算 | 基分类器可以并行生成 | 基分类器只能序列生成 |
bias-variance | 减少variance | 减少bias |
为什么“Bagging是减少Variance,而Boosting是减少Bias”?
- Bagging对样本重采样(bootstrap),对每一轮采样得到的子样本集训练一个模型,最后对模型的结果取均值。
- 由于子样本集的相似性及基分类器都是同种模型,所以各模型有近似相等的Bias和Variance
- 因为$E\left[\frac{\sum_iX_i}{n}\right]=E(X_i)$,所以bagging后的Bias和单个基分类器接近,所以不能“显著降低Bias”
- 若各基分类器独立,则有
$$Var\large(\frac{\sum_iX_i}{n}\large)=\frac{Var(X_i)}{n}$$
因此可以“显著降低Variance” - 若各基分类器完全相同,则
$$Var\left(\frac{\sum_iX_i}{n}\right)=Var(X_i)$$
此时不会“降低Variance” - Bagging得到的各基分类器具有一定的相关性,但又不完全相同,所以可以“一定程度地降低Variance”
- Boosting使用forward-stagewise(贪心法)最小化损失函数$L(y,\sum_ia_if_i(x))$
- 在第$n$步,求解新的子模型$f(x)$及步长$a$来最小化$L(y, f_{n-1}(x)+af(x))$($f_{n-1}(x)$是前$n-1$步得到的子模型的和)
- Boosting是在“Sequential”地最小化损失函数,其Bias逐步下降
- Boosting的基分类器之间是强相关的,所以并不能“显著降低Variance”