【机器学习(十九)】零代码开发之随机森林(Random Forest,RF)算法-Sentosa_DSML社区版

文章目录

  • 一、算法概念
  • 二、算法原理
    • (一)定义
    • (二)袋外数据
  • 三、随机森林的优缺点
    • (一)优点
    • (二)缺点
  • 四、随机森林分类任务实现
    • (一)数据加载
    • (二)样本分区
    • (三)模型训练
    • (四)模型评估
    • (五)模型可视化
  • 五、随机森林回归任务实现对比
    • (二)模型训练
    • (三)模型评估
    • (四)模型可视化
  • 六、总结

一、算法概念

什么是随机森林?
  随机森林是一种常用的机器学习算法,它将多个决策树的输出组合起来以得出一个结果,可以处理分类和回归问题。
在这里插入图片描述
  虽然决策树是常见的监督学习算法,但它们容易出现偏差和过度拟合等问题。然而,当多棵决策树在随机森林算法中形成一个整体时,它们会预测更准确的结果,尤其是当各个树彼此不相关时。
  集成学习(ensemble learning)是一种通过组合多个基学习器(模型)来提高整体预测性能的方法。它通过集成多个学习器形成一个强学习器,从而提高模型的泛化能力和准确性。集成学习的核心思想是利用不同模型的组合弥补单一模型的缺点。集成学习可以分为两大类,一类是序列化方法:个体学习器之间存在强依赖关系,必须串行生成,例如boosting;一类是并行化方法:个体学习器之间不存在强依赖关系、可以同时生成,例如bagging(也称为bootstrap聚合)。bagging 方法中,会替换地选择训练集中的随机数据样本,这意味着可以多次选择单个数据点。生成多个数据样本后,将独立训练这些模型,并且根据任务类型(即回归或分类),这些预测的平均值或大多数会得出更准确的估计值。这种方法通常用于减少嘈杂数据集中的方差。
  随机森林算法是bagging方法的扩展,因为它同时利用bagging和特征随机性来创建不相关的决策树森林。特征随机性也称为特征bagging或“随机子空间方法”(链接位于ibm.com之外),可生成随机的特征子集,从而确保决策树之间的相关性较低。这是决策树和随机森林之间的一个关键区别。决策树会考虑所有可能的特征分割,而随机森林只会选择这些特征的一个子集,通过考虑数据中的所有潜在变异性,我们可以降低过度拟合、偏差和整体方差的风险,从而得到更精确的预测。算法如下:
在这里插入图片描述

二、算法原理

  随机森林算法有三个主要超参数,需要在训练之前设置。

  • 节点大小:每棵树分裂到叶节点之前的最小样本数,控制树的深度。
  • 树的数量:随机森林中包含的决策树的数量,更多的树通常能够提高模型的稳定性和准确性。
  • 采样的特征数量:每次分裂时随机选择的特征数量,这决定了每棵树的多样性。

  随机森林由多棵决策树组成,每棵树通过在训练集中有放回地抽取样本来构建。由于抽取样本时存在放回的情况,同一个样本可能会被多次选中(称为引导样本)。在每次抽取时,大约三分之一的数据不会被选为训练样本,这部分数据被称为袋外样本(OOB)。袋外样本可以用于评估模型的性能,而不需要额外划分测试集,随机森林的误差近似为训练过程中的袋外误差。

  每棵树都是基于不同的引导样本构建的,因此每个引导样本会随机遗漏大约三分之一的观察值。这些遗漏的观察值即为该树的OOB样本。寻找能降低OOB误差的模型参数是模型选择和参数调整的关键环节之一。在随机森林算法中,预测变量子集的大小决定了树的最终深度,因此是模型调优过程中需要调整的重要参数。随机森林在回归和分类任务中的预测方式有所不同:

  • 回归任务:通过对所有决策树的预测结果进行平均,得到最终的预测值。
  • 分类任务:通过多数投票法,选择所有决策树中预测次数最多的类别作为最终结果。

  最后,随机森林通过袋外样本来评估模型性能,这相当于一种交叉验证,不需要额外的数据集,从而更高效地利用了数据。
