什么是随机森林?

news2025/2/23 13:23:36

什么是随机森林?

随机森林是一种有监督的机器学习算法。由于其准确性,简单性和灵活性,它已成为最常用的一种算法。事实上,它可以用于分类和回归任务,再加上其非线性特性,使其能够高度适应各种数据和情况。

随机森林图

“随机决策森林” 一词最初是由何天琴于 1995 年提出的。何天琴开发了一个使用随机数据创建预测的公式。然后在 2006 年,利奥·布雷曼和阿黛尔·卡特勒扩展了算法,创造了我们今天所知的随机森林。这意味着这项技术及其利用的数学和科学仍然相对较新。

它之所以被称为 “森林”,是因为它生成了决策树森林。然后,来自这些树的数据合并在一起,以确保最准确的预测。虽然单独的决策树只有一个结果和范围狭窄的群组,但森林可以确保有更多的小组和决策,从而获得更准确的结果。它还有一个好处,那就是通过在随机特征子集中找到最佳特征来为模型添加随机性。总体而言,这些优势创造了一个具有广泛多样性的模型,这种多样性受到许多数据科学家的青睐。

什么是决策树?

决策树是你一生中可能每天都在使用的东西。这就像你向朋友征求买什么沙发的建议一样。你的朋友会问你什么对你很重要。大小?颜色?织物还是皮革?根据这些决定,您可以根据自己的选择找到理想的沙发。决策树基本上会询问一系列正确或错误的问题,从而得出特定的答案。

每个 “测试”(皮革还是织物?)被称为节点。每个分支都代表该选择(织物)的结果。每个叶子节点都是该决策的标签。显然,在实际情况下,它会拆分观测值,使整个组别都不同,从而产生彼此相似但与其他组不同的子组。

决策树和随机森林的区别

随机森林是一组决策树。但是,两者之间存在一些差异。决策树往往会创建规则,用来做出决策。随机森林将随机选择要素并进行观测,构建决策树林,然后计算平均结果。

从理论上讲,与单个决策树相比,大量不相关的决策树会产生更准确的预测。这是因为大量的决策树协同工作,可以相互保护,免受单个错误和过度拟合的影响。

为了使随机森林表现良好,需要三点:

  • 一个可识别的信号,让模型不只是猜测
  • 树所做的预测必须与其他树有较低相关性
  • 具有一定程度预测能力的功能:GI=GO

企业如何使用随机森林算法?

在业务环境中,有许多用于随机森林的应用程序。例如,单个决策树可能会对与葡萄酒相关的数据集进行分类,将各种葡萄酒分为淡葡萄酒或浓葡萄酒。

随机森林创建许多树,这使得最终结果的预测变得更加复杂。它可以接收葡萄酒信息并生成很多树,比较价格、单宁、酸度、酒精含量、糖分、供应情况以及其他各种特征。然后,计算结果的平均值,它可以根据大量标准预测出(可以说)总体上最好的葡萄酒。

在企业中,随机森林算法可以用于存在一系列输入数据和复杂情况的场景。例如,确定客户何时离开公司。客户流失很复杂,通常涉及一系列因素:产品成本、对最终产品的满意度、客户支持效率、付款便利性、合同期限、提供的额外功能以及性别、年龄和位置等人口统计数据。随机森林算法为所有这些因素创建决策树,并可以准确预测组织的哪些客户存在流失的高风险。

另一个复杂的例子是试图预测哪些客户将在一年内支出最大。分析了全面的变量和属性,并可以预测营销部门当年的目标受众。

在决策林中装填

装填(也称为引导聚合)允许单个决策树从数据集中随机采样并替换数据,从而在单个决策树中产生截然不同的结果。这意味着每棵树只获取部分数据,而不包括所有可用数据。然后,这些单独的树会根据它们拥有的数据做出决策,并仅根据这些数据点预测结果。

这意味着在每个随机森林中,都有树根据不同的数据进行训练,并使用不同的特征以便做出决策。这为树提供了缓冲区,保护它们免受错误和不正确预测的影响。

装填过程仅使用大约三分之二的数据,因此剩下的三分之一可以用作测试集。

随机森林的好处

易于衡量相对重要性

衡量特征的重要性很简单,只需查看使用该特征来减少林中所有树的杂质的节点。置换变量前后的差异很容易看出,这可以衡量该变量的重要性。

