随机森林算法

article/2025/10/13 15:32:11

随机森林

    • 1.1定义
    • 1.2随机森林的随机性体现的方面
    • 1.3 随机森林的重要作用
    • 1.4 随机森林的构建过程
    • 1.5 随机森林的优缺点
    • 2. 随机森林参数描述
    • 3. 分类随机森林的代码实现

1.1定义

  • 随机森林是一种有监督学习算法,是以决策树为基学习器的集成学习算法。
  • 随机森林非常简单,易于实现,计算开销也很小,在分类和回归表现出非常惊人的性能,因此,随机森林被誉为"代表集成学习技术水平的方法"

1.2随机森林的随机性体现的方面

  • 数据集的随机选择
    • 从原始数据集中采取《有放回的抽样bagging》,构造子数据集,子数据集的数据量和原始数据集相同,不同子数据集的元素可以重复,同一子数据集中的元素也可以重复
  • 待选特征的随机选取
    • 随机森林中的子树的每一个分裂过程并未用到所有的待选特征,而是从所有的待选特征中随机选取一定的特征,之后再随机选取的特征中选取最优的特征

1.3 随机森林的重要作用

  • 可用于分类问题和回归问题
  • 可以解决模型过拟合的问题,如果随机森林中的树足够多,那么分类器就不会出现过拟合
  • 可以检测出特征的重要性,从而选取好的特征

1.4 随机森林的构建过程

  • 1.从原始数据集中随机有放回采样取出m个样本生成m个训练集
  • 2.对m个训练集,分别训练m个决策树模型
  • 3.对于单个决策树模型,假设训练样本特征的个数为n,每次分裂时根据信息增益/信息增益比/基尼系数,选择最好的特征进行分裂
  • 4.将生成的多棵决策树组成随机森林,对于分类问题,按照多棵树分类器投票决定最终分类的结果;对于回归问题,由多棵树预测值的均值决定最终预测结果

1.5 随机森林的优缺点

  • 优点
    • 采用了集成算法,本身精度比大多数单个算法要好,即准确性高
    • 两个随机性引入,使得随机森林不容易陷入过拟合(样本随机,特征随机)
    • 两个随机性引入,使得随机森林具有一定的抗噪声能力,对比其它算法具有一定的优势
    • 能够处理很高的维度(feature很多)的数据,并且不同做特征选择,对数据集的适应能力强:即能处理离散型数据,也能处理连续型数据
    • 在训练过程中,能够检测到feature间的互相影响,且可以得出feature的重要性,具有一定的参考意义
  • 缺点
    • 当随机森林中的决策树个数很多时,训练时需要的空间和时间会比较大

2. 随机森林参数描述

  • 分类参数
参数含义
n_estimators树的数量,即基评估器的数量。这个参数对随机森林模型的精确性影响是单调的,n_estimators越大,模型的效果越好。但是,任何一个模型都有决策边界,n_estimators达到一定的程度之后,随机森林的精确性往往不在上升或开始波动,并且,n_estimators越大,需要的计算量和内存也越大,训练的时间也会越来越长,对于这个参数,希望在训练难度和模型效果之间取得平衡;默认值在现有版本的sklearn中是10,但是在即将更新的0.22版本中,这个默认值会被修正为 100
random_state控制生成森林的模式,用来固定森林中树的随机性,当random_state固定时,随机森林中生成是一组固定的树
bootstrap控制抽样技术参数,boostrap默认为TRUE,代表采用有放回的随机抽样技术
oob_score被忽略或者一次都没被采集到的样本叫做obb袋外数据;即在使用随机森林时,可以不划分测试集和训练集,用袋外数据即可测试;将oob_score=True,训练完毕后,可以用obb_score_查看在袋外数据上的测试结果
cirterion不纯度衡量指标,有基尼系数和信息熵两种选择
max_depath树的最大深度,超过最大深度的树枝都会剪掉
min_samples_leaf一个节点在分枝后的每个子节点都必须包含至少min_samples_leaf个训练样本,否则分支都不会发生
min_samples_split一个节点必须包含至少min_samples_split个训练样本,这个节点才允许分枝,否则不允许分枝
max_features限制分枝时考虑的特征个数,超过限制个数的特征都会被舍弃,默认值为总特征个数开平方取整
min_impurity_decrease限制信息增益的大小,信息增益小于设定数值的分枝不会发生
  • 回归参数
    • from sklearn.ensemble import RandomForestRegression
  • 所有参数,属性,接口,全部和随机分类器一致,仅有不同的就是回归树与分类树的不同,不纯度指标,参数Criterion不一致
  • Criterion参数,回归树衡量分支质量的指标,支持的标准有三种