随机森林是基于决策树的集成,每棵树都取决于随机变量的集合。对于表示实值输入或预测变量的p维随机向量:
在这里插入图片描述
  其中,随机变量Y表示要预测的目标变量,也叫响应变量。它可以是连续的(比如房价、气温)或者离散的(比如分类任务中的类别标签)。我们假设未知的联合分布。目标是找到一个预测函数f(X)来预测Y。该预测函数由损失函数确定,并定义为最小化损失的期望值:
在这里插入图片描述
  随机森林通过多个决策树的集成预测,目的是通过最小化某个损失函数来寻找最优的预测函数f(X),使其能够对未知的目标变量Y进行准确预测。

(一)定义

  正如本节前面提到的,随机森林使用树 ( h j ( X , Θ j ) ) ( h_j(X, \Theta_j) ) (hj(X,Θj)) 作为基础学习器。对于训练数据 D = { ( x 1 , y 1 ) , … , ( x N , y N ) } D = \{(x_1, y_1), \dots , (x_N, y_N)\} D={(x1,y1),,(xN,yN)},其中 x i = ( x i , 1 , … , x i , p ) T x_i = (x_{i,1}, \dots , x_{i,p})^T xi=(xi,1,,xi,p)T 表示第 p p p个预测变量, y i y_i yi表示响应变量。对于特定的参数实现 θ j \theta_j θj,拟合的树可以表示为 h ^ j ( x , θ j , D ) \hat{h}_j(x, \theta_j, D) h^j(x,θj,D)。实际上,随机森林中的随机因素 θ j \theta_j θj并未被显式考虑,而是通过两种方式隐式地注入了随机性。
  首先,与装袋法类似,每棵树都是通过从原始数据中独立抽取的引导样本来训练的。自举抽样过程中的随机性构成了 θ j \theta_j θj 的一部分。其次,在节点分割时,最佳分割是基于每个节点上独立随机选择的 m m m个预测变量子集,而不是基于全部 p p p个变量。这种对预测变量进行采样的随机化构成了 θ j \theta_j θj的剩余部分。
这些树在生成时不经过修剪。最初,Breiman建议树的生长应持续到终端节点完全纯净(用于分类任务),或每个终端节点的数据点数量少于预设阈值(用于回归任务)。也可以通过控制终端节点的最大数量来限制树的复杂度。
如果响应变量是分类类型,随机森林通过未加权投票组合树的结果;如果响应变量是连续值(回归任务),则通过未加权平均的方式结合各棵树的结果。算法过程如下:
在这里插入图片描述
  算法中,在新节点时分类任务的预测值为:
             f ^ ( x ) = 1 J ∑ j = 1 J h ^ j ( x ) \hat{f}(x) = \frac{1}{J} \sum_{j=1}^{J} \hat{h}_j(x) f^(x)=J1j=1Jh^j(x)
  回归任务的预测值为:
          f ^ ( x ) = arg ⁡ max ⁡ y ∑ j = 1 J I ( h ^ j ( x ) = y ) \hat{f}(x) = \arg\max_y \sum_{j=1}^{J} I\left( \hat{h}_j(x) = y \right) f^(x)=argmaxyj=1JI(h^j(x)=y)
  其中 h ^ j ( x ) \hat{h}_j(x) h^j(x)是使用第j棵树对x处响应变量的预测

(二)袋外数据

  当从数据集中抽取引导样本(Bootstrap sample)时,有些数据点不会被选择进入这个引导样本,这些未被选中的数据点称为“袋外数据”(Out-of-Bag data, OOB)。袋外数据在评估模型的泛化误差和变量的重要性方面非常有用。
  为了估计模型的泛化误差,我们需要意识到,如果我们使用所有训练集中参与构建模型的树来预测训练集上的结果,可能会得到过于乐观的预测结果。因为这些树在训练过程中已经“见过”这些数据点,导致模型在训练集上表现得更好。
  因此,为了更准确地估计泛化误差,我们采用“袋外数据”的方法,即对于训练集中某个观测值的预测,只使用那些没有包含该观测值的树来完成预测。这样的预测称为“袋外预测”,因为它们使用的是模型在未见过的样本上的表现,能够更好地反映模型在新数据上的泛化能力。算法流程如下所示:
