matlab 随机森林算法_随机森林算法

efc869fbdac4648253019a3f466feeff.png

随机森林是一种灵活,易于使用的机器学习算法,即使没有超参数调整,也能在大多数情况下产生出色的结果。它也是最常用的算法之一,因为它简单,并且可以用于分类和回归任务。在这篇文章中,您将学习随机森林算法如何工作以及其他几个重要的事情。

目录:

  • 这个怎么运作
  • 真实生活类比
  • 特征重要性
  • 决策树与随机森林的区别
  • 重要的超参数(预测能力,速度)
  • 优点和缺点
  • 用例
  • 摘要

这个怎么运作:

随机森林是一种监督学习算法。就像你已经从它的名字中看到的一样,它创造了一个森林,并使它在某种程度上是随机的。它构建的“森林”是决策树的集合,大部分时间都是用“装袋”方法训练的。装袋方法的一般思想是学习模型的组合增加了整体结果。

用简单的话来说:随机森林构建多个决策树并将它们合并在一起以获得更准确和稳定的预测。

随机森林的一大优势是,它可以用于分类和回归问题,这些问题构成了当前机器学习系统的大部分。我将在分类中讨论随机森林,因为分类有时被认为是机器学习的基石。您可以在下面看到随机森林如何使用两棵树:

caba6d7a917dc665bb06b0de39f5d00c.png

随机森林具有与决策树或装袋分类器几乎相同的超参数。幸运的是,您不必将决策树与装袋分类器组合在一起,只需轻松使用随机森林的分类器类即可。就像我已经说过的,使用Random Forest,你也可以使用Random Forest回归量来处理回归任务。

随机森林为模型增加了额外的随机性,同时种植树木。它不是在分割节点时搜索最重要的特征,而是在随机特征子集中搜索最佳特征。这导致了广泛的多样性,通常导致更好的模型。

因此,在随机森林中,用于分割节点的算法仅考虑特征的随机子集。您甚至可以通过为每个特征使用随机阈值而不是搜索最佳可能阈值(如正常决策树那样)来使树更随机。

真实生活类比:

想象一下,一个名叫安德鲁的人,想要决定在一年的假期旅行中应该去哪些地方。他问那些认识他的人。首先,他去找一位朋友,朋友问安德鲁之前他去过哪里,他是否喜欢。根据答案,他会给安德鲁一些建议。

这是典型的决策树算法方法。安德鲁斯的朋友通过使用安德鲁的答案创建了规则,以指导他决定应该向安德鲁推荐什么。

之后,安德鲁开始要求越来越多的朋友给他建议,他们再次问他不同的问题,他们可以从中得到一些建议。然后他选择了对他最推荐的地方,这是典型的随机森林算法方法。

特征重要性:

随机森林算法的另一个高质量是,很容易测量每个特征对预测的相对重要性。Sklearn为此提供了一个很好的工具,它可以通过查看使用该功能的树节点减少森林中所有树木的杂质来测量特征的重要性。它会在训练后自动为每个要素计算此分数并对结果进行缩放,以使所有重要性的总和等于1。

如果你不知道决策树是如何工作的,如果你不知道叶子或节点是什么,这里是维基百科的一个很好的描述:在决策树中,每个内部节点代表一个属性的“测试”(例如硬币正面还是反面朝上),每个分支代表测试的结果,每个叶节点代表一个类标签(在计算所有属性后作出决定)。 没有子节点的节点是叶子。

通过查看特征重要性,您可以决定要删除哪些特征,因为它们对预测过程没有足够的贡献或没有贡献。这很重要,因为机器学习的一般规则是,您拥有的特征越多,您的模型就越容易受到过度拟合的影响,反之亦然。

下面你可以看到一个表格和一个可视化,它显示了13个特征的重要性,我在监督分类项目中使用了有名的泰坦尼克号数据集。你可以在这里找到整个项目。

50993e0dfe56c7a061be390e2acb9340.png

