文章目录
集成学习:通过训练若干个个体学习器,通过一定的结合策略,就可以最终形成一个强学习器。
集成学习有两大流派:boosting和bagging;
Boosting流派,各分类器之间有很强的依赖关系,必须串行,比如Adaboost、GBDT(Gradient Boosting Decision Tree)、Xgboost(eXtreme Gradient Boosting);
Bagging流派,各分类器之间没有很强的依赖关系,可各自并行,比如随机森林(Random Forest)
一、Boosting
Boosting算法的工作机制:
1.先从初始训练集训练出一个基学习器;
2.再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多关注;
3.然后基于调整后的样本分布来训练下一个基学习器;
如此重复进行,直至基学习器数目达到事先指定的值T,最终将这T个基学习器进行加权结合。
Boosting系列算法里最著名算法主要有AdaBoost算法和提升树(boosting tree)系列算法。提升树系列算法里面应用最广泛的是梯度提升树(Gradient Boosting Tree)
1.1 AdaBoost算法
Adaboost算法是一种提升方法,将多个弱分类器,组合成强分类器。
(1)初始化训练数据(每个样本)的权值分布:如果有N个样本,则每一个训练的样本点最开始时都被赋予相同的权重:1/N。
(2)训练弱分类器。如果某个样本已经被准确地分类,那么在构造下一个训练集中,它的权重就被降低;相反,如果某个样本点没有被准确地分类,那么它的权重就得到提高。更新权值后的样本集被用于训练下一个分类器,整个训练过程如此迭代地进行下去。
(3)将各个训练得到的弱分类器组合成强分类器。分类误差率小的弱分类器的话语权较大,其在最终的分类函数中起着较大的决定作用,而分类误差率大的弱分类器的话语权较小,其在最终的分类函数中起着较小的决定作用。
1.2 GBDT和XGboost
1.2.1 GBDT
gbdt 是通过采用加法模型(即基函数的线性组合),以及不断减小训练过程产生的残差来达到将数据分类或者回归的算法。
1.2.2 XGboost
分类树的预测值=叶子上少数服从多数,回归树预测值=叶子上的平均值。
xgboost本质上就是k棵决策树,k是一个正整数。
最开始建立一棵树,然后逐渐迭代,每次迭代过程都增加一棵树,逐渐形成众多树模型集成的强评估器。
1.2.3 xgboost与GBDT区别
前辈们的总结:
-
传统GBDT以CART作为基分类器,XGBoost还支持线性分类器,这个时候XGBoost相当于带L1和L2正则化项的Logistic回归(分类问题)或者线性回归(回归问题)。
-
传统的GBDT只用了一阶导数信息(使用牛顿法的除外),而XGBoost对损失函数做了二阶泰勒展开。并且XGBoost支持自定义损失函数,只要损失函数一阶、二阶可导。
-
XGBoost的目标函数多了正则项, 相当于预剪枝,使得学习出来的模型更加不容易过拟合。
-
XGBoost还有Shrinkage和列抽样,进一步防止过拟合。
-
对缺失值的处理。对于特征的值有缺失的样本,XGBoost可以自动学习出它的分裂方向。
-
XGBoost工具支持并行。当然这个并行是在特征的粒度上,而非tree粒度,因为本质还是boosting算法
二、bagging和随机森林
2.1 bagging
Bagging 的基本流程:
1.给定包含m 个样本的数据集,
2.先随机从样本中取出一个样本放入采样集中;
3.再把该样本返回初始数据集,使得下次采样时该样本仍可以被选中;
这样,经过m次随机采样操作,就可以得到包含m个样本的采样集。(初始数据集中有的样本多次出现,有的则未出现,其中,初始训练集中约有63.2%的样本出现在采样集中)
通过T次的随机采样,我们就可以得到T个采样集,我们可以分别独立的训练出T个弱学习器,再对这T个弱学习器通过集合策略来得到最终的强学习器。
从偏差-方差的角度来说,boosting主要关注减小偏差,而Bagging主要关注降低方差,也就说明boosting在弱学习器上表现更好,而降低方差可以减小过拟合的风险,所以Bagging通常在强分类和复杂模型上表现得很好
2.2 随机森林
随机森林(Random Forest ,简称RF) 是Bagging 的一个扩展变体。RF 在以决策树为基学习器构建Bagging 集成的基础上,进一步在决策树的训练过程中引入了随机属性选择。
三、结合策略
集成算法就是训练一堆基学习器,然后通过某种策略把各个基学习器的结果进行合成。
3.1 平均法(Averaging)
—简单平均法(simple averaging)
个体学习器性能相近时宜使用简单平均法
—加权平均法(weighted averaging)
个体学习器性能相差较大时宜使用加权平均法
3.2 投票法(Voting)
----绝对多数投票法;
某标记的投票过半数,则预计为该标记
----相对多数投票法;
预测为得票最多的标记
----加权投票法
加权平均法类似
3.3 学习法
stacking的主要思想为:先从初始数据集训练出初级学习器,然后“生成”一个新的数据集用于训练次级学习器。生成的该新数据中,初级学习器的输出被当做样例输入特征,而初始样本的标记仍被当做样例标记。