12 集成学习
文章目录
- 一是尝试各种模型,选择其中表现最好的模型做重点调参优化。
- 另一是集各家之长,得到最终決策
- 后一策略核心,
- 将多个分类器的结果统一成一个最终決策
- 用这类策略的机器学习方法统称集成学习
- 每个单独的分类器称基分类器
- 基分类器类似“臭皮匠”
- 复杂模型是“诸葛亮”
- 一个“臭皮匠”決策能力不强,
- 多个“臭皮匠”组织起来,决策能力可能超“诸葛亮”
- 如何将这些基分类器集成,是本章重点
- 集成学习学界的研究热度不减,业界和众多机器学习竞赛中也非常应用。
- Kaggle竞張中所向披靡的 XGBOOST
1集成学习的种类
集成学习分哪几种?异同?
Boosting
- 训练基分类器时用串行方式,各个基分类器有依赖
- 将基分类器层层叠加,每一层训练时,对前层基分类器分错的样本,给予更高权重
- 测试时,根据各层分类器的结果的加权得最终结果
- 学习新知识往往是迭代式,
- 第一遍学习,记住一部分知识,但也犯一些错,对这些错,印象会很深。
- 第二时,就针对错误的知识加强学习,减少类似错误发生
- 不断循环往复,直到犯错次数减少到很低
Bagging
- Bagging训练过程中,各基分类器之间无强依赖,可并行训练
- 基于决策树基分类器的随机森林
- 为让基分类器之间独立
- 将训练集分为若干子集(样本数量较少时,可有交叠)
- Bagging像集体決策
- 每个个体都单独学习
- 学习的内容可相同,也可不同,也可部分重叠
- 个体间存在差异,最终判断不完全一致
- 最终決策时,每个个体单独作判断,再投票做最后集体决策
- 从消除基分类器的偏差和方差的角度来理解Boosting和Bagging差异。
- 基分类器,(弱分类器)
- 基分器的错误率要大于集成分类器
- 基分类器的错误,是偏差和方差两种错误和
- 偏差是由于分类器的表达能力有限导致的系统性错误,
- 表现在训练误差不收敛
- 方差是由于分类器对于样本分布过于敏感
- 导致样本数较少时,产生过拟合
- Boosting逐步緊焦于基分类器分错的样本,减小集成分类器的偏差。
- Bagging分而治之,通过对训练样本多次采样,
- 分别训练出多个不同模型,然后综合,来减小集成分类器的方差
- 设所有基分类器出错的概率独立
- 在某个测试样本上,
- 用简单多数投票方法来集成结果,
- 超过半数基分类器出错的概率会随着基分类器的数量增加而下降
- Model1l、 Model2、 Model3都是用训练集的一个子集训练出来的,它们的決策边界都很曲折,有过拟合
- 集成之后的模型(红线所示)的決策边界就平滑
- 这是由于集成的加权投票方法,減小了方差
2集成学习的步聚和例子
4 偏差与方差
场景描述
- 过拟合、欠拟合
- 定性描述模型是否很好地解决特定问题
- 定量角度,可用模型的偏差与方差来描述模型性能
- 集成学习能提升弱分类器的性能
- 从偏差和方差的角度去解释这背后的机理
- 介绍如何根据偏差和方差这两个指标来指导模型的优化和改进
1 什么是偏差和方差?
- 有监督学习中
- 泛化误差来源两方面
- 偏差:
- 所有采样得到的大小为的训练集训练出的所有模型
- 的输出的平均值
- 和真实模型输出之间的偏差
- 所有采样得到的大小为的训练集训练出的所有模型
- 偏差是由于对学习算法做错误假设导致
- 真实二次,但假设模型是一次
- 偏差带来的误差在训练误差上就能体现
- 方差
- 所有采样得到的大小为的训练数据集
- 训练出的所有模型的输出的方差
- 模型复杂度相对训练样本数过高导致
- 100样本,设模型是阶数不大于200的多项式函数
- 由方差带来的误差
- 体现在测试误差相对于训练误差的增量上
- 一次射击就是一个机器学习模型对一个样本预测。
- 射中靶心位置代表预测准确,偏离靶心越远代表预测误差越大
-
次采样得到个大小为的训练样本集
- 训练出个模型
- 对同一样本预测,相当于做次射击,结果如图12.4
- 最期望的就是左上角,又准确又集中,模型的偏差和方差都小
2 从减小方差和偏差的角度解释Boosting和Bagging的原理?
- Bagging能提高弱分类器性能是降低方差
- Boosting能提升弱分类器性能是降低偏差
- Bagging是Bootstrap Aggregating,就是再抽样
- 然后在每个样本上训练出来的模型取平均
- 设有个随机变量,方差记,两两变量间相关性
- 则个随机变量的均值
- 方差为
- 完全独立的情况下,个随机变量的方差为,
- 说方差减小到了原来的1/n。
- 再从模型的角度理解这个问题,
- 对n个独立不相关的模型的预测结果取平均,方差是原来单个模型的
- 这个描述不甚严谨,但原理已讲得很清楚
- 当然,模型之间不可能完全独立。
- 为追求模型的独立性,诸多Bagging方法做不同的改进
- 随机森林中,每次选取节点分裂属性时,
- 会随机抽取一个属性子集,
- 而不是从所有属性中选取最优属性,
- 这就是为了避免弱分类器之间过强的相关性
- 训练集的重采样
- 也能带来弱分类器之间的一定独立性
- 从而降低Bagging后模型的方差。
- Boosting在训练好一个弱分类器后,
- 我们需计算弱分类器的错误或残差
- 作为下一个分类器的输入
- 这个过程本身就在不断减小损失函数,使模型不断逼近“靶心”,
- 使模型偏差不断降低
- 但Boosting过程不会显著降低方差
- 这是因为Boosting使各弱分类器之间强相关,
- 缺乏独立性,所以并不会对降低方差有作用。
- 泛化误差、偏差、方差和模型复杂度的关系如图12.5
- 对给定的学习任务和训练数据集,我们需对模型的复杂度做合理假设。
- 如果模型复杂度过低,虽然方差很小,但偏差很高
- 如果过高,虽然偏差降低,但方差很高
- 所以需综合考虑偏差和方差
- 选择合适复杂度的模型训练