参数含义
mse使用均方误差(mean squared error(MSE),父节点与子节点之间的均方误差的差额将被用来作为特征选择的标准,这种方法通过使用叶子结点的均值来最小化L2损失
friedman_mse使用费尔德曼均方误差,这种指标使用费尔德曼针对潜在分支中的问题改进后的均方误差
mae使用绝对平均误差(mean absolute error),这种指标使用叶节点的中值来最小化L1损失

3. 分类随机森林的代码实现

  • 分类

    • from sklearn.ensemble import RandomForestClassifier
  • obb_score_重要参数

    from sklearn.ensemble import RandomForestClassifier
    from sklearn.datasets import load_wine
    wine=load_wine()
    rfc=RandomForestClassifier(n_estimators=25,oob_score=True)
    rfc=rfc.fit(wine.data,wine.target)
    rfc.oob_score_  #0.9606741573033708
    
  • 随机森林与决策树的效果对比

    from sklearn.tree import DecisionTreeClassifier
    from sklearn.ensemble import RandomForestClassifier
    from sklearn.datasets import load_wine
    from sklearn.model_selection import train_test_split
    wine=load_wine()
    #随机森林与决策树的对比
    x_train,x_test,y_train,y_test=train_test_split(wine.data,wine.target,test_size=0.3)
    clf=DecisionTreeClassifier(random_state=0)
    rfc=RandomForestClassifier(random_state=0)
    clf=clf.fit(x_train,y_train)
    rfc=rfc.fit(x_train,y_train)
    score_c=clf.score(x_test,y_test)
    score_r=rfc.score(x_test,y_test)
    print(score_c,score_r)  #0.8518518518518519 0.9629629629629629
    
  • 随机森林与决策树在一组交叉验证下的效果对比

    from sklearn.tree import DecisionTreeClassifier
    from sklearn.ensemble import RandomForestClassifier
    from sklearn.datasets import load_wine
    from sklearn.model_selection import cross_val_score
    import matplotlib.pyplot as plt
    %matplotlib inline
    wine=load_wine()
    rfc=RandomForestClassifier(n_estimators=25)
    rfc_s=cross_val_score(rfc,wine.data,wine.target,cv=10)
    clf=DecisionTreeClassifier()
    clf_s=cross_val_score(clf,wine.data,wine.target,cv=10)
    plt.plot(range(1,11),rfc_s,label='RandomForest')
    plt.plot(range(1,11),clf_s,label='DecisionTree')
    plt.legend()
    plt.show()
    

在这里插入图片描述

  • 随机森林与决策树在十组交叉验证下的效果对比

    from sklearn.tree import DecisionTreeClassifier
    from sklearn.ensemble import RandomForestClassifier
    from sklearn.datasets import load_wine
    from sklearn.model_selection import cross_val_score
    import matplotlib.pyplot as plt
    %matplotlib inline
    wine=load_wine()
    rfc_l=[]
    clf_l=[]
    for i in range(10):rfc=RandomForestClassifier(n_estimators=25)rfc_s=cross_val_score(rfc,wine.data,wine.target,cv=10).mean()rfc_l.append(rfc_s)clf=DecisionTreeClassifier()clf_s=cross_val_score(clf,wine.data,wine.target,cv=10).mean()clf_l.append(clf_s)plt.plot(range(1,11),rfc_l,label="RangeForest")
    plt.plot(range(1,11),clf_l,label='DecisionTree')
    plt.legend()
    plt.show()
    

在这里插入图片描述


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

相关文章

机器学习-随机森林(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…

jvisualvm (Java VisualVM)

文章来源:https://blog.csdn.net/a19881029/article/details/8432368 jvisualvm能干什么 监控内存泄露,跟踪垃圾回收,执行时内存、cpu分析,线程分析… jvisualvmg已经被集成在jdk1.6以上的版本中(不是jre)。自身运行需要最低jdk1.6版本&…

jvisualvm监控远程jvm

方式一:JMX 1、服务端添加配置 在tomcat/bin/catalina.sh文件中添加如下配置: export JAVA_OPTS"-Xms256m -Xmx512m -Xss256m -XX:PermSize512m -XX:MaxPermSize1024m -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname192.168.16.239 …