决策树与随机森林之间的差异:

就像我已经提到的,随机森林是决策树的集合,但是存在一些差异。

如果您将具有要素和标签的训练数据集输入到决策树中,它将制定一组规则,用于进行预测。

例如,如果您想预测一个人是否会点击在线广告,您可以收集过去点击过的人的广告以及描述他的决定的一些功能。如果将功能和标签放入决策树中,它将生成一些规则。然后,您可以预测广告是否会被点击。相比之下,随机森林算法随机选择观察和特征来构建几个决策树,然后平均结果。

另一个区别是“深层”决策树可能会受到过度拟合的影响。随机森林通过创建特征的随机子集并使用这些子集构建较小的树来防止过度拟合。之后,它结合了子树。请注意,这不会每次都起作用,并且它还会使计算速度变慢,具体取决于随机林构建的树数。

重要的超参数:

随机森林中的超参数用于增加模型的预测能力或使模型更快。我将在这里谈谈sklearns内置随机森林函数的超参数。

1.增加预测能力

首先,有“n_estimators”超参数,它只是算法在进行最大投票或取平均预测之前构建的树数。通常,更多数量的树会提高性能并使预测更稳定,但它也会减慢计算速度。

另一个重要的超参数是“max_features”,它是Random Forest考虑拆分节点的最大特征数。Sklearn提供了几个选项,在他们的文档中有描述。

我们将在速度方面讨论的最后一个重要的超参数是“min_sample_leaf”。与其名称一样,这确定了拆分内部节点所需的最小叶子数。

2.提高模型速度

“n_jobs”超参数告诉引擎是多少处理器允许使用。如果它的值为1,则它只能使用一个处理器。值“-1”表示没有限制。

“random_state”使模型的输出可复制。当模型具有random_state的确定值并且已经给出相同的超参数和相同的训练数据时,该模型将始终产生相同的结果。

最后,还有“oob_score”(也称为oob采样),它是一种随机森林交叉验证方法。在此抽样中,大约三分之一的数据不用于训练模型,可用于评估其性能。这些样品称为袋外样品。它与留一法交叉验证方法非常相似,但几乎没有额外的计算负担。

优点和缺点:

就像我已经提到的,随机森林的一个优点是它可以用于回归和分类任务,并且很容易查看它分配给输入要素的相对重要性。

随机森林也被认为是一种非常方便易用的算法,因为它的默认超参数通常会产生良好的预测结果。超参数的数量也不是那么高,而且它们很容易理解。

机器学习中的一个重大问题是过度拟合,但大多数情况下,这对于随机森林分类器来说不容易发生。那是因为如果森林中有足够的树,分类器就不会过度拟合模型。

随机森林的主要局限在于大量决策树可以使算法减慢并且对实时预测无效。一般来说,这些算法训练速度很快,但一旦训练完成预测就很慢。更准确的预测需要更多的树,这导致更慢的模型。在大多数实际应用中,随机森林算法足够快,但肯定存在运行时性能很重要而其他方法更受欢迎的情况。

当然,随机森林是一种预测建模工具,而不是一种描述性工具。这意味着,如果您正在寻找数据中关系的描述,则首选其他方法。

用例:

随机森林算法用于许多不同的领域,如银行,股票市场,医药和电子商务。例如,在银行业中,它用于检测将比其他人更频繁地使用银行服务的客户,并及时偿还他们的债务。在此域中,它还用于检测想要诈骗银行的欺诈客户。在金融领域,它用于确定未来股票的行为。在医疗保健领域,它用于识别医学中组分的正确组合,并分析患者的病史以识别疾病。最后,在电子商务中,随机森林用于确定客户是否真的喜欢该产品。

摘要:

随机森林是一个很好的算法,可以在模型开发过程的早期进行训练,看看它是如何执行的,并且由于其简单性,很难建立一个“坏”的随机森林。如果您需要在短时间内开发模型,此算法也是一个很好的选择。最重要的是,它提供了一个非常好的指标,表明它为您的功能赋予的重要性。