多用途

因为随机林既可用于分类任务,也可用于回归任务,所以它的用途非常广泛。它可以轻松处理二进制和数值特征以及分类特征,而无需进行转换或重新调节。与几乎所有其他模型不同,它对所有类型的数据都非常高效。

无过度拟合

只要森林里有足够的树,就几乎没有过度拟合的风险。决策树最终也可能过度拟合。随机森林通过从子集构建不同大小的树并合并结果来防止出现这种情况。

高度准确性

使用许多在子组之间存在显著差异的树可以使随机森林成为高度准确的预测工具。

减少花在数据管理上的时间

在传统的数据处理中,很大一部分宝贵的时间都花在了清理数据上。随机森林可以很好地处理丢失的数据,从而最大限度地减少这种情况的出现。对从完整和不完整数据得出的预测进行比较的测试显示出几乎相同的性能水平。外围数据和非线性特征基本上是废弃了。

随机森林技术还可以平衡人口和其他不平衡数据集中的错误。它通过最大限度地降低错误率来做到这一点,因此较大的类别将具有较低的错误率,而较小的类别将具有较高的错误率。

快速训练速度

由于随机森林使用的是特征子集,因此它们可以快速评估数百种不同的特征。这意味着预测速度也比其他模型快,因为生成的森林可以保存并在将来重复使用。

随机森林的挑战

结果变慢

由于该算法正在构建许多树,因此它提高了预测的复杂性和准确性。但是,它会减慢该过程的速度,因为它正在建造数百或数千个树。这使得它对实时预测没有效果。

解决方案:可以使用袋外 (OOB) 采样,即仅用三分之二的数据进行预测。随机森林进程也是可并行的,因此该进程可以在许多机器上拆分,运行时间比在单独系统中快得多。

无法推断

随机森林预测依赖于先前观测到的标签的平均值。其范围受训练数据中最低和最高标签的约束。虽然这只是在训练和预测输入具有不同范围和分布的情景中出现的问题,但这种协变量偏移是一个问题,意味着在某些情况下应使用不同的模型。

可解释性低

随机森林模型是最终的黑匣子。它们无法解释,因此很难理解它们是如何或为什么做出某个决定的。这种不可穿透性意味着模型必须按原样被信任,结果必须照原样接受。

随机森林的替代品

神经网络 (NN)

神经网络是一些协同工作以识别数据中关系的算法。它旨在尝试复制人脑的工作方式,始终在变化和调整以适应传入的数据。与随机森林相比,它具有显著的优势,因为它可以处理表格格式以外的数据,例如音频和图像。它还可以使用许多超参数进行微调,以适应所需的数据和结果。

但是,如果正在使用的数据仅是表格数据,则最好坚持使用随机森林,因为它更简单,并且仍然可以产生良好的结果。神经网络可能是劳动力和计算机密集型的,对于许多计算来说,可能根本不需要细粒度的细节。对于简单的表格数据,神经网络和随机森林在预测方面的表现类似。

极限梯度增强 (xGBoost)

据说极限梯度增强比随机森林更准确,而且功能更强大。它结合了随机森林和梯度增强 (GBM),创建了一套更准确的结果集。xGBoost 采取较慢的步骤,按顺序而不是独立进行预测。它使用残差中的模式,强化了模型。这意味着预测误差小于随机森林预测。

线性模型

线性预测模型是最简单的机器学习技术之一。它们使用广泛,当在正确的数据集上执行时,就成了强大的预测工具。它们也很容易解释,并且不像随机森林那样具有黑匣子效应。但是,因为它们只使用线性数据,敏捷性明显低于随机森林。如果数据是非线性的,则随机森林将产生最佳预测。

集群模型

排名前五的聚类方法包括模糊聚类、基于密度的聚类、分区方法、基于模型的聚类和分层聚类。它们都以某种形式,通过将一组对象聚类在一起,形成相似的组或聚类。它是一种在数据科学许多领域中都使用的技术,也是数据挖掘、模式识别和机器学习的一部分。虽然可以在随机林中使用聚类,但它本身就是一种独立的技术。

聚类模型在适应新示例、概括聚类大小和形状方面非常出色,其结果可提供有价值的数据洞见。

