对于随机森林的通俗理解

2023-11-06

一、决策树

决策树是机器学习最基本的模型,在不考虑其他复杂情况下,我们可以用一句话来描述决策树:如果得分大于等于60分,那么你及格了。

这是一个最最简单的决策树的模型,我们把及格和没及格分别附上标签,及格(1),没及格(0),那么得到的决策树是这样的


但是我们几乎不会让计算机做这么简单的工作,我们把情况变得复杂一点

引用别的文章的一个例子


这是一张女孩对于不同条件的男性是否会选择见面的统计表,图中是否见面作为我们需要分类的结果,因此最后我们的结果无非就只是是和否两种情况。这是一个二分类的问题,但是需要判断的条件多了很多,现在不仅仅只是一个判断就能得出结果了,但是从上图我们找到了一个结果为否的记录,因此如果一个男性在城市无房产、年收入小于 17w 且离过婚,则可以预测女孩不会跟他见面。

那么问题就来了,在这种复杂的情况下,决策树怎么构建?


先通过城市是否拥有房产这条特征,把这10个人划分为2类


这个分类结果并不是很好,因为它没有将见面与不见面完全的分开,在算法中,当然不能凭我们的“感觉”去评价分类结果的好坏。我们需要用一个数去表示。


二、Gini不纯度

Gini不纯度是对分类结果好坏的度量标准(还可以用信息熵和增益去表示,可自行了解)

他的值是:1-每个标签占总数的比例的平方和。即 1mi=1fi2

对于上述的结果来讲,总的集合D被分为两个集合D1,D2,假设见面为1,不见面为0。

那么D1的不纯度为1-f1^2-f0^2,总数为5,见面的占了全部,则f1=1,f0=0,结果为0

D2的不纯度为1-f1^2-f0^2,f1=0.8,f0=0.2,结果为0.32

ok,那么整个分类结果的Gini不纯度就是D1/D与0的乘积 加上 D2/D与0.32的乘积,为0.16

Gini值代表了某一个分类结果的“纯度”,我们希望结果的纯度很高,这样就不需要对这一结果进行处理了。


从以上分析可以看出,Gini值越小,纯度越高,结果越好。

三、决策树的生成

在第一个例子中“如果得分大于等于60分,那么你及格了”中,生成决策树步骤是首先选择特征,“得分”,然后确定临界值,“>=60”

1.复杂的情况下也是一样,对于每一个特征,找到一个使得Gini值最小的分割点(这个分割点可以是>,<,>=这样的判断,也可以是=,!=),然后比较每个特征之间最小的Gini值,作为当前最优的特征的最优分割点(这实际上涉及到了两个步骤,选择最优特征以及选择最优分割点)。

2.在第一步完成后,会生成两个叶节点,我们对这两个叶节点做判断,计算它的Gini值是否足够小(若是,就将其作为叶子不再分类)

3.将上步得到的叶节点作为新的集合,进行步骤1的分类,延伸出两个新的叶子节点(当然此时该节点变成了父节点)

4.循环迭代至不再有Gini值不符合标准的叶节点


四、决策树的缺陷

我们用决策树把一个平面上的众多点分为两类,每一个点都有(x1,x2)两个特征,下面展示分类的过程




最后生成的决策树,取了四个分割点,在图上的显示如下,只要是落在中央矩形区域内默认是绿色,否则为红色


不过这种情况是分类参数选择比较合理的情况(它不介意某些绿色的点落在外围),但是当我们在训练的时候需要将所有的绿点无差错的分出来(即参数选择不是很合理的情况),决策树会产生过拟合的现象,导致泛化能力变弱。


五、随机森林

鉴于决策树容易过拟合的缺点,随机森林采用多个决策树的投票机制来改善决策树,我们假设随机森林使用了m棵决策树,那么就需要产生m个一定数量的样本集来训练每一棵树,如果用全样本去训练m棵决策树显然是不可取的,全样本训练忽视了局部样本的规律,对于模型的泛化能力是有害的

