Ensemble Learning
集成学习简介
集成学习(Ensemble Learning)通过构建并结合多个学习器来完成学习任务,也被称为多分类器系统(multi-classifier system)、基于委员会的学习(committee-based leLrning)等。
集成学习的原理可以简洁概括为综合对样本有不同鉴别力的分类器的优势,使错误率最小。通过产生一组个体学习器,再用某种策略将其结合起来。个体学习器由一个现有学习算法从训练数据中产生,如决策树算法、BP神经网络算法等,集成中至包含同种类型的个体学习器称为基学习器,相应算法为基学习算法,基学习器也被称为弱学习器。集成中包含不同类型的基学习器称为异质集成,相应的称为组件学习器。
通常要求基学习器相互独立且正确率大于50%,性能好切具有多样性的基分类器结合效果较优。根据个体学习器的生成方式,集成学习大致分为两类:
- 个体学习器间存在强依赖关系、串行生成的序列化方法,如Boosting
- 个体学习器间不存在强依赖关系、可同时生成的并行化方法,如Bagging和随机森林(Random Forest)
集成学习方法
Boosting
Boosting一族可将弱学习器提升为强学习器,最著名的代表为AdaBoost,这类算法流程如下:
- 从初始训练集训练出一个基学习器
- 根据基学习器表现调整训练样本分布,加大对做错训练样本的关注,基于调整后的样本分布训练下一个基学习器
- 重复步骤2,直至基学习器数量达到指定期望$T$个基学习器加权结合
代码实现
1 | import imageio |
运行结果
Bagging
Bagging是并行式集成学习方法最著名的代表,其算法流程如下:
- 首先进行自助采样(bootstrap sampling),有放回的从给定包含$m$个训练样本的数据集中随机采样出$T$个含$m$个样本的采样集
- 基于每个采样集训练出一个基学习器
- 将基学习器按照某种策略结合,一般采用投票策略
算法复杂度:基分类器复杂度 + 投票复杂度
由于每个基学习器只使用了部分训练集样本,剩余样本可用作验证集来对泛化性能进行“包外估计”。
随机森林
随机森林是多决策树的Bagging,通常情况下 随机森林相较于Bagging会收敛到更低的泛化误差,且训练速度更快,其算法流程如下:
- 随机自助采样出$T$个含有$m$个样本的采样集
- 每个采样集随机选择$k$个属性子集构建不剪枝的决策树,形成随机森林,推荐$k=log_2d$,$d$为属性总数
- 对于新样本经过随机森林进行决策,一般取得票最高的为分类结果
结合策略
平均法
- 简单平均法:$$H(x)=\frac{1}{T}\sum^T_{i=1}h_i(x)$$
- 加权平均法:$$H(x)=\sum^T_{i=1}w_ih_i(x)$$
$w_i$是$h_i$的权重,通常$w_i\geq0,\sum^T_{i=1}w_i=1$
投票法
绝对多数投票法:
$$H(x)=c_j \space if \space \sum^T_{i=1} h^j_i(x)>0.5\sum^N_{k=1}\sum^T_{i=1}h_i^k(x) \space else \space reject$$
相对多数投票法:$$H(x)=c_{\underset{j}{argmax}}\sum^T_{i=1}h^j_i(x)$$
加权投票法:$$H(x)=c_{\underset{j}{argmax}}\sum^T_{i=1}w_ih^j_i(x)$$
其中$h_i^j(x)$是学习器$h_i$在类别标记$c_j$上的输出
学习法
训练数据很多时,可以与另一个学习器进行结合。把个体学习器称为初级学习器,用于结合的学习器称为次级学习器或元学习器。代表算法为Stacking,Stacking本身就为一种集成学习方法,其算法流程如下:
- 从初始训练集训练出初级学习器,生成一个新数据集
- 初级学习器的输出当作样例输入特征来训练次级学习器
比较
Bagging | Boosting | |
---|---|---|
基学习器之间不存在强依赖关系,可并行生成 | 基学习器之间存在强相互依赖关系,必须串行生成 | |
样本训练 | 有放回采样,各训练集相互独立 | 每一轮训练集不变,而训练集中的样例的权重变化 |
样本权重 | 均匀取样,各样例权重相等 | 根据学习误差率不断调整,错误率越大的权重越大 |
预测函数 | 所有预测函数权重相等 | 每个弱分类器都有相应的权重,对于分类误差小的分类器给予更大的权重 |
依靠降低方差提升预测的精准度 | 依靠降低偏差和方差提升预测精准度 |
AdaBoost优缺点:
- 具有较低的泛化误差且不容易出现过拟合
- 代码易实现
- 对异常点敏感,影响后续产生的弱分类器
RF的优缺点:
- 训练可以并行化,对于大规模样本的训练具有速度的优势
- 随机选择决策树划分特征列表使得在样本维度较高时仍具有比较高的训练性能
- 存在随机抽样,训练出来的模型方差小,泛化能力强
- 实现简单,且对于部分特征的缺失不敏感
- 在某些噪音比较大的特征上易陷入过拟合
- 取值比较多的划分特征对RF的决策会产生更大的影响,从而有可能影响模型的效果
sklearn实现决策树、极度随机树、随机森林、AdaBoost及其在Iris数据集上的结果比较
1 | import numpy as np |
运行结果
1 | DecisionTree with features [0, 1] has a score of 0.9266666666666666 |
拓展学习
- TreeBoost
- XGBoost
- GBDT
参考资料
- 官方文档sklearn.ensemble
- 机器学习,周志华,清华大学,2016.
- 统计学习方法,李航,清华大学,2012.
- 机器学习之自适应增强(Adaboost)
- 机器学习之随机森林