但是,聚类不能很好地处理异常值和非高斯分布。处理大量样本时,聚类可能会出现扩展问题。最后,特征的数量可能很多,甚至比样本数量还要多。

支持向量机 (SVM)

支持向量机分析数据,然后将其用于回归分析和分类。它是一种可靠的预测方法,可以可靠地构建对数据点进行分类的模型。这些模型依赖于点之间距离的概念,尽管这可能并非在所有情况下都有意义。虽然通过随机森林可以得出在分类问题中属于某个类的概率,但支持向量机可以得出到边界的距离,因此它仍然需要进行转换才能使其成为概率。

贝叶斯网络

贝叶斯网络是一种显示变量、依赖关系和概率的图形模型。它们用于根据数据构建模型、预测结果、检测异常、提供推理、运行诊断以及协助制定决策。贝叶斯网络是生成性的,可以对给定随机变量的概率分布进行建模。它最适合对随机变量进行复杂查询。

随机森林是描述性模型,通常用于分类。如果对因果关系感兴趣,那么贝叶斯网络可能比随机森林更适合。如果数据池很大,则最好使用随机森林。

随机森林的未来

随机森林高效、适应性强且敏捷,是许多数据科学家首选的监督机器学习模型。它提供了许多替代方案所不具备的一系列好处,并提供了准确的预测和分类。但是,这在很大程度上是无法解释的,就如何实现结果而言,这可能有点像一个黑匣子。

将来,将经典随机森林与其他策略相结合可能会使预测更加准确,并进一步优化结果。此外,向可解释机器学习跃迁现在已逐渐成为现实,这可能有助于揭开随机森林预测的一些奥秘。

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

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

相关文章

JavaSE初阶篇:系统环境变量path|classpath|JAVA_HOME

环境变量是为了 “在命令行窗口下”编译和运行Java程序而配置一、系统变量:Pathpath环境变量作用:将命令所在的路径配置到path中去,就相当于在计算机中“注册”了一样,以后找这个命令,会直接去你配置的路径下寻找。达到…

Revit中怎么使两面墙拉近时不自动连接?柱断梁墙功能

一、Revit中怎么使两面墙拉近时不自动连接? 问题:同材质的墙体在同一条直线上只要将其端点拖拽至一起就会融合成一道整墙体(如图-1、2所示),但是在做一些较特殊的结构时我们不需要其连接成一道整墙,有没有什么办法能够设置呢? 我们可以通过…

避免Mysql插入重复数据的几种方法

1、前言 在平时对数据库操作时,有时候需要向数据库中插入一些数据,此时就需要使用数据库的插入语句,但是在向数据中库插入数据时,不能盲目插入,因为盲目的插入可能会造成数据重复,浪费数据库的资源&#x…

Pytest三种配置文件

😎😎原文出自:测个der,博主的公众号,格式美观一些。 配置介绍 pytest 的主配置文件,可以改变 pytest 的默认行为,执行 pytest -h,这里有很多配置均可用于 pytest.ini配置 (venv) …

HarmonyOS鸿蒙学习笔记(16)Canvas入门使用

Canvas入门指南1、Canvas代码结构2、简单案例2.1 fillStyle和fillRect 绘制蓝色矩形2.2 strokeRect和strokeStyle 绘制红色边框2.3 lineCap的使用2.4 lineJoin的使用2.5 closePath的使用3、参考资料1、Canvas代码结构 在使用Canvas的时候,需要向初始化RenderingCon…

第四十七讲:IPv6基础知识

一、IPv6网络元素及概念 IPv6的网络元素如下图所示。 节点:任何运行IPv6的设备,包括路由器和主机(甚至还将包括PDA、冰箱、电视等)。邻节点:连接到同一链路上的节点。这是一个非常重要的概念,因为IPv6的邻…

JS面试题--this指向+面试题

this其他补充 内置函数的绑定思考 01_一些函数的this分析 // 1.setTimeout原理 // function hySetTimeout(fn, duration) { // fn.call(window) // }// hySetTimeout(function() { // console.log(this) // window // }, 3000)// setTimeout(function() { // console.l…

EEG论文阅读和分析:《Differential entropy feature for EEG-based emotion classification》

论文阅读《Differential entropy feature for EEG-based emotion classification》 论文的核心是提出差分熵作为特征,并且对差分差分熵和比例差分熵等特征进行对比研究。 算法流程步骤: 采样过程: A.预处理 根据受试者的压力反应&#xf…

