集成学习(Boosting,Bagging和随机森林)
今天看了一下集成学习部分,把相关知识点总结了一下。这个是无公式版,想看公式的话,请看《机器学习》--周志华这本书。
- 通过结合多个学习器完成学习任务,也叫“多分类器系统”、“基于委员会的学习”等。如果集成在一起的学习器都是同一种学习器(例如都是神经网络或者决策树),这种集成叫做“同质集成”,相应的学习器叫做“基学习器”,应用的算法叫做“基学习算法”。如果集成在一起的学习器不是同一种学习器(例如其中包括神经网络和决策树),这种集成叫做“异质集成”,相应的学习器叫做“组件学习器”或“个体学习器”。
- 集成的目的是获得比通过使用一个学习器获得更好的效果。例如,通过将弱学习器集成,来获得更好的较强的学起器。但通常进行的都是较强学习期的集成。(弱学习器:指泛化性能略优于随机猜测的学习器。例如在二分问题上精度略高于50%的分类器。)
- 要获得较好的集成效果,应该要求学习器“好而不同”。(好而不同的意思是,单个学习器要有一定的“准确性”,而且学习器之间要有差异。)集成结果通过“投票法”得出。(如果投票结果相同,可随机选择。)如何产生“好而不同”的个体学习器,才是集成学习的核心。
文章图片
- 集成学习分为2类:1)个体学习器间存在强大依赖关系、必须串行生成的序列化方法,代表算法:Boosting;2)个体学习器间不存在依赖关系、可同时生成的并行化方法,代表算法Bagging和“随机森林”RF。
- Boosting是一族可以将若学习器提升为强学习器的算法,代表算法为AdaBoost。该算法的工作机制:先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多关注,然后基于调整后的样本分布来训练下一个基学习器。如此反复进行,直至学习器数目达到事先指定的值T,最终将这T个基学习器进行加权结合。
- Bagging是并行式集成学习代表方法。基于“自助采样法”(bootstrap sampling)。自助采样法机制:给定包含m个样本的数据集,我们先随机取出一个样本放入采样集中,再把该样本放回初始数据集,使得下一次采样时该样本还会被采到。这样,经过m次样本采集,我们得到包含m个样本的采样集。采样集中,有的样本出现过很多次,有的没有出现过。Bagging机制:我们采样出T个含m个样本的采样集。然后基于每个采样集训练出一个学习器,再将学习器进行结合。对分类任务使用投票法,对回归任务采用平均值法。
- AdaBoost VS Bagging:AdaBoost只适用于二分类任务,Bagging适用于多分类、回归等任务。
- 随机森林RF:以决策树为基学习器构建Bagging集成,进一步在决策树的训练过程中引入随机属性选择。传统决策树在选择划分属性的时候是在当前节点所有的属性集合中选出一个左右属性进行划分;而在RF中,对基决策树的每个节点,先从该节点的属性集合中随机选择一个包含k个属性的子集,然后再从这个子集中选择一个最优属性用于划分。这里的参数k控制了随机性的引入程度。如果k=d(全部属性集),则基决策树的构建=传统决策树构建。如果k=1,基决策树每个节点随机选择一个属性进行划分。一般推荐k=log2d。
- Bagging VS 随机森林:Bagging中基学习器的“多样性”通过样本扰动(对初始训练集采样)而获得;随机森林中基学习器的“多样性”不仅来自于样本扰动,而且还可以通过随机属性扰动来获得。这使得随机森立的泛化性能可通过个体学习器之间差异程度的增加而进一步提升。随机森林的使其性能很差,但随着学习器的增加,性能很快就会变好,且强于Bagging。
推荐阅读
- 由浅入深理解AOP
- Activiti(一)SpringBoot2集成Activiti6
- 继续努力,自主学习家庭Day135(20181015)
- python学习之|python学习之 实现QQ自动发送消息
- 一起来学习C语言的字符串转换函数
- 定制一套英文学习方案
- 漫画初学者如何学习漫画背景的透视画法(这篇教程请收藏好了!)
- 《深度倾听》第5天──「RIA学习力」便签输出第16期
- 如何更好的去学习
- 【韩语学习】(韩语随堂笔记整理)