统计学习方法(5)集成学习(提升方法)
统计学习方法(4)集成学习(提升方法)
1、Bagging:
基于并行
策略:基学习器之间不存在依赖关系,可同时生成。
基本思路:
- 利用
自助采样法
对训练集随机采样,重复进行 T 次; - 基于每个采样集训练一个基学习器,并得到 T 个基学习器;
- 预测时,集体投票决策。
自助采样法:对 m 个样本的训练集,有放回的采样 m 次;
此时,样本在 m 次采样中始终没被采样的概率约为 0.368,即每次自助采样只能采样到全部样本的 63% 左右。
采样和训练过程:
特点:
- 训练每个基学习器时只使用一部分样本;
- 偏好不稳定的学习器作为基学习器;
- 每一个单独的分类器在原始训练集上都是高偏差,但是聚合降低了偏差和方差。
所谓不稳定的学习器,指的是对样本分布较为敏感的学习器。
为什么不稳定的学习器更适合作为基学习器?
- 不稳定的学习器容易受到样本分布的影响(方差大),很好的引入了随机性;这有助于在集成学习(特别是采用 Bagging 策略)中提升模型的泛化能力。
- 为了更好的引入随机性,有时会随机选择一个属性子集中的最优分裂属性,而不是全局最优(随机森林)。
2、随机森林:
随机森林是bagging方法的典型应用,随机森林算法是以决策树算法为基础
,通过bagging算法采样训练样本
,再抽样特征
,3者组合成的算法。对应scikit-learn中为RandomForestClassifier (RandomForestRegression),它有着决策树(DecisionTreeClassifier)的所有参数,以及bagging(BaggingClassifier)的所有参数。
当处理高维(多特征)数据(例如: 图像)时,这种方法比较有用。同时对训练数据和特征进行抽样称为Random Patches,只针对特征抽样而不针对训练数据抽样是Random Subspaces。
随机的意义?
不管是对样本的随机采样,还是对特征的抽样,甚至对切分点的随机划分,都是为了引入偏差,使基分类器之间具有明显的差异,相互独立,提升模型的多样性,使模型不会受到局部样本的影响,从而减少方差,提升模型的泛化能力。
3、Boosting:
基于串行
策略:基学习器之间存在依赖关系,新的学习器需要根据上一个学习器生成。
基本思路:
- 先从初始训练集训练一个基学习器,初始训练集中各样本的权重是相同的;
- 根据上一个基学习器的表现,调整样本权重,使分类错误的样本得到更多的关注;
- 基于调整后的样本分布,训练下一个基学习器;
- 测试时,对各基学习器加权得到最终结果
特点:
- 每次学习都会使用全部训练样本
代表算法:
- AdaBoost 算法
- GBDT 算法
4、AdaBoost算法:
AdaBoost 算法还有另一个解释,即可以认为AdaBoost算法是模型为加法模型、损失函数为指数函数、学习算法为前向分步算法时的二类分类学习方法。
- AdaBoost 算法是前向分步算法的特例。
- 此时,基函数为基分类器,损失函数为指数函数L(y,f(x)) = exp(-y*f(x))
5、Boosting/Bagging 与 偏差/方差 的关系
-
简单来说,Boosting 能提升弱分类器性能的原因是
降低了偏差
;Bagging 则是降低了方差
; -
Boosting 方法:
- Boosting 的基本思路就是在不断减小模型的
训练误差
(拟合残差或者加大错类的权重),加强模型的学习能力,从而减小偏差
; - 但 Boosting 不会显著降低方差,因为其训练过程中各基学习器是强相关的,缺少独立性。
- Boosting 的基本思路就是在不断减小模型的
-
Bagging 方法:
- 对 n 个独立不相关的模型预测结果取平均,方差是原来的 1/n;
- 假设所有基分类器出错的概率是独立的,超过半数基分类器出错的概率会随着基分类器的数量增加而下降。
-
泛化误差、偏差、方差、过拟合、欠拟合、模型复杂度(模型容量)的关系图:
参考:
《统计学习方法》 李航