【机器学习】集成学习

【集成学习】
集成学习就是通过构建并整合多棵分类树来完成分类任务。
要想获得好的集成树,个体分类树应该“好而不同”,即个体分类树要有一定的准确性,即预测性能不能太差,同时要有多样性,即个体分类树之间要有差异。
根据个体分类树的生成方式,目前集成树的产生方法大致可分为两大类:
1.个体分类树之间不存在强依赖关系、可同时产生的并行化方法,比如Bagging和随机森林;
2.个体分类树之间存在强依赖关系,必须串行生成的序列化方法,比如Boosting。

【Bagging分类】
Bagging主要关注降低预测模型的方差。
思想:从总体中抽取多个训练集,对每个训练集分别建立预测模型,再对由此得到的全部预测模型求平均,得到一个集成模型。既可以用B个独立的训练集训练出B个模型,然后求平均,得到一个低方差的模型。在分类问题中,对于一个给定的观测,我们先记录全部B个分类树对这个观测的预测结果,然后采用投票法进行预测输出。也就是说,将B个预测结果中出现频率最高的类别作为最后的预测结果。
在实际中,不容易得到多个训练集,自助抽样法(Bootstrap,从给定训练集中有放回的均匀抽样,也就是说,每当选中一个样本,它等可能地被再次选中并被再次添加到训练集中)可以解决这个问题。
实践表明,B的大小不是一个对Bagging起决定作用的参数,B很大时也不会出现过拟合。往往取足够大的B值,使分类错误率能够大幅降低并稳定下来。
由于Bagging主要关注降低预测模型的方差,因此比未剪枝决策树、神经网络等易受样本扰动的学习器在模型预测的准确性上更优。但是Bagging对预测准确性的提升是以一生模型的可解释性为代价的。
但是这个问题的解决方法是,在Bagging分类树的建模过程中,可以对某一给定的预测变量在一棵个体分类树上因分裂导致基尼指数的减少量进行加总,在在所有B棵个体分类树上求平均值。平均值越大就说明这个自变量越重要。

【随机森林】
随机森林在以决策树为基础构建Bagging分类树的基础上,进一步在决策树的训练过程中引入了自变量的随机选择,从而达到对树的去相关,实现对Bagging的改进。
在建立这些个体分类树时,每考虑树上的一个分裂点,都要从全部的p个自变量中选出一个包含q个自变量的随机样本作为候选变量。这个分裂点所用的自变量只能从q个变量中选择。在每个分类点处都重新进行抽样,选出q个自变量。若q=p,则随机森林就是Bagging,通常q取成p的平方根。
采取随机森林对Bagging进行优化的原因是:假设数据集中有一个很强大的自变量。在Bagging方法中,大多的个体分类树都会将最强的自变量用于顶部分裂点,造成Bagging中所有的个体分类树看起来都很相似,导致他们的预测输出具有高度相关性。与对不相关的变量求平均相比,对高度相关的变量求平均所带来的方差减少量是无法与前者相提并论的。在这种情况下,Bagging分类树与单棵分类树相比不会带来方差的大幅度降低。随机森林通过强迫每个分裂点仅考虑自变量的一个子集,克服了上述的困难。最强的那个自变量就不会出现在大约(p-q)/p比例的分裂点上,所以其他自变量就有更多的入选分裂点的机会。这样得到的集成树有更小的模型方差,因此预测结果更加稳定、可靠。
随机森林简单、容易实现、计算成本小。在很多现实任务中展现出强大的技能。
Bagging中分类树的多样性仅来自于样本扰动(通过对初识训练集进行多次抽样),而随机森林中分类树的多样性不仅来自样本扰动,还来自自变量的扰动,这就使得最终的集成分类树可通过个体分类树之间的差异性的增加而得到进一步的提升。
随机森林和Bagging一样,不会因为B的增大而造成过拟合,所以在实践中应取足够大的B,使分类错误率能降低到一个稳定的水平。

【AdaBoost】
Boosting是一族可将弱分类器提升为强分类器的算法。这族算法的工作机制如下:先从初始训练集训练出一个弱分类器,再根据这个分类器的表现对训练样本分布进行调整,使得先前分类器错分的训练样本在后续得到更多的关注,然后基于调整后的样本分布来训练下一个分类器。如此重复进行,直至获得的分类器的数目达到事先给定的值T,最终将这T个分类器进行加权整合,得到一个强分类器。
从偏差-方差权衡的角度看,AdaBoost主要关注降低偏差,因此AdaBoost能基于泛化性能相当弱的分类器构建出很强的集成分类器。

参考资料:机器学习与人工智能-浙江大学-中国大学mooc

你可能感兴趣的:(机器学习,机器学习,集成学习,随机森林,Bagging,AdaBoost)