随机森林_易康随机森林_xmg26的博客-程序员秘密

技术标签: 算法  机器学习  

前面介绍过决策树的三种实现:ID3算法C4.5算法CART算法。虽然这些决策树有很多优良的性质,比如训练时间

复杂度较低,模型容易展示等等,但是同时单决策树有一些不好的地方,比如容易over-fitting,虽然剪枝可以减

少这种现象的发生,但是还是不够的。为了减少决策树的不足,近年来又提出了许多模型组和+决策树的算法,这些算

法都是生成N棵决策树,虽然这N棵树都很简单,但是它们综合起来就很强大了。今天就来介绍随机森林

 

 

Contents

 

   1. 随机森林的基本原理

   2. 随机森林的具体步骤

   3. 随机森林的优点

   4. 随机森林开源框架

 

 

1. 随机森林的基本原理

 

   在机器学习中,随机森林是一个包含多个决策树的分类器,并且其输出的类型是由每个树输出类别的众数而定。顾

   名思义,随机森林就是用随机的方式构建一个森林,这个森林由很多的决策树构成,随机森林的每棵决策树之间是

   没有关联的。在建好随机森林后,当有一个新的样本输入后,就让森林中的每棵决策树都进行判断,最终的预测结

   果就是这N棵决策树的众数对应的种类。

 

 

2. 随机森林的具体步骤

 

   在随机森林中,最重要的是如何构造一个随机森林。假设数据样本数为N,那么每棵决策树采样的样本数也就是N,

   每个样本的属性个数为M,在每个决策树构造过程中,每个节点随机选择m个属性计算最佳分裂方式进行分裂。具

   体步骤如下

 

   (1)有放回地随机选择N个样本,用这N个样本来训练一棵决策树。

   (2)每个样本有M个属性,在决策树中需要分裂节点时,从这M个属性中随机选取m个属性,一般来说m << M,

       然后从这m个属性中采用某种策略选择最佳属性作为当前节点的分裂属性。

   (3)每棵决策树的每个节点的分裂都按照步骤(2)进行,直到不能分裂为止。

   (4)对于每棵决策树都这样建立,就得到了随机森林。

 

   随机森林的随机性体现在每棵树的训练样本是随机的,树中每个节点的分裂属性也是随机选择的。有了这2个随机

   因素,即使每棵决策树没有进行剪枝,随机森林也不会产生过拟合的现象。

 

   随机森林中有两个人为控制参数:森林中树的数量(一般选取值较大)和m值的大小(一般选取为M的平方根)。

 

 

3. 随机森林的优点

 

   随机森林有很多优点,具体如下

 

   (1)分类结果更加准确

   (2)可以处理高维度的属性,并且不用做特征选择

   (3)即使有很大部分数据遗失,仍可以维持高准确度

   (4)学习过程快速

   (5)在训练完成后,能够给出哪些属性比较重要

   (6)容易实现并行化计算

   (7)在训练过程中,能够检测到属性之间的相互影响

 

 

4. 随机森林开源框架

 

   在机器学习中,随机森林有很多开源框架,现在就来介绍一些。

 

   (1)Julia中的框架

 

       在julia中,有一个叫做DecisionTree的模块,里面有随机森林用于分类和回归。具体可以看下面链接

 

       链接:https://github.com/bensadeghi/DecisionTree.jl/blob/master/README.md

 

   (2)Python中的框架

 

       Python中有一个机器学习库,叫做ScikitLearn,有关于随机森林的框架。参考这里

 

   (3)其它语言中的随机森林

 

       除了上述语言的随机森林,还有R语言中的随机森林,百度也有随机森林框架,不过针对的是64位的Linux

       系统,更多框架网上查阅即可。

 

       Go语言的随机森林实现:https://github.com/fxsjy/RF.go

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u013146882/article/details/72808508

智能推荐

漫说安全|智能的云WAF,开挂的Web防御_weixin_34417183的博客-程序员秘密

为什么80%的码农都做不了架构师?&gt;&gt;&gt; ...

ntp如何确认与服务器偏差_ntp服务器查看状态命令ntpstat及ntpq -p 说明及差别详解..._诗遥一妈的博客-程序员秘密

NTP服务器【Network Time Protocol(NTP)】是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒),且可介由加密确认的方式来防止恶毒的协议攻击。下面介绍下查看ntpserver状态的两条命令及其差别。1.ntpstatntpstat 命令查看时间同步...

转载-如何做好项目的需求与业务调研_项目前期的需求调研与分析工作(例如商品属性组、商品属性、spu、sku) 2. 负责运营_Zen.Wu的博客-程序员秘密

title: 转载-如何做好项目的需求与业务调研permalink: demand-researchcategories:项目管理tags: [学习笔记,需求调研]date: 2017-03-03 22:59:04文章目录1、调研工作如何组织2. 调研准备阶段容易犯哪些错误2.1 第一个容易犯的错误:不清楚调研的的目的2.2 第二个容易犯的错误:计划不够细致3. 调研准备阶段容...

