什么是随机森林?

article/2025/10/13 15:33:28

什么是随机森林?

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

随机森林图

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

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

什么是决策树?

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

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

决策树和随机森林的区别

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

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

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

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

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

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

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

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

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

在决策林中装填

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

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

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

随机森林的好处

易于衡量相对重要性

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

多用途

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

无过度拟合

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

高度准确性

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

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

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

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

快速训练速度

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

随机森林的挑战

结果变慢

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

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

无法推断

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

可解释性低

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

随机森林的替代品

神经网络 (NN)

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

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

极限梯度增强 (xGBoost)

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

线性模型

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

集群模型

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

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

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

支持向量机 (SVM)

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

贝叶斯网络

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

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

随机森林的未来

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

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


http://chatgpt.dhexx.cn/article/SbhIUUSx.shtml

相关文章

[Machine Learning Algorithm] 随机森林(Random Forest)

1 什么是随机森林? 作为新兴起的、高度灵活的一种机器学习算法,随机森林(Random Forest,简称RF)拥有广泛的应用前景,从市场营销到医疗保健保险,既可以用来做市场营销模拟的建模,统计客户来源,保留和流失,也可用来预测疾病的风险和病患者的易感性。最初,我是在参加校…

随机森林算法

随机森林 1.1定义1.2随机森林的随机性体现的方面1.3 随机森林的重要作用1.4 随机森林的构建过程1.5 随机森林的优缺点2. 随机森林参数描述3. 分类随机森林的代码实现 1.1定义 随机森林是一种有监督学习算法,是以决策树为基学习器的集成学习算法。随机森林非常简单&…

机器学习-随机森林(RandomForest)详解

1.什么是随机森林 随机森林就是通过集成学习的思想将多棵树集成的一种算法,它的基本单元是决策树,而它的本质属于机器学习的一大分支——集成学习(Ensemble Learning)方法。 解读下上面的话: 1.随机森林属于集成算法&a…

机器学习之MATLAB代码--随机森林(一)

