集成学习的基本策略:
Boosting
Boosting是一种串行模式,主要代表算法有:Adaboost、GDBT
Boosting的基本策略:先构建一个基学习器,新的学习器是在前面的基学习器的基础上生成的。基学习器之间存在依赖关系
基本思路:
先从初始训练集构建一个基学习器,所有数据集的样本都是等权重的;
根据上一个学习器的结果调整样本权重,增加分类错误样本的曝光度(增大权重);
基于调整后的样本分布,构建新的分类器;
重复上述操作;
测试时,对各学习器加权得到最终结果
特点:
每次学习都会使用全部训练样本
Bagging
Bagging是一种并行模式,主要代表算法有:随机森林
基于并行策略:基学习器之间不存在依赖关系,可同时生成。
基本思路:
利用自助采样法对训练集随机采样,重复进行T次
自助采样法:'随机有放回'的在数据集中(样本为m)抽取m个样本
样本在m次采样中始终没有被采样的概率是0.368,即每次被采样的概率是63%
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190312152123725.gif)
特点:偏好不稳定的学习器作为基学习器
基学习器的选择标准:
1、基学习器要具有比较好的表现和泛华能力
2、不稳定的学习器更适合做基学习器:样本的分布波动对模型的影响比较大
(1)不稳定的学习器容易受到样本分布(方差变化)的影响,很好的引入了随机性;有助于提高模型的泛化能力
(2)为了更好的引入随机性,有时会随机选择一个属性子集中的最优属性分裂,而不是全局最优(随机森林)
哪些模型适合做基学习器:决策树、神经网络
使用决策树做基学习器的原因:
1、决策树可以通过剪枝快速调整,具有较好的表现和泛华能力
2、决策树可以方便的将样本权重整合到训练过程中
3、决策树是一种不稳定的学习器
神经网络适合做基学习器的原因:
调整神经元的数量、层数、初始权重也能很好的引入随机性和改变模型的表达能力
线性分类器可以作为基分类器嘛?
在Boosting中:
Boosting是通过不断减少模型的训练误差,通过更新样本权重的方式来加强模型的学习能力,从而减少偏差。但是Boosting不会显著地减少方差。而线性分类器本身具有方差小的特点,所以两者具有一定的相关性。
Xgboost就支持以线性分类器作为基分类器。
在Bagging中:不推荐
线性分类器属于稳定的分类器,对数据不敏感
甚至可能因为Bagging的随机有放回的采样方式,导致在训练中难以收敛,增大集成分类器的误差
Adaboost
算法步骤:
- 初始化训练数据(每个样本)的权值(1/N)
- 训练弱分类器:在训练过程中,如果某个样本被正确分类,那么在下次训练中,它的权重会被降低;如果某个样本被错误分类,那么它的权重会被提高。同时得到弱分类器对应的话语权。更新权重后的样本集被用于训练下一个分类器。
- 将各个训练得到的弱分类器合成强分类器。各弱分类器的训练过程结束后,分类误差率小的弱分类器话语权较大,其在最终的分类函数中起着较大的决定作用;反之,误差率大的弱分类器在最终的分类器中话语权较小。
随机森林
随机森林的基础单元是决策树,对于一个输入样本,N颗树就有N个分类结果。最终的输出是由所有的分类结果投票得出,得票次数最多的为最终的输出。
随机森林中每棵树的生成:
- 对每棵树而言,设训练集大小为N,随机且有放回的从训练集抽取N个训练样本(同一个样本可以出现多次,也可以不出现)
- 每个样本的特征维度为M,指一个常数m <<M,随机从m个特征中选取m个特征子集,每次分类时,从m个特征中选取最优的
- 每棵树都尽量最大程度的生长,并且不剪枝
随机森林分类错误的因素:
随机森林任意两棵树的相关性:相关性越大,错误率越高
森林中每棵树的分类能力:每棵树的分类能力越强,整个森林的错误率越低