零基础转行软件测试可行吗?

如今,随着人们对软件质量的要求越来越高,软件测试已经成为最热门的IT行业之一。不少非科班出身的转业者也纷纷开始观望这个行业,因此不少人会问,零基础转行软件测试有前途吗?答案显而易见,如果你想成为最炙…

【C语言】数据类型(基本类型、构造类型、类型转换)

⏰打卡:DAY1 🏆今日学习目标:数据类型(基本类型、构造类型、类型转换) ✨个人主页:颜颜yan_的个人主页 🎉专栏系列:从0开始学C语言 文章目录前言基本类型整型浮点型字符型构造类型数…

Mybatis学习——增删改(mysql8.0)

目录 一、配置文件 (一)添加mybatis依赖: (二)resources资源目录的配置 1.database.properties文件的设置 2.mybatis-config.xml文件的设置 二、引入原始类 三、DogDao接口,定义增删改功能 (一)单条数据增删改 1.新增 2.删除 3.修改 (二)多条…

Makefile详细教程

Makefile详细教程 我编写本指南是因为我永远无法完全理解 Makefile。 他们似乎充斥着隐藏的规则和深奥的符号,提出简单的问题并没有得到简单的答案。 为了解决这个问题,我花了几个周末的时间坐下来阅读所有关于 Makefile 的内容。 我已将最关键的知识浓…

【链表】leetcode206.反转链表(C/C++/Java/Js)

leetcode206.反转链表1 题目2 思路2.1 双指针法(迭代)2.2 递归法2.2.1 递归--从前往后翻转指针指向2.2.2 递归--从后往前翻转指针指向3 代码3.1 C版本(迭代)3.2 C版本(迭代递归)3.3 Java版本(迭…

【OpenDDS开发指南V3.20】第十章:Java Bindings

介绍 OpenDDS提供JNI绑定。Java应用程序可以像C++应用程序一样使用完整的OpenDDS中间件。 有关入门的信息,包括先决条件和依赖项,请参阅$DDS_ROOT/java/INSTALL文件。 Java版本9和更高版本使用Java平台模块系统。要在这些Java版本中使用OpenDDS,请将MPC特性Java_pre_jpms…

QT Echarts 联动共享数据表图 使用详解

Echarts是百度的一款可视化界面开发的平台,里面的地图以及数据可视化内容十分丰富,适合用于一些大屏数据显示项目或者一些ui界面开发。每一个ECharts图表使用一个无边框的QWebView来展示,这样多个不同类型的ECharts图表就是多个封装不同类型E…

kettle 筛选数据 并根据关键字段去重 设计

文章目录前言kettle 筛选数据 并根据关键字段去重 设计实现:1、配置sqlite 数据库链接2、先从test表里抽取数据3、将表输入查询的数据插入到excel里4、将筛选出来的数据根据id去重5、插入本地excel6、ETL 整体效果:7、测试:前言 如果您觉得有用的话,记得给博主点个赞…

安全轻量化股票看盘盯盘软件需要实现的功能和基本要求是什么?

有很多投资者是上班族的,因此是不能无时无刻盯盘看盘的,那么为了解决这个问题就需要用上轻量化股票看盘盯盘软件,那么一个安全的轻量化股票看盘盯盘软件需要具备哪些功能和基本要求呢?接下来小编为大家分析分析! 1.一定…

小试跨平台局域网文件传输工具NitroShare,几点感想

随着电脑系统国产化的推进,单位用的OA系统已转移到国产电脑上了,但是国产电脑上的操作系统基于Linux,软件商店里可选的应用软件还不够多,功能也还有待提高。为了提高处理效率,经常需要把文件从国产电脑传到Windows平台…

信息收集过程WAF绕过详解

今天继续给大家介绍渗透测试相关知识,本文主要内容是信息收集过程WAF绕过详解。 免责声明: 本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负! 再次强调:严禁对未…

浅析数据中心机架配电母线的应用及监控

摘要:本文先分析配电母线槽创新点和优势,然后结合湛江数据中心302机房母线槽建设对配电母线槽和列头柜两种供电方式进行经济效益对比,最后总结推广应用建议,以期为相关工程技术人员提供参考。 关键词:机架配电母线&a…