在这里插入图片描述
  对于具有平方误差损失的回归任务,通常使用袋外均方误差 (MSE) 来估计泛化误差:
         MSE oob = 1 N ∑ i = 1 N ( y i − f ^ oob ( x i ) ) 2 \text{MSE}_{\text{oob}} = \frac{1}{N} \sum_{i=1}^{N} \left( y_i - \hat{f}_{\text{oob}}(x_i) \right)^2 MSEoob=N1i=1N(yif^oob(xi))2
  其中,
   MSE oob \text{MSE}_{\text{oob}} MSEoob表示袋外均方误差(Mean Squared Error of Out-of-Bag。
   1 N \frac{1}{N} N1是对所有 N 个观测点进行平均
   y i y_i yi是真实的目标值,
   f ^ oob ( x i ) \hat{f}_{\text{oob}}(x_i) f^oob(xi)是第 i 个观测点的袋外预测值。
   ( y i − f ^ oob ( x i ) ) 2 ( y_i - \hat{f}_{\text{oob}}(x_i) )^2 (yif^oob(xi))2是预测误差的平方。

  对于零一损失的分类任务,使用袋外错误率来估计泛化错误率:
           E oob = 1 N ∑ i = 1 N I ( y i ≠ f ^ oob ( x i ) ) E_{\text{oob}} = \frac{1}{N} \sum_{i=1}^{N} I(y_i \neq \hat{f}_{\text{oob}}(x_i)) Eoob=N1i=1NI(yi=f^oob(xi))
  其中,使用袋外预测的错误率。这使我们能够获得每个类别的分类错误率,以及通过交叉制表 y i y_i yi 1 N \frac{1}{N} N1获得袋外“混淆矩阵”,当两函数不相等时,函数值为 1,否则为 0。

三、随机森林的优缺点

(一)优点

  • 可以出来很高维度(特征很多)的数据,并且不用降维,
  • 无需做特征选择
  • 可以判断出不同特征之间的相互影响 不容易过拟合
  • 训练速度比较快,容易做成并行方法 实现起来比较简单 对于不平衡的数据集来说,它可以平衡误差。
  • 如果有很大一部分的特征遗失,仍可以维持准确度。

(二)缺点

  • 随机森林已经被证明在某些噪音较大的分类或回归问题上会过拟合。
  • 对于有不同取值的属性的数据,取值划分较多的属性会对随机森林产生更大的影响,所以随机森林在这种数据上产出的属性权值是不可信的。

四、随机森林分类任务实现

  主要根据模型搭建的流程,利用Sentosa_DSML社区版完成机器学习算法。

(一)数据加载

  利用文本读入算子读取数据
在这里插入图片描述
  右键预览可以看到每一步处理后的数据。
在这里插入图片描述

(二)样本分区

  连接样本分区算子,并设置训练集和测试集的样本比例
在这里插入图片描述
  样本分区完成后,利用类型算子将设为标签列

(三)模型训练

  连接随机森林分类模型,设置模型参数,并执行。
在这里插入图片描述
  训练完成后可以得到随机森林分类模型。
在这里插入图片描述

(四)模型评估

  连接评估算子,对模型进行评估。
在这里插入图片描述
  得到训练集的评估结果
在这里插入图片描述
  测试集的评估结果
在这里插入图片描述
  连接混淆矩阵算子,计算模型混淆矩阵。
在这里插入图片描述
  训练集的混淆矩阵
在这里插入图片描述
  测试集的混淆矩阵
在这里插入图片描述

(五)模型可视化

  右键模型信息,即可查看模型特征重要性图,决策树可视化等信息,特征重要性图如下所示:
在这里插入图片描述
  随机森林构建过程可视化:
在这里插入图片描述
  决策树1:
在这里插入图片描述
  决策树2:在这里插入图片描述
  决策树3:
在这里插入图片描述

五、随机森林回归任务实现对比

  读取数据、样本分区和类型算子操作流程如上节所示,然后,利用标准化算子对数据特征进行处理
在这里插入图片描述
  执行得到标准化模型
在这里插入图片描述

(二)模型训练

  连接随机森林回归算子,设置随机森林算子的参数配置。
在这里插入图片描述
  执行得到随机森林回归模型
在这里插入图片描述

(三)模型评估

  连接评估算子对随机森林回归模型进行评估
在这里插入图片描述
  训练集评估结果
在这里插入图片描述
  测试集评估结果
在这里插入图片描述

(四)模型可视化

  右键模型信息,即可查看模型特征重要性图,决策树可视化等信息:
在这里插入图片描述
在这里插入图片描述

六、总结

  相比传统代码方式,利用Sentosa_DSML社区版完成机器学习算法的流程更加高效和自动化,传统方式需要手动编写大量代码来处理数据清洗、特征工程、模型训练与评估,而在Sentosa_DSML社区版中,这些步骤可以通过可视化界面、预构建模块和自动化流程来简化,有效的降低了技术门槛,非专业开发者也能通过拖拽和配置的方式开发应用,减少了对专业开发人员的依赖。
  Sentosa_DSML社区版提供了易于配置的算子流,减少了编写和调试代码的时间,并提升了模型开发和部署的效率,由于应用的结构更清晰,维护和更新变得更加容易,且平台通常会提供版本控制和更新功能,使得应用的持续改进更为便捷。

  Sentosa数据科学与机器学习平台(Sentosa_DSML)是力维智联完全自主知识产权的一站式人工智能开发部署应用平台,可同时支持零代码“拖拉拽”与notebook交互式开发,旨在通过低代码方式帮助客户实现AI算法模型的开发、评估与部署,结合完善的数据资产化管理模式与开箱即用的简捷部署支持,可赋能企业、城市、高校、科研院所等不同客户群体,实现AI普惠、化繁为简。
  Sentosa_DSML产品由1+3个平台组成,以数据魔方平台(Sentosa_DC)为主管理平台,三大功能平台包括机器学习平台(Sentosa_ML)、深度学习平台(Sentosa_DL)和知识图谱平台(Sentosa_KG)。力维智联凭借本产品入选“全国首批人工智能5A等级企业”,并牵头科技部2030AI项目的重要课题,同时服务于国内多家“双一流”高校及研究院所。
  为了回馈社会,矢志推动全民AI普惠的实现,不遗余力地降低AI实践的门槛,让AI的福祉惠及每一个人,共创智慧未来。为广大师生学者、科研工作者及开发者提供学习、交流及实践机器学习技术,我们推出了一款轻量化安装且完全免费的Sentosa_DSML社区版软件,该软件包含了Sentosa数据科学与机器学习平台(Sentosa_DSML)中机器学习平台(Sentosa_ML)的大部分功能,以轻量化一键安装、永久免费使用、视频教学服务和社区论坛交流为主要特点,同样支持“拖拉拽”开发,旨在通过零代码方式帮助客户解决学习、生产和生活中的实际痛点问题。
  该软件为基于人工智能的数据分析工具,该工具可以进行数理统计与分析、数据处理与清洗、机器学习建模与预测、可视化图表绘制等功能。为各行各业赋能和数字化转型,应用范围非常广泛,例如以下应用领域:
  金融风控:用于信用评分、欺诈检测、风险预警等,降低投资风险;
  股票分析:预测股票价格走势,提供投资决策支持;
  医疗诊断:辅助医生进行疾病诊断,如癌症检测、疾病预测等;
  药物研发:进行分子结构的分析和药物效果预测,帮助加速药物研发过程;
  质量控制:检测产品缺陷,提高产品质量;
  故障预测:预测设备故障,减少停机时间;
  设备维护:通过分析机器的传感器数据,检测设备的异常行为;
  环境保护:用于气象预测、大气污染监测、农作物病虫害防止等;
  客户服务:通过智能分析用户行为数据,实现个性化客户服务,提升用户体验;
  销售分析:基于历史数据分析销量和价格,提供辅助决策;
  能源预测:预测电力、天然气等能源的消耗情况,帮助优化能源分配和使用;
  智能制造:优化生产流程、预测性维护、智能质量控制等手段,提高生产效率。

  欢迎访问Sentosa_DSML社区版的官网https://sentosa.znv.com/,免费下载体验。同时,我们在B站、CSDN、知乎、博客园等平台有技术讨论博客和应用案例分享,欢迎广大数据分析爱好者前往交流讨论。

  Sentosa_DSML社区版,重塑数据分析新纪元,以可视化拖拽方式指尖轻触解锁数据深层价值,让数据挖掘与分析跃升至艺术境界,释放思维潜能,专注洞察未来。
社区版官网下载地址:https://sentosa.znv.com/
社区版官方论坛地址:http://sentosaml.znv.com/
B站地址:https://space.bilibili.com/3546633820179281
CSDN地址:https://blog.csdn.net/qq_45586013?spm=1000.2115.3001.5343
知乎地址:https://www.zhihu.com/people/kennethfeng-che/posts
博客园地址:https://www.cnblogs.com/KennethYuen
在这里插入图片描述

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

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

相关文章

天地图实现海量聚合marker--uniapp后端详细实现

本文章详细的讲解了前后端代码来 实现uniapp天地图功能的实现 以及 后端海量数据的聚合查询 和网格算法实现思路。 并对当数据量增加和用户频繁请求接口时可能导致服务器负载过高做了前后端优化。 前端uniapp: 实现了天地图的行政区划边界/地图切换/比例尺/海量数…

数据结构预备知识---Java集合框架、List接口、包装类、装箱拆箱和泛型

文章目录 Java集合框架List接口包装类 和 装箱、拆箱泛型 Java集合框架 Java 集合框架 Java Collection Framework ,又被称为容器 container ,是定义在 java.util 包下的一组接口 interfaces和其实现类 classes .其主要表现为将多个元素 element 置于一个…

Oracle自动处理表空间不足脚本

关注过我的朋友们应该知道我分享过一些常用的监控脚本,其中最常用的就是监控表空间使用率的脚本,具体可以参考如下链接​; oracle常用监控脚本(纯干货,没有EMCC,ZABBIX也不怕)_oracle 监控及日常处理脚本-…

基于springboot+vue实现的免费体育馆场地预约系统 (源码+L文+ppt)4-099

基于springbootvue实现的免费体育馆场地预约系统 (源码L文ppt)4-099 4.1 系统总体结构设计 本系统是基于B/S架构的网站系统,分为系统前台和系统后台,前台主要是提供给注册用户和未注册登录的游客使用的,包括首页、场馆…

文案语音图片视频管理分析系统-视频矩阵

文案语音图片视频管理分析系统-视频矩阵 1.产品介绍 产品介绍方案 产品名称: 智驭视频矩阵深度分析系统(SmartVMatrix) 主要功能: 深度学习驱动的视频内容分析多源视频整合与智能分类高效视频检索与编辑实时视频监控与异常预警…

openlayers 封装加载本地geojson数据 - vue3

Geojson数据是矢量数据,主要是点、线、面数据集合 Geojson数据获取:DataV.GeoAtlas地理小工具系列 实现代码如下: import {ref,toRaw} from vue; import { Vector as VectorLayer } from ol/layer.js; import { Vector as VectorSource } fr…

OpenCV图像处理方法:腐蚀操作

腐蚀操作 前提 图像数据为二值的(黑/白) 作用 去掉图片中字上的毛刺 显示图片 读取一个图像文件,并在一个窗口中显示它。用户可以查看这个图像,直到按下任意键,然后程序会关闭显示图像的窗口 # cv2是OpenCV库的P…

【运维心得】U盘启动安装Dell服务器踩坑指南

目录 第一坑:没有键盘选择 第二坑:没有修改mount路径 最近碰到一台Dell服务器R720需要重新安装centos操作系统,由于之前已经配置好了Raid,这里就节省了配置磁盘的步骤。 以前都是通过光盘安装的,考虑到R720是支持U盘…

RAGChecker:显著超越RAGAS,一个精细化评估和诊断 RAG 系统的创新框架

RAG应用已经是当下利用大模型能力的典型应用代表,也获得了极大的推广,各种提升RAG性能的技术层出不穷。然而,如何全面、准确地评估 RAG 系统一直是一个挑战。传统评估方法存在诸多局限性:无法有效评估长文本回复、难以区分检索和生成模块的错误来源、与人…

Jmeter自动化实战

一、前言 由于系统业务流程很复杂,在不同的阶段需要不同的数据,且数据无法重复使用,每次造新的数据特别繁琐,故想着能不能使用jmeter一键造数据 二、创建录制模板 可参考:jmeter录制接口 首先创建一个录制模板 因为会有各种请求头,cookies,签名,认证信息等原因,导致手动复制…

JDK的下载

目录 JDK官网 Windows Ubantu 1.安装JDK 2.确定JDK版本 卸载OpenJDK Centos 1.下载JDK 2.安装JDK 3.验证JDK JDK官网 官网网址:Java Downloads | Oracle Windows 双击运⾏exe⽂件, 选择安装⽬录, 直⾄安装完成 Ubantu 1.安装JDK 更新软件包 sudo apt u…

【YOLO 系列】基于YOLO的工业自动化轴承缺陷检测系统【python源码+Pyqt5界面+数据集+训练代码】

前言 轴承作为机械设备中的关键部件,其性能直接影响到设备的稳定性和寿命。轴承缺陷的早期检测对于预防设备故障、减少维护成本和提高生产效率至关重要。然而,传统的轴承缺陷检测方法往往依赖于人工检查,这不仅效率低下,而且容易…

告别局域网限制:宝塔FTP结合内网穿透工具实现远程高效文件传输

文章目录 前言1. Linux安装Cpolar2. 创建FTP公网地址3. 宝塔FTP服务设置4. FTP服务远程连接小结 5. 固定FTP公网地址6. 固定FTP地址连接 前言 本文主要介绍宝塔FTP文件传输服务如何搭配内网穿透工具,实现随时随地远程连接局域网环境搭建的宝塔FTP文件服务并进行文件…

2024 前端面试题!!! html css js相关

常见的块元素、行内元素以及行内块元素,三者有何不同?​​​​​​​ HTML、XML、XHTML它们之间有什么区别?​​​​​​​ DOCTYPE(⽂档类型) 的作⽤ Doctype是HTML5的文档声明,通过它可以告诉浏览器,使用哪一个HTM…

业务逻辑与代码分离:规则引擎如何实现高效管理?

在这个快速变化、高度信息化的时代,软件系统和业务流程的复杂性日益增加。为了应对这种复杂性,越来越多的企业开始采用规则引擎来应对这种复杂性。我们这次结合JVS规则引擎来解析为什么越来越多人使用规则引擎。 规则引擎定义 规则引擎是一种用于管理和…

关键词排名技巧实用指南提升网站流量的有效策略

内容概要 在数字营销的世界中,关键词排名的影响不可小觑。关键词是用户在搜索引擎中输入的词语,通过精确选择和优化这些关键词,网站能够更轻松地被目标用户发现。提升关键词排名的第一步是了解基本概念,包括关键词的分类、重要性…

数据结构与算法——树与二叉树

树与二叉树 1.树的定义与相关概念 树的示例&#xff1a; 树的集合形式定义 Tree(K,R) 元素集合&#xff1a;K{ki|0<i<n,n>0,ki∈ElemType}&#xff08;n为树中结点数&#xff0c;n0则树为空&#xff0c;n>0则为非空树&#xff09; 对于一棵非空树&#xff0c…

51单片机应用开发---定时器(定时1S,LED以1S间隔闪烁)

实现目标 1、掌握定时器的配置流程&#xff1b; 2、掌握定时器初值的计算方法&#xff1b; 3、具体实现&#xff1a;&#xff08;1&#xff09;1mS中断1次&#xff0c;计数1000次中断&#xff0c;实现定时1S功能&#xff1b;&#xff08;2&#xff09;LED1每隔1S状态取反。 …

TCP/IP Attack Lab

网络拓扑&#xff1a; Task 1: SYN Flooding Attack 收到攻击之前&#xff0c;在Victim主机查看网络连接的状态: 在攻击之前使用User1主机(10.9.0.6)访问Victim(10.9.0.5)主机的 Telnet服务: Task 1.1: Launching the Attack Using Python 在Atacker上建立文件attack-1.py…

VictoriaMetrics 中文教程(10)集群版介绍

VictoriaMetrics 中文教程系列文章&#xff1a; VictoriaMetrics 中文教程&#xff08;01&#xff09;简介VictoriaMetrics 中文教程&#xff08;02&#xff09;安装VictoriaMetrics 中文教程&#xff08;03&#xff09;如何配置 Prometheus 使其把数据远程写入 VictoriaMetri…