产生n个样本的方法采用Bootstraping法,这是一种有放回的抽样方法,产生n个样本

而最终结果采用Bagging的策略来获得,即多数投票机制


随机森林的生成方法:

1.从样本集中通过重采样的方式产生n个样本

2.假设样本特征数目为a,对n个样本选择a中的k个特征,用建立决策树的方式获得最佳分割点

3.重复m次,产生m棵决策树

4.多数投票机制来进行预测

(需要注意的一点是,这里m是指循环的次数,n是指样本的数目,n个样本构成训练的样本集,而m次循环中又会产生m个这样的样本集)


六、随机森林模型的总结

随机森林是一个比较优秀的模型,在我的项目的使用效果上来看,它对于多维特征的数据集分类有很高的效率,还可以做特征重要性的选择。运行效率和准确率较高,实现起来也比较简单。但是在数据噪音比较大的情况下会过拟合,过拟合的缺点对于随机森林来说还是较为致命的。



参考文献:

相亲的例子引用自:

http://www.ibm.com/developerworks/cn/opensource/os-cn-spark-random-forest/

平面点分类的例子引用自:

http://wenku.baidu.com/link?url=pCUMFxVy8SFNDGLA0cQAgBg6Xmg1blEsjIWphUyqhn1PD8rxTTVBJT3jjjI8ers5LFrv4NhUa5uqNf9BhmVBhocYcSCUTmZGVWIDQI-tzKO

Gini不纯度:

http://blog.csdn.net/shisibushiba/article/details/50803092

随机森林的优缺点分析:

http://blog.csdn.net/keepreder/article/details/47273297

随机森林做特征选择:

http://blog.csdn.net/keepreder/article/details/47277517


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对于随机森林的通俗理解 的相关文章

