机器学习中的提升方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

其他的组合方法
Bagging(Breiman,1996)
在训练的每一轮中,均从原始样本集S中有放回地随机 抽取训练样本集T(T的样本个数同S),这样一个初始 样本在某轮训练中可能出现多次或根本不出现( S中每 个样本未被抽取的概率为(1-1/|S|)|S|≈0.368,当|S|很大时)。 最终的分类规则为简单多数投票法或简单平均法
随机森林算法
在建立每一棵决策树的过程中,有两点需要注意 - 采样与完全 分裂。首先是两个随机采样的过程,random forest对输入的 数据要进行行、列的采样。对于行采样,采用有放回的方式, 也就是在采样得到的样本集合中,可能有重复的样本。假设输 入样本为N个,那 么采样的样本也为N个。这样使得在训练的 时候,每一棵树的输入样本都不是全部的样本,使得相对不容 易出现over-fitting。然后进行列采样,从M 个feature中,选择 m个(m << M)。之后就是对采样之后的数据使用完全分裂的方 式建立出决策树,这样决策树的某一个叶子节点要么是无法继 续分裂的,要么里面的所有样本的都是指向的同一 个分类。一 般很多的决策树算法都一个重要的步骤 - 剪枝,但是这里不这 样干,由于之前的两个随机采样的过程保证了随机性,所以就 算不剪枝,也不会出现over-fitting。
随机森林算法
• 随机选取训练样本集:使用Bagging方法形成每颗树的训练集 • 随机选取分裂属性集:假设共有M个属性,指定一个属性数 F≤M,在每个内部结点,从M个属性中随机抽取F个属性作 分裂属性集,以这F个属性上最好的分裂方式对结点进行分 裂(在整个森林的生长过程中, F的值一般维持不变)
• 每颗树任其生长,不进行剪枝
▫ 从而得到最终分类器,如下:
AdaBoost的例子
• 给定下列训练样本,请用AdaBoost算法学习一个强分类器。
AdaBoost图解
也许你看了上面的介绍或许还是 对AdaBoost算法云里雾里的,没 关系, 看了以下图解之后就会对这个算 法整体上很清晰了。 下面我们举一个简单的例子来看 看AdaBoost的实现过程: 图中,“+”和“-”分别表示两种类 别,在这个过程中,我们使用水 平 或者垂直的直线作为分类器,来 进行分类。
• 这样一来,问题便成为,在学习中,如果已经发现了弱可学习算法, 那么能否将它提升为强学习算法。
提升方法的基本思路
• 提升方法基于这样一种思想:对于一个复杂任务来说,将多个专家的 判断进行适当的综合所得出的判断,要比其中任何一个专家单独的判 断好。实际上,就是“三个臭皮匠顶个诸葛亮”的道理。 • 对于分类问题而言,给定一个训练样本集,求比较粗糙的分类规则 (弱分类器)要比求精确的分类规则(强分类器)容易得多。提升方 法就是从弱学习算法出发,反复学习,得到一系列弱分类器(又称为 基本分类器),然后组合这些弱分类器,构成一个强分类器。大多数 的提升方法都是通过改变训练数据的概率分布(训练数据的权值分 布),针对不同的训练数据分布调用弱学习算法学习一系列弱分类器。
提升方法的基本思路
• 对提升方法来说,有两个问题需要回答:一是在每一轮如何改变训练 数据的权值或概率分布;二是如何将弱分类器组合成一个强分类器。
• 关于第一个问题,AdaBoost的做法是,提高那些前一轮弱分类器错 误分类样本的权值,而降低那些被正确分类样本的权值。这样一来, 那些没有得到正确分类的数据,由于其权值的加大而受到后一轮的弱 分类器的更大关注,于是,分类问题被一系列的弱分类器“分而治 之”。 • 关于第二个问题,即弱分类器的组合,AdaBoost采取加权多数表决 的方法,具体地,加大分类误差率小的弱分类器的权值,使其在表决 中起较大的作用,减小分类误差率大的弱分类器的权值,使其在表决 中起小的作用。
随机森林
随机森林
随机森林顾名思义,是用随机的方式建立一个森林,森林里 面有很多的决策树组成,随机森林的每一棵决策树之间是没 有关联的。在得到森林之后,当有一个新的输入样本进入的 时候,就让森林中的每一棵决策树分别进行一下判断,看看 这个样本应该属于哪一类(对于分类算法),然后看看哪一 类被选择最多,就预测这个样本为那一类。
AdaBoost和Bagging的比较
AdaBoost的训练集选取与前面各轮的学习结果相关; 而Bagging训练集的选取是随机的,各轮训练集之间相 互独立。 AdaBoost的每个分量分类器有权重,而Bagging的没 有权重。 AdaBoost的每个分量分类器只能循序生成,而 Bagging可以并行生成。
影响随机森林分类性能的主要因素
• 森林中单颗树的分类强度(Strength):每颗树的分类强度 越大,则随机森林的分类性能越好。 • 森林中树之间的相关度(Correlation):树之间的相关度越 大,则随机森林的分类性能越差。
随机森林的优点