随机森林在性能方面也很难被击败。当然,您可能总能找到一个能够表现更好的模型,比如神经网络,但这些通常需要花费更多的时间进行开发。最重要的是,它们可以处理许多不同的要素类型,如二进制,分类和数字。

总体而言,随机森林是一种(大多数)快速,简单和灵活的工具,尽管它有其局限性。

点击英文原文 https://towardsdatascience.com/the-random-forest-algorithm-d457d499ffcd


更多文章欢迎访问: http://www.apexyun.com

公众号:银河系1号

联系邮箱:public@space-explore.com

(未经同意,请勿转载)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/245614.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python教程循环语句,Python基础教程之循环语句(for、while和嵌套循环)

循环可以用来重复执行某条语句,直到某个条件得到满足或遍历所有元素。1 for循环是for循环,可以把集合数据类型list、tuple、dict、set的元素遍历出来。(1)对list进行循环city_list [广州,深圳,东莞,佛山]city_list [广州,深圳,东莞,佛山]for city in c…

python课程的中期报告_电子课程设计中期报告

电子线路课程设计中期报告 电信工一班 王绪泉 200900121181 1. 设计题目 设计一个数字显示的电子温度计,要求包含模数转换模块,可数字显示,可测定温 度范围在 0 到 100 摄氏度之间,精度允许误差正负 0.5 摄氏度。 设计思路 本题目…

php-fpm 配置文件位置,php

先清空php-fpm.conf> /usr/local/php/etc/php-fpm.conf输入以下内容:[global]pid /usr/local/php/var/run/php-fpm.piderror_log /usr/local/php/var/log/php-fpm.log[www]listen /tmp/php-fcgi.sockuser php-fpmgroup php-fpmpm dynamicpm.max_children …

opengl 纹理贴到对应的位置_一步步学OpenGL(27) -《公告牌技术与几何着色器》

教程 27公告牌技术与几何着色器原文: http://ogldev.atspace.co.uk/www/tutorial27/tutorial27.htmlCSDN完整版专栏: https://blog.csdn.net/cordova/article/category/9266966背景从最初的一系列教程我们已经应用过了顶点着色器和片段着色器&#xff0c…

thinkphp如何通过php请求接口,thinkphp怎么做json数据接口