随机推荐

  • 【华为OD统一考试B卷

    在线OJ 已购买本专栏用户 请私信博主开通账号 在线刷题 运行出现 Runtime Error 0Aborted 请忽略 华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一
  • 如何解决vue项目不能自动打开浏览器

    运行项目npm run dev 命令行中已经提示我们运行成功了 等了半天浏览器也没有自动打开 没办法我们只能自己手动输入了 那么我们如何在npm run dev之后自动打开浏览器呢 首先找到config index js文件 在文件modu
  • 扩栈

    int size 256 lt lt 20 256MB char p char malloc size size asm movl 0 esp n r p
  • linux下备份目录文件及目录

    一 关于Linux备份文件和应用的几个命令 tar和cp 在工作中 经常来备份文件和系统应用 常用到的主要是tar和cp命令 分别介绍如下 一 tar命令 这个现在经常使用用来打包 tar包指的是档案文件 tar cvf filename
  • Qt 中 QObjectCleanupHandler 使用总结

    背景 QObjectCleanupHandler 类用于清理 QObject 类对象 通常可以作为资源清理器使用 监视对象生命周期 概述 QObjectCleanupHandler 中管理的对象被 delete 后会自动从其管理到的象列表中
  • Java垃圾回收机制详解(万字总结!一篇入魂!)

    Java垃圾回收机制详解 之前在 Java内存区域详解 这篇文章中 详细介绍了JVM内存区域的划分 以及创建对象时内存的分配情况 Java的自动内存管理机制 除了自动申请内存还会自动释放内存 这篇文章就来说一说Java内存回收机制 首先我们
  • php验证密码账号,PHP密码验证

    我在PHP中进行了注册验证 我正在对每个字段进行故障排除 以查看代码是否符合标准 当我按下提交按钮时 唯一不起作用的部分是密码 确认密码代码块 我已经进行了几个小时的故障排除 似乎无法找到问题 有人可以指出这个问题吗 谢谢 define v
  • 超长上下文处理:基于Transformer上下文处理常见方法梳理

    原文链接 芝士AI吃鱼 目前已经采用多种方法来增加Transformer的上下文长度 主要侧重于缓解注意力计算的二次复杂度 例如 Transformer XL通过缓存先前的上下文 并允许随着层数的增加线性扩展上下文 Longformer采用
  • Zookeeper原理架构

    转自 http blog csdn net xuxiuning article details 51218941 本文纯属个人笔记 通俗易懂 转载请附上原文链接 部分资料摘自网络 如有雷同 纯属巧合 Zookeeper到底是什么 学一个东西
  • okhttp3源码解析(2)-拦截器 I

    okhttp3源码解析 2 拦截器 I 前言 上一篇博文讲到了无论发起同步请求还是异步请求 okhttp最后都通过getResponseWithInterceptorChain方法得到response 里面是一系列的拦截器通过责任链形式实现
  • Monkey命令详解

    命令 adb shell monkey 命令参数 所有的参数都需要放在monkey和设置的次数之间 参数的顺序可以调整 若带了 p p必须放在monkey之后 参数必须在 p和次数之间 2 monkey基础命令 adb shell monk
  • An error happened during template parsing 错误解决

    学习记录 idea启动web项目出现问题 An error happened during template parsing 出现原因 web资源路径没有正确导入 解决方法 添加或修改正确的路径
  • 一步步教你修改Windows本地hosts文件,轻松修改域名指向!

    一步步教你修改Windows本地hosts文件 轻松修改域名指向 简介 一 什么是hosts文件 二 准备工作 二 定位hosts文件 三 修改hosts文件 四 刷新DNS缓存 五 验证修改结果 结论 简介 在前端开发过程中 我们经常需要
  • 【Django学习笔记 - 18】:drf请求响应简介、基类(APIView、GenericAPIView)、mixin扩展类与三级视图、视图集与路由

    文章目录 drf请求响应简介 请求Request 常用属性 响应Response 构造方式 参数说明 Response常用属性 基类 APIView的使用 使用案例 案例一 查看drf的结构 案例二 使用post请求获取表单和非表单数据 案
  • 【Vue】学习笔记-组件传值

    Vue 学习笔记 组件传值 前言 1 父级向子级传递数据 2 子级向父级传递数据 常见错误总结 前言 组件之间的传值可以分为三种 1 父级向子级传递数据 2 子级向父级传递数据 3 非父子级传递数据 本文主要讲解父级向子级传递数据和子级向父
  • 探索接入网和网络运营商——ADSL接入网的结构和工作方式

    1 互联网的基本机构和家庭 公司网络是相同的 互联网的基本工作方式和家庭 公司网络一样 互联网也是通过路由器来转发包的 而且路由器的基本结构和工作方式也并没有什么不同 当然也有不同之处 其中之一就是与转发设备间的距离 在家庭 公司网络中 与
  • 海外有哪些流行的支付方式?

    大家好 我是老三 很久没写支付相关的文章了 这期给大家讲一讲 海外都在用哪些支付方式 简介 我们先来看下两个主流电商产品的美国站的支付方式 在国内 想必大家都习惯了支付宝和微信支付二分天下 这两种支付方式基本上覆盖了90 的支付需求 但是在
  • vue 使用cos-js-sdk-v5 进行文件其它方式的上传操作

    首先进行安装 npm install cos js sdk v5 下面是讲http与其结合 封装的js多次可使用 import COS from cos js sdk v5 封装http请求 function http method get
  • 【华为OD机试】代表团坐车【2023 B卷

    华为OD机试 真题 点这里 华为OD机试 真题考点分类 点这里 题目描述 某组织举行会议 来了多个代表团同时到达 接待处只有一辆汽车 可以同时接待多个代表团 为了提高车辆利用率 请帮接待员计算可以坐满车的接待方案 输出方案数量 约束 1 一
  • 对于随机森林的通俗理解

    一 决策树 决策树是机器学习最基本的模型 在不考虑其他复杂情况下 我们可以用一句话来描述决策树 如果得分大于等于60分 那么你及格了 这是一个最最简单的决策树的模型 我们把及格和没及格分别附上标签 及格 1 没及格 0 那么得到的决策树是这