Opencv2.4.9源码解析总结计划——RandomTrees要点计划.docxVIP

Opencv2.4.9源码解析总结计划——RandomTrees要点计划.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
精品文档 精品文档 PAGE PAGE18 精品文档 PAGE 源码剖析——Random Trees 一、原理 随机森林(RandomForest)的思想最早是由 Ho于1995年首次提出,后来 Breiman完整系 统的发展了该算法,并命名为随机森林,而且他和他的博士学生兼同事 Cutler把Random Forest注册成了商标,这可能也是 OpenCV把该算法命名为RandomTrees的原因吧。 一片森林是由很多棵树木组成, 森林中的每棵树能够说是彼此不有关, 也就是说每棵树木的 生长完全是由自己条件决定的, 只有保持森林的多样性, 森林才能更好的生长下去。 随机森 林算法与真切的森林相近似, 它是由很多决议树组成, 每棵决议树之间是不有关的。 而随机 森林算法的独特性就体现在 “随机”这两个字上:经过随机抽取得到不同的样本来建立每棵 决议树;决议树每个节点的最正确分叉属性是从由随机得到的特点属性会合中选用。 下面就详 细介绍这两次随机过程。 虽然在生成每棵决议树的时候, 使用的是相同的参数, 但使用的是不同的训练会合, 这些训 练会合是从全体训练样本中随机得到的,这一过程称之为bootstrap过程,得到的随机子集称之为bootstrap会合,而在bootstrap会合的基础上聚集得到的学习模型的过程称之为 Bagging(Bootstrapaggregating),那些不在bootstrap会合中的样本称之为 OOB(OutOfBag)。 Bootstrap过程为:从全部N个样本中,有放回的随机抽取 S次(在Opencv中,S=N),由 于是有放回的抽取,所以肯定会出现同一个样本被抽取多次的现象,因此即使 S=N,也会 存在OOB。我们能够计算OOB样本所占比率:每个样本被抽取的概率为 1/N,未被抽取的 概率为(1-1/N),抽取S次仍旧没有被抽到的概率就为 (1-1/N)S,如果S和N都趋于无穷 大,则(1-1/N)S≈e-1=0.368,即OOB样本所占全部样本约为 36.8%,被抽取到的样本为 63.2%。随机森林中的每棵决议树的 bootstrap会合是不完全相同的,因此每棵决议树的 OOB 会合也是不完全相同的,所以对于训练会合中的某个样本来说,它可能属于决议树 Ti的 bootstrap会合,而属于决议树Tj的OOB会合。 因为在生成每棵决议树之前,都要进行 bootstrap 过程,而每次 bootstrap过程所得到的 bootstrap会合都会不同,所以保证了每棵决议树的不有关以及不相同。 为了进一步保证决议树的多样性, Breiman又提出了第二个随机性。一般的决议树是在全部 特点属性中进行计算,进而得到最正确分叉属性,决议树的节点依据该属性进行分叉。 而随机 森林的决议树的最正确分叉属性是在一个特点属性随机子集内进行计算得到的。 在全部p个特 征属性中,随机选择q个特点属性,对于分类问题, q能够为p的平方根,对于回归问题, q能够为p的三分之一。对于随机森林中的所有决议树,随机子集内的特点属性的数量 q是 固定不变的,但不同的决议树, 这q个特点属性是不同, 而对于同一棵决议树,它的全部节 点应用的是同一个随机子集。此外由于 q远小于p,所以建立决议树时无需剪枝。 以上内容是在训练过程中,随机森林与其他鉴于决议树算法的不同之处。而在预测过程中, 方法基真相同,预测样本作用于所有的决议树,对于分类问题,利用投票的方式,最多得票数的分类结果即为预测样本的分类,对于回归问题,所有决议树结果的平均值即为预测值。 再回到前面的训练过程中,为什么我们要使用Bagging方法?这是因为使用Bagging方法能够减小训练过程中的噪声和偏差,并且更重要的是,它还能够评估预测的误差和权衡特点属性的重要程度。 常用的评估机器学习算法的预测误差方法是交错考证法, 但该方法费时。而Bagging方法不 需要交错考证法,我们能够计算 OOB误差,即利用那些 36.8%的OOB样本来评估预测误 差。已经得到证明,OOB误差是能够代替bootstrap会合误差的,并且其结果近似于交错考证。OOB误差的另一个特点是它的计算是在训练的过程中同步得到的,即每得到一棵决议 树,我们就能够根据该决议树来调整由前面的决议树得到的 OOB误差。对于分类问题,它 的OOB误差计算的方法和步骤为: ◆建立生成了决议树 Tk,k=1,2, ,K ①用Tk预测Tk的OOB样本的分类结果 ②更新所有训练样本的OOB预测分类结果的次数(如样本xi是T1的OOB样本,则它有一个预测结果,而它是T2的bootstrap会合内的样本,则此时它没有预测结果) ③对所有样本,把每个样本的预测次数最多的分类作为该样本在 Tk时的预测结果 ④统计所有训练样本中

文档评论(0)

173****1527 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档