代码: %% 初始化数据 clc clear close all %% 导入数据 data xlsread(数据集.xlsx,Sheet1,A1:F100);%导入数据库%% 划分训练集和测试集 TE randperm(100);%将数据打乱,重新排序;PN data(TE(1: 80), 1: 5);%划分训练集输入 TN data(TE(1…

sklearn基础篇(七)-- 随机森林(Random forest)

上一节我们提到决策树的一个主要缺点在于经常对训练数据过拟合。随机森林是解决这个问题的一种方法。随机森林是属于集成学习,其核心思想就是集成多个弱分类器以达到一个强分类器的效果。 1 bagging的原理 随机森林采用Bagging的思想,所谓的Bagging可以…

机器学习5—分类算法之随机森林(Random Forest)

随机森林(Random Forest) 前言一、随机森林1.什么是随机森林2.随机森林的特点3.随机森林的生成 二、随机森林的函数模型三、随机森林算法实现1.数据的读取2.数据的清洗和填充3.数据的划分4.代码的实现 总结 前言 随机森林(Random Forest&…

随机森林(Random Forest)通俗教程

目录 1 什么是随机森林?2 随机森林的特点3 随机森林的相关基础知识4 随机森林的生成5 袋外错误率(oob error)6 随机森林工作原理解释的一个简单例子7 随机森林的Python实现8 参考内容 1 什么是随机森林? 作为新兴起的、高度灵活的…

机器学习算法系列(十八)-随机森林算法(Random Forest Algorithm)

阅读本文需要的背景知识点:决策树学习算法、一丢丢编程知识 最近笔者做了一个基于人工智能实现音乐转谱和人声分离功能的在线应用——反谱(Serocs),感兴趣的读者欢迎试用与分享,感谢您的支持!serocs.cn 一…

使用jvisualvm通过JMX的方式远程监控JVM的运行情况

公众号,欢迎关注 使用jvisualvm通过JMX的方式远程监控JVM的运行情况,步骤如下 远程服务器的配置 在启动java程序时加上如下几个参数 -Dcom.sun.management.jmxremote-Dcom.sun.management.jmxremote.sslfalse-Dcom.sun.management.jmxremote.authen…

JDK 中 jvisualvm 没有 VisualGC

1、图片描述问题 2、解决方法 (1)点击菜单栏中 工具 > 插件 (2)点击 可用插件 > 检查最新版本 出现如下情况表示不成功。 (3)点击 设置 > 编辑 链接: https://visualvm.github.io/…

JVisualVM 的使用教程

欢迎大家关注我的公众号【老周聊架构】,Java后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。 一、简介 Java VisualVM 是一个直观的图形用户界面,基于Java 的应用程序,在给定的 Java 虚拟机&#xf…

使用jvisualvm、jmc远程监控JVM

演示环境:jdk1.8 jvisualvm和jmc都是JDK自带的监控工具。jmc监控数据比jvisualvm更加丰富。它们都在JDK bin目录中 首先介绍jvisualvm的使用 打开bin/jvisualvm.exe 本地的JVM进程都已经识别出来了,直接点击即可监控。 为了使jvisualvm功能更加强大&a…

jvisualvm安装Visual GC插件

给jdk自带的jvisualvm安装Visual GC插件,遇到Were sorry the java.net site has closed(我们很抱歉java.net网站已经关闭) 1、找到新的更新地址 visualvm新访问地址:https://visualvm.github.io/index.html 进入“Plugins”&am…

用jvisualvm分析dump文件

最近有一个java服务的堆内存溢出,然后僵死了,在重启服务之前用jmap命令生成了一份dump文件便于后面分析。 生成dump文件的命令: jmap -dump:formatb,file20170307.dump 16048 file后面的是自定义的文件名,最后的数字是进程的pi…

JvisualVM使用教程

最近正在学习JvisualVm的使用,写一篇博客记录一下。 一 工具准备 1 软件 已经安装JDK及IDEA。 2 插件 2.1 Idea插件 在idea中按住快捷键 shift command A,输入plugins,搜索visualvm,如下图所示,安装插件。 安装…

Jvisualvm设置中文

从官网上下载的Jvisualvm.exe,一般启动后都为英文版。 如果本地电脑中有安装JDK,只要你使用的是JDK1.6 Update7之后的版本,那么它久已经在你的JDK bin目录里了。(该版本为中文版) 直接启动JDK中bin目录下的jvisualvm.exe即可。

Java VisualVM

文章目录 1.Java VisualVM简介(Introduction to Java VisualVM)1.1 Java VisualVM简介(Introduction to Java VisualVM)1.2 启动Java VisualVM(Starting Java VisualVM)1.2.1 Java VisualVM用户目录&#x…

jvisualvm远程连接的三种方式

文章目录 基于jatatd实现远程连接配置安全策略启动jstatd远程连接 基于JMX实现远程访问远程连接 基于SSH的远程连接启动远程应用ssh端口转发 基于jatatd实现远程连接 jstatd是一个基于RMI (Remove Method Invocation)的服务程序,它用于监控基于HotSpot的JVM中资源的…

Jvisualvm监控本地、远程Java进程

Jvisualvm监控本地、远程Java进程 监控本地Java进程监控远端Java进程JMX创建配置文件开启远程监控启动Tomcat创建连接 监控本地Java进程 在命令行输入jvisualvm即可启动jvisualvm 双击某个进程即可打开 监控远端Java进程 Jvisualvm不仅是可以监控本地jvm进程,还可以…

Java VisualVM使用

工具所在位置:windows下jdk安装路径内,如 C:\Program Files\Java\jdk1.8.0_20\bin\ jvisualvm.exe 双击执行; 效果图如下: 可以看到我本机有一个tomcat运行的监控 VisualVM可以根据需要安装不同的插件,每个插件的关注点都不同,有的主要监控GC&#xff0c…