如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔,我会非常开心的~
0. 前言
集成学习(ensemble learning)通过构建并结合多个学习器来完成学习任务。
同质集成中的个体学习器称为基学习器,相应学习算法称为基学习算法。
个体学习器的准确性越高,多样性越大,集成效果越好。
集成学习主要有以下优点:
- 多个学习器会降低单个学习器泛化性能不足的风险
- 多个学习器会降低单个学习器陷入局部极小值的风险
- 多个学习器会可能增大假设空间
1. 集成方法
- Boosting:先训练一个基学习器,然后根据学习器的表现对样本分布进行调整,给予做错的样本更多的关注,再基于调整后的分布训练下一个基学习器,如此重复达到指定的学习器数目,将这些学习器集成
- Bagging:对数据集进行有放回采样,采次构成一个新的数据集,基于这个数据集训练基学习器,如此重复采样并训练直到达到指定学习器数目,将这些学习器集成
Boosting主要关注降低偏差,因此能基于泛化性能弱的学习器构建出很强的集成。
Bagging主要关注降低方差,因此在易受样本扰动的学习器(决策树、神经网络)上效果更佳。
稳定基学习器(线性学习器、svm、nb、knn)对数据样本扰动不敏感。
2. 结合策略
2.1. 平均法
在个体学习器性能相差较大时适合用加权平均法,性能相近时适合用简单平均法。
| 名称 | 公式 |
|---|---|
| 简单平均法 | |
| 加权平均法 |
2.2. 投票法
绝对多数投票法提供了拒绝预测,对于可靠性要求较高的任务是一个很好的机制。
| 名称 | 公式 |
|---|---|
| 绝对多数投票法 | |
| 相对多数投票法 | |
| 加权投票法 |
基于类概率进行结合比直接基于类标记进行结合性能更好。
2.3. 学习法
Stacking先从初始数据集中训练出初级学习器,然后将每个学习器的输出作为新的特征,用于训练次级学习器。
一般使用训练初级学习器时未使用的样本生成次级学习器的训练数据。
有研究表明,将初级学习器的输出类概率作为次级学习器的输入属性,用多相应线性回归作为次级学习算法效果更好。
算法如下图所示(图源:机器学习):
3. 多样性度量
典型的做法是考虑个体分类器的两两相似性。
给定数据集和两个分类器的分类数目(图源:机器学习),:
| 名称 | 公式 | 多样性越大 |
|---|---|---|
| 不合度量 | 值越大 | |
| 相关系数 | 值越接近0 | |
| Q-统计量 | 值越接近0 | |
| k-统计量 | 值越小 |
4. 多样性增强
- 数据样本扰动:给定初始数据集,可以从中产生不同的数据子集
- 输入属性扰动:从初始属性集中抽取若干属性子集,基于每个子集训练基学习器,若数据只包含少量属性或冗余属性很少,则不适合使用
- 输出表示扰动:可对训练样本的类标记稍作变动
- 算法参数扰动:通过随机设置不同的参数,可产生差别较大的个体学习器
如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔,我会非常开心的~