前面介绍过决策树的三种实现: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
为什么80%的码农都做不了架构师?>>> ...
NTP服务器【Network Time Protocol(NTP)】是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒),且可介由加密确认的方式来防止恶毒的协议攻击。下面介绍下查看ntpserver状态的两条命令及其差别。1.ntpstatntpstat 命令查看时间同步...
title: 转载-如何做好项目的需求与业务调研permalink: demand-researchcategories:项目管理tags: [学习笔记,需求调研]date: 2017-03-03 22:59:04文章目录1、调研工作如何组织2. 调研准备阶段容易犯哪些错误2.1 第一个容易犯的错误:不清楚调研的的目的2.2 第二个容易犯的错误:计划不够细致3. 调研准备阶段容...
实现效果:界面代码:<!DOCTYPE html><html><head> <meta name="viewport" content="width=device-width" /> <meta http-equiv="content-type" content="text/html; charse...
前言在上一篇博客中, 我们介绍了这篇文章 Weighted Sum-Rate Optimization for Intelligent Reflecting Surface Enhanced Wireless Networks 的系统建模和使用分式规划方法对问题的简化。 上一篇的遗留问题是, 具体如何对 IRS 矩阵进行优化。 作者提出了多种算法, 在本篇中会一一介绍, 比如以之命名本篇的ADMM。最近点投影通过分式规划, IRS波束成形问题最终可以变成求解如下的子问题:(P4a)maxθf4
给项目加日志的时候,发现都是白色的…好丑,还不好区分,然后突发奇想,可以可以打印彩色日志?然后开始各种百度插件Greap Consoleidea直接安装就行.然后重启.配置插件这一排是字体颜色设置,前边是日志级别,我猜测应该是统配符一类的效果红框前边的那一排是背景色,就是日志所在行的背景色.效果另附上.console的配置:<PatternLayout patte...
1999年2月20日,年初五,杭州湖畔花园风荷院16幢1单元202室,十八个人聚在一起开了一个动员会。屋里几乎家徒四壁,只有一个破沙发摆在一边,大部分人席地而坐,马云站在中间讲了整整两个小时,就这样“忽悠”大家一起来创业。创业初期,马云在湖畔花园召开公司会议从1999年“十八罗汉”起步,到2018财年阿里巴巴7.4万名员工,2502.66亿元人民币收入,人均产能330多万!阿里巴巴走了...
Netty知识汇总历史阻塞io使用方法try { // 监听本地的8000端口 ServerSocket serverSocket = new ServerSocket(8000); // 阻塞等待连接 Socket clientSocket = serverSocket.accept(); BufferedReader inputStream = new BufferedReader(new InputStreamReader(clientSocket.getIn
jmeter常用测试元件测试计划:默认线程组:设置并发数、并发时间、请求循环次数采样器(simple):较常用HTTP请求、JDBC Request、Soap/XML - RPC Request监听器:查看结果树断言:响应断言,通过对比服务器返回的响应数据,判断请求是否成功配置元件:用户定义参数后置处理器:正则表达式创建一个线程组...
C语言练习题目录索引题目:编写一个程序,它从标准输入读取C源代码,并验证所有的花括号都正确的成对出现。例如,输入“{()wqwq6}{{{}}}”判断里面的花括号匹配,返回1;输入“{{{}}}{”判断里面的花括号不匹配,返回0。解题思路:设置一个计数器count,当读取到’{‘时count++,当读取到’}’时,count–。用一个while循环遍历整个字符串,最后count为0时,则花
知识铺: 致力于打造轻知识点,持续更新每次的知识点较少,阅读不累。不占太多时间,不停的来唤醒你记忆深处的知识点。1. CAS (compare and swap) 是一种乐观锁。旧值,新值,预期值比较交换操作,一种非阻塞自旋等待交换的过程。2. Monitor JVM为每一个Java对象都分配的一个映射对象,随着轻量锁和重量锁的创建同时创建的一种监管对象。3. synchronized JVM...
文章转自:https://www.cnblogs.com/CoderTian/p/6791638.html1.播放多媒体文件步骤通常情况下,我们下载的视频文件如MP4,MKV、FLV等都属于封装格式,就是把音视频数据按照相应的规范,打包成一个文本文件。我们可以使用MediaInfo这个工具查看媒体文件的相关信息。所以当我们播放一个媒体文件时,通常需要经过以下几个步骤①解封装...