集成学习总结
集成学习(Ensemble Learning)
集成学习法
在机器学习的监督学习算法中,我们的目标是学习出一个稳定的且在各个方面表现都较好的模型,但实际情况往往不这么理想,有时我们只能得到多个偏好的模型(弱监督模型,某些方面表现较好)。集成学习就是组合多个弱监督模型以得到一个更好的强监督模型
集成方法是将几种机器学习技术组合成一个预测模型元算法,以达到减小方差(bagging)、偏差(boosting)或改进预测(stacking)的效果。
集成方法可分为两类
- 序列集成方法,其中参与训练的基础学习器按照顺序生成(例如AdaBoost)。序列方法的原理是利用基础学习器之间的依赖关系。通过对之前训练中错误标记的样本赋值较高的权重,可以提高整体的预测效果。
- 并行集成方法,其中参与训练的基础学习器并行生成(例如Random Forest)。并行方法的原理是利用基础学习器之间的独立性,通过平均可以显著降低错误。
Boosting
其主要思想是将一个弱分类器组装成一个强分类器。在PAC(probably approximately correct,概率近似正确)学习框架下,则一定可以将弱分类器组装成一个强分类器。
AdaBoost
Boosting族最著名的算法就是AdaBoost
AdaBoost使用的损失函数是指数损失函数,因此权值和样本分布都是围绕最小化值数损失函数进行的
同时AdaBoost定义的指数损失函数为:
具体AdaBoost迭代,分为三步:
- 初始化训练数据的权值分布。如果有N个样本,一开始所有的样本都被赋予相同的权值:1/N
- 训练弱分类器。在训练中,如果某个样本点已经被准确的分类,那么在构造下一个训练集中,该样本点的权重下降;相反,未能被准确分类的样本点的权重上升。
- 将各个训练得到的若分类器组成强分类器。每个弱分类器训练完成后,加大分类误差率小的弱分类器的权重(即表现好的基分类器,起较大作用)。最终形成弱分类器的线性组合。
整个算法流程用伪代码描述:
可以看出,AdaBoost核心步骤就是计算样本权重和最终弱学习器权重,具体公式见上面伪代码描述。那么上面的公式又是怎么来的呢?
大部分模型的参数都是通过最优化损失函数,而计算得的。Boosting算法要求学习器可以对特定分布的数据进行学习,即每次都更新样本分布的权重。
提升树
提升树是以分类树或回归树为基本分类器的提升方法。
提升树模型
提升方法采用加法模型与前向分布算法。以决策树为基函数是二叉回归树。提升树模型可以表示为决策树的加法模型
** 提升树算法**
采用前向分布算法,首先确定初始提升树,第m步模型为
其中,
为当前模型,通过经验风险极小化确定下一颗决策树的参数
提升树对不同问题有不同的提升树学习算法,其主要区别在于使用的损失函数不同。主要有用平方误差损失函数的回归问题,用指数损失函数的分类问题,以及一般损失函数的一般决策问题。
Bagging
Bagging是一种并行的集成学习方法,基学习器的训练没有先后顺序,同时进行,Bagging采用“有放回”采样,对于包含m个样本的训练集,进行m次有放回的随机采样操作,从而得到m个样本的采样集。
bagging流程
Random Forest随机森林
RF是Bagging的一个变体,它的基学习器固定是决策树,所以多棵树就叫作森林。而“随机”体现在属性选择的随机性上。
RF在训练基学习,也采用了自助取样法增加样本扰动;除此之外,RF还引入了一种属性扰动:对基决策树的每个结点,先从该结点的属性集合中随机选择一个包含K个属性的子集,然后在子集中选取一个最优的属性用于该结点的划分。而这里的参数K控制了随机性的程度,令k=d,则就是传统的决策树;令k=1,就是随机选择一个属性用于结点划分。一般情况下,推荐的k值是k=log2d
与bagging相比,RF由于随机属性引入的多样性,使得其在多样性上有了进一步提升,相比于bagging,由于属性扰动的加入,其初识泛化性能较差(基决策树的准确度有了一定的下降),但是随着集成数目的增多,其往往可以收敛到更低的泛化误差。同时RF,由于属性选择,训练效率更高。