Ensemble 集成学习
什么是集成学习思想?
- 将多个分类器的预测结果结合起来
- 用来组合的分类器叫做 基分类器(base classifiers)
- Ensembles通常比组成他的基分类器效果好
- 我们使用投票(少数服从多数)或加权投票来决定最终结果
Example:
-
训练KNN,朴素贝叶斯,逻辑回归这三种分类器 -
对一个新样本分类时,结合三个分类器的结果,少 数服从多数
集成学习的错误率:
让集成学习效果更好:
- 基分类器需要表现良好,即他的错误率低于0.5
- 基分类器之间相互独立
- 不可能保证完全相互独立
- 在基分类器相关性较低的情况下,集成学习就可以获得不错的表现
- 好的ensemble需要多种多样的并且效果良好的基类器组成
如何在基分类器之间产生不一致(独立性):
- 操作训练数据:根据一些抽样分布,对原数据集重新抽样,产生多种训练子集,并给每个子集构建基分类器
- 操作属性:选择不同特征产生不同的基分类器
- 操作类标签:控制哪些类标签将被训练(多分类转为二分类)
- 控制学习算法:构建一组拥有不同参数的分类器
Bagging
- 给定原数据集
- 从原数据集中放回地取出与原数据集相同数量的样本,组成数据子集(一次大概63%原数据集中的样本)
- 对每个子集构建分类器
- 预测新样本,使用每个分类器的结果来投票决定
-
通常比单个分类器的效果好得多 -
对不稳定的分类器十分有效
- 不稳定的分类器:训练集变动一点点,对测试 集的预测变动很大。如:决策树、神经网络
-
在应用在回归任务中时,使用平均数来表示预测结果
Boosting
- 运用最为广泛的集成学习方法
- 为了使分类器之间相互补充
- 下一个分类器应该用上一个分类器难以使用的样本创建
AdaBoost:
- 为训练集中的每个样本分配一个权重(比如1/n,n为样本数量)
- 生成一个分类器,对训练集分类,减少正确分类的样本的权重,增加错误分类的样本的权重
- 在创建下一个分类器的训练集时(Bagging),权重越大的样本越容易被选中
- 针对新训练集,构建新的分类器,重复上述操作, 直到生成了需要的M个分类器
- 根据每个分类器在训练集的表现,使用加权投票来 产生预测结果
Bagging and Boosting
相同点:
- 都是用的投票(分类)或平均(回归)来结合每个学习者的预测值
- 通常组合同一类型的分类器,如决策树
不同点:
-
在创建基分类器时:
- Bagging –并联地创建分类器
- Boosting – 串联地,迭代地创建分类器,后一个为前一个无法正确分类的样本服务
-
结合时:
- Bagging –每个分类器的权值相同
- Boosting – 权值不同,基于每个分类器在训练集上的表现
Random Forest
- 每个基分类器只学习数据集的一部分特征子集
- 例如一个数据集有K个特征:
- 使用Bagging生成不同的训练子集,每个子集 随机选取L个原数据集中的特征(L<K)
- 为每个训练子集构建决策树,并且不修剪
- 结合每个决策树的结果,以投票决定最终结果
随机森林的效果:
-
随机森林的准确率取决于: ? 单棵树的准确率(越高越好) ? 树之间的相关性(越低越好) -
使用Bagging和随机选特征的方法,降低树之间的 相关性 -
提高单棵树的特征数量,将提高树的精度,同时提 高了树之间的相关性 -
随机森林通常表现优于一棵决策树 -
鲁棒性比较好 -
运行速度快(只考虑部分特征)
|