【面筋】关于集成学习
1、集成学习的基本思想?
组合多个弱的学习器,得到一个性能更好的学习器;
2、为什么集成思路有效?
我觉得可以从概率的角度来解释这个问题,不同的模型通常会在测试集上产生不同的误差;如果成员的误差是独立的,集成模型将显著地比其成员表现更好。只需要证明集成的联合概率要大于单个误差;
3、Boosting策略
1) boosting的特点是什么?
boosting 译作推进,用一句话来概括就是,Boosting 应用 迭代式学习 的方式进行学习;
特点:每次学习都会使用全部训练样本;分类器之间存在依赖关系,新的学习器需要根据上一个学习器生成。
2)Boosting的流程?
- 先从初始训练集训练一个基学习器;初始训练集中各样本的权重是相同的;
- 根据上一个基学习器的表现,调整样本权重,使分类错误的样本得到更多的关注;
- 基于调整后的样本分布,训练下一个基学习器;
- 测试时,对各基学习器加权得到最终结果;
注意这里有样本和分类器都带有权重;
3)GBDT
- 思想:每一棵树学习的是之前所有树的整体预测和标签的误差;
- 举例说明:假如有个人30岁,我们首先用20岁去拟合,发现损失有10岁,这时我们用6岁去拟合剩下的损失,发现差距还有4岁,第三轮我们用3岁拟合剩下的差距,差距就只有一岁了。如果我们的迭代轮数还没有完,可以继续迭代下面,每一轮迭代,拟合的岁数误差都会减小。
4)XgBoost
- 思想:不断地添加树,不断地进行特征分裂来生长一棵树,每次添加一个树,其实是学习一个新函数,去拟合上次预测的残差。当我们训练完成得到k棵树,我们要预测一个样本的分数,其实就是根据这个样本的特征,在每棵树中会落到对应的一个叶子节点,每个叶子节点就对应一个分数,最后只需要将每棵树对应的分数加起来就是该样本的预测值。
4、Bagging策略
1)bagging的特点是什么?
Bagging 应用 基于并行策略 的方式进行学习;基学习器之间不存在依赖关系,可同时生成;集成后分类器方差比基分类器的小;训练每个基学习器时只使用一部分样本;
2)bagging的基本思想
- 利用自助采样法对训练集随机采样,重复进行 T 次;
- 基于每个采样集训练一个基学习器,并得到 T 个基学习器;
- 预测时,集体投票决策。
3)bagging的基分类器如何选择?
所用基分类器最好本身对样本分布较为敏感(不稳定性)???t
todo: 不是很理解原因?
4)随机森林
思想:用随机的方式建立一个森林,森林里面有很多的决策树组成,随机森林的每一棵决策树之间是没有关联的。在得到森林之后,当有一个新的输 入样本进入的时候,就让森林中的每一棵决策树分别进行一下判断,对于分类算法,看看这个样本应该属于哪一类,然后看看哪一类被选择最多,就预测这个样本为那一类。对回归问题,计算k个模型的均值作为最后的结果。
5、Stacking策略
1)stacking的特点是什么?
Stacking 应用 基于串行策略 的方式进行学习,初级学习器与次级学习器之间存在依赖关系,初学习器的输出作为次级学习器的输入;
2)stacking的流程?
- 先从初始训练集训练 T 个不同的初级学习器;
- 利用每个初级学习器的输出构建一个次级数据集,该数据集依然使用初始数据集的标签;
- 根据新的数据集训练次级学习器;
- 多级学习器的构建过程类似;
7、常见问题
1)为什么使用决策树作为基学习器?
- (1). 决策树的表达能力和泛化能力,可以通过剪枝快速调整;
- (2). 决策树可以方便地将样本的权重整合到训练过程中;(适合 Boosting 策略)
- (3). 决策树是一种不稳定的学习器; (适合Bagging 策略)
- 所谓不稳定,指的是数据样本的扰动会对决策树的结果产生较大的影响;
- 类似问题:
- 基学习器有什么特点?
- 基学习器有什么要求?
2)为什么不稳定的学习器更适合作为基学习器?
- 不稳定的学习器容易受到样本分布的影响(方差大),很好的引入了随机性;这有助于在集成学习(特别是采用 Bagging策略)中提升模型的泛化能力。
- 为了更好的引入随机性,有时会随机选择一个属性子集中的最优分裂属性,而不是全局最优(随机森林)
3) 哪些模型适合作为基学习器?
- 决策树
- 神经网络
- 神经网络也属于不稳定的学习器;
- 通过调整神经元的数量、网络层数,连接方式初始权重也能很好的引入随机性和改变模型的表达能力和泛化能力
4)Bagging 方法中能使用线性分类器作为基学习器吗? Boosting 呢?
- Bagging 方法中不推荐:
- 线性分类器都属于稳定的学习器(方差小),对数据不敏感;
- 甚至可能因为 Bagging 的采样,导致在训练中难以收敛,增大集成分类器的偏差
- Boosting 方法中可以使用:
- Boosting 方法主要通过降低偏差的方式来提升模型的性能,而线性分类器本身具有方差小的特点,所以两者有一定相性
- XGBoost 中就支持以线性分类器作为基学习器
5)Boosting/Bagging 与 偏差/方差 的关系?
- 提升弱分类器性能的原因:
- Boosting :降低了偏差
- Bagging :降低了方差
- Boosting 方法
- 基本思路:减小模型的训练误差拟合残差或者加大错类的权重),加强模型的学习能力,减小偏差
- 缺点:但 Boosting 不会显著降低方差,因为其训练过程中各基学习器是强相关的,缺少独立性。
- Bagging 方法
- 对 n 个独立不相关的模型预测结果取平均,方差是原来的 1/n
- 假设所有基分类器出错的概率是独立的,超过半数基分类器出错的概率会随着基分类器的数量增加而下降
- 泛化误差、偏差、方差、过拟合、欠拟合、模型复杂度(模型容量)的关系图