zTree 插件与bootstrap-table 实现树与列表联动_weixin_30389003的博客-程序员秘密

实现效果:界面代码:&lt;!DOCTYPE html&gt;&lt;html&gt;&lt;head&gt; &lt;meta name="viewport" content="width=device-width" /&gt; &lt;meta http-equiv="content-type" content="text/html; charse...

最大化速率的智能反射面波束成形(下): ADMM_B417科研笔记的博客-程序员秘密

前言在上一篇博客中, 我们介绍了这篇文章 Weighted Sum-Rate Optimization for Intelligent Reflecting Surface Enhanced Wireless Networks 的系统建模和使用分式规划方法对问题的简化。 上一篇的遗留问题是, 具体如何对 IRS 矩阵进行优化。 作者提出了多种算法, 在本篇中会一一介绍, 比如以之命名本篇的ADMM。最近点投影通过分式规划, IRS波束成形问题最终可以变成求解如下的子问题:(P4a)max⁡θf4

IDEA打印彩色日志_idea 日志打印的都是白色的_木)木的博客-程序员秘密

给项目加日志的时候,发现都是白色的…好丑,还不好区分,然后突发奇想,可以可以打印彩色日志?然后开始各种百度插件Greap Consoleidea直接安装就行.然后重启.配置插件这一排是字体颜色设置,前边是日志级别,我猜测应该是统配符一类的效果红框前边的那一排是背景色,就是日志所在行的背景色.效果另附上.console的配置:&lt;PatternLayout patte...

随便推点

阿里巴巴初创时的十八罗汉,离开阿里之后都有什么故事?_饶彤彤_rocling的博客-程序员秘密

1999年2月20日,年初五,杭州湖畔花园风荷院16幢1单元202室,十八个人聚在一起开了一个动员会。屋里几乎家徒四壁,只有一个破沙发摆在一边,大部分人席地而坐,马云站在中间讲了整整两个小时,就这样“忽悠”大家一起来创业。创业初期,马云在湖畔花园召开公司会议从1999年“十八罗汉”起步,到2018财年阿里巴巴7.4万名员工,2502.66亿元人民币收入,人均产能330多万!阿里巴巴走了...

Netty知识汇总_lxlneversettle的博客-程序员秘密

Netty知识汇总历史阻塞io使用方法try { // 监听本地的8000端口 ServerSocket serverSocket = new ServerSocket(8000); // 阻塞等待连接 Socket clientSocket = serverSocket.accept(); BufferedReader inputStream = new BufferedReader(new InputStreamReader(clientSocket.getIn

【JMeter】压力测试、并发测试_jmeter压测_Qearl鱼的博客-程序员秘密

jmeter常用测试元件测试计划:默认线程组:设置并发数、并发时间、请求循环次数采样器(simple):较常用HTTP请求、JDBC Request、Soap/XML - RPC Request监听器:查看结果树断言:响应断言,通过对比服务器返回的响应数据,判断请求是否成功配置元件:用户定义参数后置处理器:正则表达式创建一个线程组...

练习题012:编写一个程序,它从标准输入读取C源代码,并验证所有的花括号都正确的成对出现_用嵌入式编写一个打开文件系统并且读他_Tianzez的博客-程序员秘密

C语言练习题目录索引题目:编写一个程序,它从标准输入读取C源代码,并验证所有的花括号都正确的成对出现。例如,输入“{()wqwq6}{{{}}}”判断里面的花括号匹配,返回1;输入“{{{}}}{”判断里面的花括号不匹配,返回0。解题思路:设置一个计数器count,当读取到’{‘时count++,当读取到’}’时,count–。用一个while循环遍历整个字符串,最后count为0时,则花

java进阶知识点_Java知识进阶-程序员必须整理的知识点-知识铺_人才市场的博客-程序员秘密

知识铺: 致力于打造轻知识点,持续更新每次的知识点较少,阅读不累。不占太多时间,不停的来唤醒你记忆深处的知识点。1. CAS (compare and swap) 是一种乐观锁。旧值,新值,预期值比较交换操作,一种非阻塞自旋等待交换的过程。2. Monitor JVM为每一个Java对象都分配的一个映射对象,随着轻量锁和重量锁的创建同时创建的一种监管对象。3. synchronized JVM...

FFMPEG音视频解码_weixin_30256505的博客-程序员秘密

文章转自:https://www.cnblogs.com/CoderTian/p/6791638.html1.播放多媒体文件步骤通常情况下,我们下载的视频文件如MP4,MKV、FLV等都属于封装格式,就是把音视频数据按照相应的规范,打包成一个文本文件。我们可以使用MediaInfo这个工具查看媒体文件的相关信息。所以当我们播放一个媒体文件时,通常需要经过以下几个步骤①解封装...

推荐文章

热门文章

相关标签