机器器学习算法系列列(1):随机森林-阿里云开发者社区

开发者社区> 夜神moon> 正文

机器器学习算法系列列(1):随机森林

简介: 随机森林原理 顾名思义,是用随机的方式建立一个森林,森林里面有很多的决策树组成,随机森林的每一棵决 策树之间是没有关联的。在得到森林之后,当有一个新的输入样本进入的时候,就让森林中的每 一棵决策树分别进行一下判断,看看这个样本应该属于哪一类(对于分类算法),然后看看哪一 类被选择最多,就预测这个样本为那一类。
+关注继续查看

随机森林原理

顾名思义,是用随机的方式建立一个森林,森林里面有很多的决策树组成,随机森林的每一棵决 策树之间是没有关联的。在得到森林之后,当有一个新的输入样本进入的时候,就让森林中的每 一棵决策树分别进行一下判断,看看这个样本应该属于哪一类(对于分类算法),然后看看哪一 类被选择最多,就预测这个样本为那一类。
我们可以这样⽐比喻随机森林算法:每一棵决策树就是一个精通于某一个窄领域的专家(因为我们 从M个特征中选择m个让每一棵决策树进行行学习),这样在随机森林中就有了了很多个精通不不同领 域的专家,对一个新的问题(新的输⼊入数据),可以用不不同的角度去看待它,最终由各个专家, 投票得到结果。
随机森林算法有很多优点:

在数据集上表现良好
在当前的很多数据集上,相对其他算法有着很⼤大的优势
它能够处理理很高维度(feature很多)的数据,并且不不用做特征选择
在训练完后它能够给出哪些feature比较重要
在创建随机森林的时候,对generlization error使用的是无偏估计
训练速度快
在训练过程中,能够检测到feature间的互相影响
容易易做成并行行化方法
实现比较简单

随机森林的生成

2.1 生成步骤

步骤如下:
1)如果训练集大小为 N,对于每棵树而言,随机且有放回地从训练集中抽取N个训练样本(bootstrap抽样方法),作为该树的训练集;每棵树的训练集都是不不同的,但里面包含重 复的训练样本
2)如果每个样本的特征维度为M ,指定一个常数m ,且 m< M,随机地从 个特征中选取m个特征子集,每次树进行分裂时,从这m个特征中选择最优的;
3)每棵树都尽可能最大程度地生长,并且没有剪枝过程。

2.2 影响分类效果的参数

随机森林的分类效果(即错误率)与以下两个因素有关:
1)森林中任意两棵树的相关性:相关性越大,错误率越大
2)森林中每棵树的分类能力:每棵树的分类能力越强,整个森林的错误率越低
减小特征选择个数m,树的相关性和分类能力也会相应的降低;增大m,两者也会随之增大。所以关键问题是如何选择最优的m(或者是范围),这也是随机森林唯一的一个参数。

2.3 袋外误差率

如何选择最优的特征个数m,要解决这个问题,我们主要依据计算得到的袋外错误率oob error(out-of-bag error)。
随机森林有一个重要的优点就是,没有必要对它进行交叉验证或者用一个独立的测试集来获得误差的一个无偏估计。它可以在内部进行评估,也就是说在生成的过程中就可以对误差建立一个无偏估计。
我们知道,在构建每棵树时,我们对训练集使用了了不不同的bootstrap sample(随机且有放回地抽 取)。所以对于每棵树而言,部分训练实例例没有参与这棵树的生成,它们称为第k棵树的oob样 本。

袋外错误率(oob error)计算⽅方式如下:
1)对每个样本计算它作为oob样本的树对它的分类情况
2)以简单多数投票作为该样本的分类结果
3)最后用误分个数占样本总数的比率作为随机森林的oob误分率

随机采样与完全分裂

在建立每一棵决策树的过程中,有两点需要注意,分别是采样与完全分裂。

3.1 随机采样

首先是两个随机采样的过程,random forest对输入的数据要进行、列的采样。对于行采样,采用有放回的方式,也就是在采样得到的样本集合中,可能有重复的样本。假设输入样本为N个,那么采样的样本也为N个。这样使得在训练的时候,每一棵树的输入样本都不是全部的样本,使得相对不不容易易出现over-fitting。然后进⾏列采样,从M个feature中,选择m个(m << M)。

  • 有放回抽样的解释
    如果不是有放回的抽样,那么每棵树的训练样本都是不不同的,都是没有交集的,这样每棵树都 是"有偏的",都是绝对"片面的"(当然这样说可能不对),也就是说每棵树训练出来都是有很大的差异的;而随机森林最后分类取决于多棵树(弱分类器)的投票表决,这种表决应该是"求同",因此使用完全不同的训练集来训练每棵树这样对最终分类结果是没有帮助的,这样无异于 是"盲人摸象"。

  • 对Bagging的改进
    随机森林对Bagging的改进就在于随机采用的不同,即以下两点:
    1)Random forest是选与输入样本的数目相同多的次数(可能一个样本会被选取多次,同时 也会造成一些样本不会被选取到),而bagging一般选取比输入样本的数目少的样本;
    2)bagging是用全部特征来得到分类器器,而Random forest是需要从全部特征中选取其中的一部分来训练得到分类器器;一般Random forest效果比bagging效果好!

3.2 完全分裂

之后就是对采样之后的数据使用完全分裂的方式建立出决策树,这样决策树的某一个叶子节点要么是无法继续分裂的,要么里面的所有样本的都是指向的同一个分类。一般很多的决策树算法都一个重要的步骤 - 剪枝,但是这里不这样干,由于之前的两个随机采样的过程保证 了随机性,所以就算不剪枝,也不会出现over-fitting。 按这种算法得到的随机森林中的每一 棵都是很弱的,但是组合起来就很厉害了。

随机森林的变体

也可以使用SVM、Logistic回归等其他分类器,习惯上这些分类器器组成的“总分类器器”,仍然叫 做随机森林。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
JSF的优点缺点及学习方法
先说JSF的优点,我觉得与其他Java前端框架相比,真正称得上优点的就是一点:兼容并包,体系开放。不少人觉得JSF难学,是因为它一下子把太多东西摊在你面前。什么组件化,视图状态,事件,backing bean,绑定,注入,Facelet模板,多语言,导航,校验器转换器,六个生命周期阶段,EL求值,RenderKit,渲染器。
1212 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,大概有三种登录方式:
2918 0
阿里云机器学习技术分享1——图像识别之TensorFlow实现方法【视频+PPT】
阿里云AI之图像识别技术是如何实现的!?视频+PPT干货奉上 讲师简介:赵昆 阿里巴巴机器学习技术专家 欢迎加入阿里云机器学习大家庭,**钉钉群:11768691** , QQ群:567810612 一、阿里云机器学习之图像识别实践-基础篇: 观看视频:http://cloud.
3368 0
机器学习算法概述:随机森林&逻辑回归
机器学习算法入门介绍:随机森林与逻辑回归!
3426 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
10825 0
专访张银奎:要抓住技术发展趋势,只有不断学习和更新自己?
软件是通过指令的组合来指挥硬件,既简单又复杂,是个充满神秘与挑战的世界。而软件调试是帮助人们探索和征服这个神秘世界的有力工具。 今天,作者对软件调试的理解和认识,相比自己写本书第一版时,在广度和深度方面都有了较大的提升。
2042 0
机器学习中常用优化算法介绍
本文主要介绍了常用的一些机器学习中常用的优化算法。
2426 0
+关注
夜神moon
南方医科大学外科硕士
83
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载