function checkUser(){//获取用户名 密码$uname$_GET[uname]; $upass$_GET[upass]; $userM("user");//访问数据库中的t_user表(t_ 以在config.php中设置为表前缀了)$where"uname".$uname." and upass".$upass."";//查询…

python 工资管理软件_基于[Python]的员工管理系统

基于[Python]的员工管理系统 ———————————————————————————————— 简介 使用python语言来完成一个员工管理系统,员工信息包含:员工工号,姓名, 年龄,性别,职位,工…

php执行zip压缩,PHP执行zip与rar解压缩方法实现代码

Zip:PclZip http://www.phpconcept.net/pclzip/index.en.phpRar:PECL rar http://pecl.php.net/package/rar以往过去要在php下执行解压缩程序,无非最常见的方法是写command 然后用exec()等执行函式去跑这在Windows下或许可以,但换…

python 当前目录_virtualenvwrapper打造多版本Python环境

前言面对多个 Python 开发项目时,需要针对不同的项目创建相应的开发环境。通常情况下,使用 virtualenv 创建一个虚拟的独立 Python 环境,但是 virtualenv 创建的环境相对分散不便于管理。这里推荐使用 virtualenvwrapper 来创建集中的便于管理…

oracle装了客户端怎么登陆账号,分享Oracle 11G Client 客户端安装步骤(图文详解)...

Oracle 11G Client 客户端安装步骤,具体如下:下载地址:http://www.gimoo.net/database/167737.html先将下载下来的ZIP文件解压,并运行setup.exe文件。执行到第四步之后,出现错误,直接点全部忽略就可以了。把…

python与excel互通_【python】python vs Excel ( 与mysql数据库之间的交互)

【python】python vs Excel ( 与mysql数据库之间的交互) 通过python与mysql数据库做交互 到目前为止大部分案例的演示数据都是基于文件进行读取的。那么python如何跟数据库之间做交互才是未来我们真正需要关心的。因为我们的数据最终还是要存储到数据库中去的。 python与数据库…

基于matlab的车牌识别系统程序,基于matlab的车牌识别系统的设计(附程序).doc

基于matlab的车牌识别系统的设计(附程序).doc 1车牌识别系统的设计1.摘要:汽车牌照自动识别系统是制约道路交通智能化的重要因素,包括车牌定位、字符分割和字符识别三个主要部分。本文首先确定车辆牌照在原始图像中的水平位置和垂直位置,从而定位车辆牌照…

python删除第一行_Python删除文件第一行

一、代码实例: def del_firstline(): for line in fileinput.input("file.txt", inplace 1): if not fileinput.isfirstline(): print(fileinput.replace("\n", "")) 二、使用的库:fileinput fileinput模块提供处理一个或…

weblogic 11g 配置oracle数据源 数据库驱动选哪个,weblogic11g配置db2数据源驱动有关问题...

weblogic11g配置db2数据源驱动问题今天在weblogic10.33上配置db2 9.7数据源,采用type4方式连接,驱动选择weblogic db2 type4驱动,配置成功后,开启应用测试,发现对元数据的获取存在问题,比如说通过 select *…

python英文词云代码_使用python实现个性化词云的方法

先上图片词云图 需要模板 pip install jieba pip install wordcloud 还需要安装另外两个东西这两个我也不太懂借鉴百度写上去的 pip install scipy pip install matplotlib 因为用ubuntu系统所有没有windows那么麻烦,也没有那么多报错 看到好多人制作自己的词云有没…

php 打开pdf文件附件,pdf里怎么链接到附件

首先试试修改config.inc.php 里的cookie前缀,随便改个试试,例如:$cookiepre FR4_; // cookie 前缀不行的话试试下面的,attachment.php找到function getlocalfile($filename, $readmod 1, $range 0) { if($readmod 1 || $readm…

python numpy库作用_python Numpy库

一.导入库 import numpy as np 二.创建 1.numpy中只有一种数据类型:ndarray,表示n维数组 创建ndarray数组: -由列表或者元组类型创建数组 -有元组类型创建数组 -创建特殊数组 2.采用np.array函数来创建,语法为: np.array(列表或元…

oracle 关闭如何启动,ORACLE启动和关闭实例

实例启动和关闭:一.数据库启动的几种状态(1)SQL>startup 启动的过程:a. 例程启动b. 数据库加载c. 数据库打开(2)SQL>startup nomount例程启动阶段所有做的工作:a. 按以下顺序读取初始化参数文件:首先读取 spfileSID.ora &am…

python文本解析_如何通过python进行文本解析?

我希望使用python解析数据,以便将其导入Excel电子表格中。我需要一些帮助来实现过程的自动化。文件内容包括:ok: [wrt02.test1] > { "msg": "nxos" } TASK [checklist : OUTPUT IOS_XR] ***************************************…

linux监测node进程,通过node_exporter监控linux服务器一

前言:node_exporter用于监控*nux系统,使用go编写的收集器prometheus服务器:192.168.199.222监控服务器 192.168.199.221在192.168.199.221下载node_exporterwget https://github.com/prometheus/node_exporter/releases/download/v*/node_exp…

k8s 离线安装_阿里开源 k8s 事件通知服务

背景在 Kubernetes 开源生态中,资源监控有 metrics-server、Prometheus等,但这些监控并不能实时推送 Kubernetes 事件,监控准确性也不足。当 kubernetes 集群中发生 Pod因为 OOM 、拉取不到镜像、健康检查不通过等错误导致重启,集…