两个随机性的引入,使得随机森林不容易陷入过拟合 两个随机性的引入,使得随机森林具有很好的抗噪声能力 在数据集上表现良好 在当前的很多数据集上,相对其他算法有着很大的优势 它能够处理很高维度(feature很多)的数据,并且不用做特征 选择,在训练完后,它能够给出哪些feature比较重要 在创建随机森林的时候,对generalization error使用的是无偏 估计 训练速度快 在训练过程中,能够检测到feature间的互相影响 容易做成并行化方法 实现比较简单
附录
定理证明
附录
随机森林
随机森林是一个树型分类器{h(x,k),k=1,…}的集合。其中元 分类器h(x,k)是用CART算法构建的没有剪枝的分类回归树; x是输入向量;k是独立同分布的随机向量,决定了单颗树 的生长过程;森林的输出采用简单多数投票法(针对分类) 或单颗树输出结果的简单平均(针对回归)得到。
参考资料
《统计学习方法》 李航
http://blog.csdn.net/haidao2009/article/details/7514787
http://www.cnblogs.com/wentingtu/archive/2011/12/22/2297405.html
《随机森林方法研究综述》 方匡南 等
随机森林算法
按这种算法得到的随机森林中的每一棵都是很弱的,但是大家 组合起来就很厉害了。我觉得可以这样比喻随机森林算法:每 一棵决策树就是一个精通于某一个窄领域 的专家(因为我们从 M个feature中选择m让每一棵决策树进行学习),这样在随机 森林中就有了很多个精通不同领域的专家,对一个新的问题( 新的输入数据),可以用不同的角度去看待它,最终由各个专 家,投票得到结果。
AdaBoost算法

▫ 2.对于m = 1,2, ..., M a.使用具有权值分布Dm的训练数据集学习,得到基本二元分类 器: b.计算Gm(x)在训练数据集上的分类误差率
c. 计算Gm(x)的系数,am表示Gm(x)在最终分类器中的重要程度:
d. 更新训练数据集的权值分布
▫ 3.构建基本分类器的线性组合
• Schapire在1996年证明了强可学习与弱可学习是等价的,并提出一个 有效的算法真正实现了这个夙愿,它的名字叫AdaBoost。AdaBoost 把多个不同的决策树用一种非随机的方式组合起来,表现出惊人的性 能!第一,把决策树的准确率大大提高,可以与SVM媲美。第二,速 度快,且基本不用调参数。第三,几乎不Overfitting。
机器学习之提升方法
重庆大学软件学院
余俊良
关键字
• • • • • • 提升方法 强分类器 弱分类器 分类器组合 AdaBoost 提升树 (ignored) 随机森林
提升方法的起源
• boost 方法系列的起源来自于PAC Learnability。指出:在概率近似正 确的学习的框架中,一个概念如果存在一个多项式的学习方法能够学 习它,并且正确率很高,那么就称这个概念是强可学习的;一个概念, 如果存在一个多项式的学习方法能够学习它,学习的正确率仅比随机 猜测略好,那么就称这个概念是弱可学习的。这套理论是由Valiant提 出来的,也因此他获得了2010年的图灵奖。
AdaBoost图解
整合所有子分类器: 从结果中看,及时简单的分类器,组合起来也能获得很好的分类效果。
AdaBoost的训练误差分析wenku.baidu.com
AdaBoost的优点
简单来说,AdaBoost有很多优点: 1)AdaBoost是一种有很高精度的分类器 2)可以使用各种方法构建子分类器,AdaBoost算法提供的 是框架 3)当使用简单分类器时,计算出的结果是可以理解的。而 且弱分类器构造极其简单 4)简单,不用做特征筛选 5)不用担心Overfitting。
AdaBoost图解
第一步: 根据分类的正确率,得到一个新的样本分布D2,一个子分类器h1 其中划圈的样本表示被分错的。在右边的途中,比较大的“+”表示对 该样本的权值做了调整。
AdaBoost图解
第二步: 根据分类的正确率,得到一个新的样本分布D3,一个子分类器h2
AdaBoost图解
第三步: 得到一个子分类器h3
• PAC 定义了学习算法的强弱 弱学习算法---识别错误率小于1/2(即准确率 仅比随机猜测略高的学习算法) 强学习算法---识别准确率很高并能在多项式 时间内完成的学习算法
提升方法的起源
• 同时 ,Valiant和 Kearns首次提出了 PAC学习模型中弱学习算法和强 学习算法的等价性问题,即任意给定仅比随机猜测略好的弱学习算法 , 是否可以将其提升为强学习算法 ? 如果二者等价 ,那么只需找到一个 比随机猜测略好的弱学习算法就可以将其提升为强学习算法 ,而不必 寻找很难获得的强学习算法。 也就是这种猜测,让无数牛人去设计 算法来验证PAC理论的正确性。
相关文档
最新文档