对于随机森林的通俗理解
原文:http://blog.csdn.net/mao_xiao_feng/article/details/52728164
对于随机森林的通俗理解
一、决策树
决策树是机器学习最基本的模型,在不考虑其他复杂情况下,我们可以用一句话来描述决策树:如果得分大于等于60分,那么你及格了。
这是一个最最简单的决策树的模型,我们把及格和没及格分别附上标签,及格(1),没及格(0),那么得到的决策树是这样的
但是我们几乎不会让计算机做这么简单的工作,我们把情况变得复杂一点
引用别的文章的一个例子
这是一张女孩对于不同条件的男性是否会选择见面的统计表,图中是否见面作为我们需要分类的结果,因此最后我们的结果无非就只是是和否两种情况。这是一个二分类的问题,但是需要判断的条件多了很多,现在不仅仅只是一个判断就能得出结果了,但是从上图我们找到了一个结果为否的记录,因此如果一个男性在城市无房产、年收入小于 17w 且离过婚,则可以预测女孩不会跟他见面。
那么问题就来了,在这种复杂的情况下,决策树怎么构建?
先通过城市是否拥有房产这条特征,把这10个人划分为2类
这个分类结果并不是很好,因为它没有将见面与不见面完全的分开,在算法中,当然不能凭我们的“感觉”去评价分类结果的好坏。我们需要用一个数去表示。
二、Gini不纯度
Gini不纯度是对分类结果好坏的度量标准(还可以用信息熵和增益去表示,可自行了解)
他的值是:1-每个标签占总数的比例的平方和。即1–∑mi=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
对于随机森林的通俗理解相关推荐
- 集成学习—随机森林原理(理解与论文研读)
如果只想大致理解下随机森林的原理请看第一部分,第二部分是对原论文的研读(灰色引用标记的为证明或自己的理解),这部分可能需要花的时间比较长,不需要的可以忽略. 此外,文末列出来的参考视频,如果读论文还是 ...
- 决策树、装袋、提升和随机森林的对比理解
决策树 决策树是一种简单.常用的基础模型.之所以说它简单,不仅因为它的思想原理简单具体.贴近实际,它并不需要像线性回归模型一样用一个数学公式来表征,而是由规则来抽象.说它基础,是因为它是一系列复杂强大 ...
- 关于随机森林的一些理解
目录 随机森林简介 优缺点 优点 缺点 sklearn中随机森林参数 简单实现 小节 随机森林简介 随机森林是一种只关注决策树的集成学习方法,由Leo Breiman和 Adele Cutler提出, ...
- 关于随机森林改进的理解
随机森林作为一种集成学习方法,它是由一系列基学习器构成的,构成及学习器的方法就是通过随机化采样的方法,来构成不同泛化边界的基学习器,然后在通过简单的投票法来结合出最后的集成模型. 这种简单的模型,在U ...
- R语言第十一讲 决策树与随机森林
概念 决策树主要有树的回归和分类方法,这些方法主要根据分层和分割 的方式将预测变量空间划分为一系列简单区域.对某个给定待预测的观 测值,用它所属区域中训练集的平均值或众数对其进行预测. ...
- 比较全面的随机森林算法总结
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 前言 上节介绍了集成学习方法包括bagging法和boosting ...
- 机器学习——动手从决策树实现随机森林
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是机器学习专题的第26篇文章,我们一起聊聊另外一个集成学习模型,它就是大名鼎鼎的随机森林. 随机森林在业内名气和使用范围都很广,曾经在许 ...
- 浅谈对机器学习方法(决策树,SVM,knn最近邻,随机森林,朴素贝叶斯、逻辑回归)的理解以及用sklearn工具实现文本分类和回归方法...
一.决策树 定下一个最初的质点,从该点出发.分叉.(由于最初质点有可能落在边界值上,此时有可能会出现过拟合的问题. 二.SVM svm是除深度学习在深度学习出现之前最好的分类算法了.它的特征如下: ...
- [白话解析] 通俗解析集成学习之bagging,boosting 随机森林
[白话解析] 通俗解析集成学习之bagging,boosting & 随机森林 0x00 摘要 本文将尽量使用通俗易懂的方式,尽可能不涉及数学公式,而是从整体的思路上来看,运用感性直觉的思考来 ...
最新文章
- 改变Fragment的默认动画
- 实现文件拖放的一种简洁方法
- Bootstrap3 输入提示插件typeahead
- indesign使用教程,如何编辑段落样式?
- JVM的4种垃圾回收算法、垃圾回收机制与总结
- android studio 2.3.3 最新 中文 汉化包 韩梦飞沙 安卓工作室 美化包
- FW与手机APP交互的问题
- python股票回测_从啥都不会试着用python做均线回测--1
- 【学术论文写作】02 Tone and Diction
- java strlen_字符串长度函数strlen和mb_strlen的区别示例介绍
- android 闪屏动态界面,Android实现闪屏欢迎界面
- html卡牌游戏代码,查看“宝可梦卡牌游戏DPt系列”的源代码
- 2013南大专业课试题答案
- 浏览器网页缩放对页面的影响
- OSPF基本配置及手动修改路由器优先级
- 毕业答辩的PPT攻略
- hihocoder1238(dfs)
- 各搜索引擎爬虫UA大全2020最新版
- 中文版Eclipse变英文版
- html5的台账app,台账管理系统
热门文章
- Ubuntu下安装中文输入法(本文安装的搜狗输入法)
- 计算机科学环境保护,CMU-如何利用计算机科学、机器学习和人工智能保护环境.pdf...
- python监控错误语句,基于Python的关键字监控及告警
- php播放ppt代码,PHP+JavaScript幻灯片代码
- spring_Spring MVC控制器的单元测试:REST API
- python爬去百度文库_利用Python语言轻松爬取数据[精品文档]
- java win8 mac地址_Windows8系统下MAC地址修改方法图文教程
- linux mount 内核镜像,在Linux live system中创建loop设备并挂载镜像文件
- python 调用 tensorflow,C++与python 相互调用-- c++调用tensorflow教程
- 如何用 Markdown 来画图?