C2-4.3.1 多个决策树——随机森林

C2-4.3.1 多个决策树——随机森林

参考链接

1、为什么要使用多个决策树——随机森林?

  • 决策树的缺点:

A small change in the data can cause a large change in the structure of the decision tree causing instability

即:对数据集 中微小的变化敏感,往往一棵树的结果不是那么理想—— 通过多个决策树的组合,让它对数据变化没那么敏感,得到更加准确的结果

  • 举一个例子:

在下图中,我们仅仅改变了一个训练示例,但是由于这个训练示例的改变,造成了 要拆分的 最高 ‘信息增益’——变成了胡子(原来是耳朵的形状)

所以就变成了右侧的决策树,使得左右两侧变成了完全不同的决策树。——训练一堆不同的决策树往往会得到更好的结果——引出 “随机森林”

在这里插入图片描述

在这里插入图片描述

  • 多个决策树工作原理:
    • 第一个树通过预测——结果是 猫
    • 第二个树通过预测——结果不是 猫
    • 第三个树通过预测——结果是 猫

最终结果预测:取最多的结果——是猫

随机森林是基于树的机器学习算法,该算法利用了多棵决策树的力量来进行决策。顾名思义,它是由一片树木组成的“森林”!

但是为什么要称其为“随机森林”呢?这是因为它是随机创造的决策树组成的森林。决策树中的每一个节点是特征的一个随机子集,用于计算输出。随机森林将单个决策树的输出整合起来生成最后的输出结果。

简单来说:

“随机森林算法用多棵(随机生成的)决策树来生成最后的输出结果。”

img

2、随机森林

  • 随机森林是由很多决策树组成的,不同决策树之间不存在相关性。

  • 当我们执行分类任务时,新的输入样本进入,对森林中的每一棵决策树分别进行判断和分类。每棵决策树都会得到自己的分类结果,而决策树哪个分类结果最多,那么随机森林就会用这个结果作为最终结果。

2.1构建随机森林的 4 个步骤

构建随机森林的 4 个步骤

Ste1:有放回的随机抽样

  • 将样本量为N的样本进行N次放回抽取,每次抽取一个样本,最终形成N个样本。将选取的N个样本作为决策树根节点的样本来训练一棵决策树。决策树。

  • 如下:是有放回的随机抽样的结果

在这里插入图片描述

通过 不同的随机抽样的结果,将选取的N个样本作为决策树根节点的样本来训练一棵决策树。决策树。

不同的随机抽样的 训练集,得到了不同的决策树。

在这里插入图片描述

Step2:随机选取属性,作为分裂节点。

  • 当每个样本有M(比如100个)个属性时,当决策树的每个节点需要分裂时,从这M个属性中随机选择m(10个)个属性,并满足条件m << M。然后从这些中使用一定的策略(如信息增益) m 个属性,选择 1 个属性作为节点的分裂属性

在这里插入图片描述

  • m 的选择通常如下,就是图中的k :

在这里插入图片描述

Step3 :重复步骤2

  • 在决策树形成过程中,每个节点都要按照步骤2进行分裂(很容易理解,如果该节点选择的下一个属性是其父节点刚刚分裂时使用的属性,则该节点已经达到叶子节点,无需继续分裂)。直到不能再分开为止。请注意,在整个决策树的形成过程中没有进行任何修剪。

Step4 : 构建随机森林

  • 根据步骤1~3,创建大量决策树,构成随机森林。

3、随机森林的4个应用方向——(前提:结构化数据)

随机森林的4个应用方向

随机森连——适用于“结构化数据”

随机森林可以用在很多地方:

  1. 离散值的分类
  2. 连续值的回归
  3. 无监督学习聚类
  4. 异常点检测

4、※ XGBoot 增强随机森林

  • 用的特别多,尤其是在Kaggle比赛等或者实际项目中
  • 和 随机森林相比:不同的地方是,随机森林每次都是有放回的抽取(概率是 1/m), 但是 XGBoot 不同,从第二次开始进行针对性的训练。先选取前一轮有错误的数据,再加上随机抽取的数据进行训练。更好的解决问题。

在这里插入图片描述

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

已安装MySQL5.7的基础上安装MySQL8教程

类似文章很多&#xff0c;但部分问题解决方案并不是很完整&#xff0c;且对细节描述不够清楚&#xff0c;特意总结一篇 在本机已经安装MySQL5.7的情况下新安装MySQL8.x的方案如下&#xff08;请按照步骤详细操作&#xff09;&#xff1a; 1.进入官网下载 https://dev.mysql.c…

怎么批量创建多个文件夹并命名?

怎么批量创建多个文件夹并命名&#xff1f;在日常的文件管理中&#xff0c;有时候我们需要批量创建多个文件夹并给它们命名&#xff0c;以便更好地组织和分类我们的文件。无论是在工作中还是个人使用中&#xff0c;批量创建文件夹可以帮助我们更高效地整理和管理文件。想象一下…

游戏引擎支持脚本编程有啥好处

很多游戏引擎都支持脚本编程。Unity、Unreal Engine、CryEngine等大型游戏引擎都支持使用脚本编写游戏逻辑和功能。脚本编程通常使用C#、Lua或Python等编程语言&#xff0c;并且可以与游戏引擎的API进行交互来控制游戏对象、设置变量、执行行为等。使用脚本编程&#xff0c;游戏…

java项目启动报错排查过程——mysql服务挂了

来自前端同事无法启动后台项目的案例 Caused by: java.net.ConnectException Create breakpoint : Connection refused: connect The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. 大致…

【信息安全】深度分析邮件安全及钓鱼攻击防范

本博文共计3100余字&#xff0c;预计需阅读20分钟 【邮件安全建设】 一、前言 邮件系统作为企业办公网络架构中重要的组成部分&#xff0c;同时也是业务高频使用的办公应用&#xff0c;一旦出现安全问题&#xff0c;业务将会被严重干扰甚至中断&#xff0c;本篇博客通过攻守两…

基于Vue的应届毕业生财务管理系统-计算机毕业设计源码82886

摘 要 随着互联网大趋势的到来&#xff0c;社会的方方面面&#xff0c;各行各业都在考虑利用互联网作为媒介将自己的信息更及时有效地推广出去&#xff0c;而其中最好的方式就是建立网络管理系统&#xff0c;并对其进行信息管理。由于现在网络的发达&#xff0c;应届毕业生财务…

如何正确地理解应用架构并开发

许多同学或多或少都经历过这样的流程&#xff1a; 新同学刚来公司&#xff0c;学习了解团队的一些工程代码&#xff0c;并了解其中的代码风格团队新接手了一些其他团队的项目&#xff0c;需要了解工程结构以及概念如何定义工程项目的工程结构&#xff0c;包目录结构并达成团队共…

Redis底层原理

持久化 Redis虽然是个内存数据库,但是Redis支持RDB和AOF两种持久化机制,将数据写往磁盘,可以有效地避免因进程退出造成的数据丢失问题,当下次重启时利用之前持久化的文件即可实现数据恢复。 RDB RDB持久化是把当前进程数据生成快照保存到硬盘的过程。所谓内存快照,就是…

Docker与微服务实战(基础篇)

Docker与微服务实战&#xff08;基础篇&#xff09; 1、Docker简介2、Docker安装步骤1.Centos7及以上的版本2.卸载旧版本3.yum安装gcc相关4.安装需要的软件包5.设置stable镜像仓库【国内aliyun】6.更新yum软件包索引--以后安装更快捷7.安装Docker-Ce8.启动Docker9.测试10.卸载1…

利用 Vesta 软件绘制团簇构型 ICO多面体(二)

微信公众号&#xff1a;原子与分子模拟更新的快&#xff0c;欢迎大家关注。 -------------------------------------------------------------------- 进入网站下载 ICO 文件&#xff1a; http://www.pas.rochester.edu/~wangyt/algorithms/bop/ 利用 Vesta 软件进行绘制。 …

openssl3.2 - 自己构建openssl.exe的VS工程(在编译完的源码版本上)

文章目录 openssl3.2 - 自己构建openssl.exe的VS工程(在编译完的源码版本上)概述笔记备注END openssl3.2 - 自己构建openssl.exe的VS工程(在编译完的源码版本上) 概述 将openssl3.2编译出来了(openssl3.2 - 编译) 安装后的openssl.exe可以干openssl3.2所有的事情, 用openssl.…

Kubernetes WebHook 入门 -- 入门案例: apiserver 接入 github

博客原文 文章目录 k8s 集群配置介绍Admission WebhookWebHook 入门实践: github 认证接入web 服务器Dockerfile 镜像制作amd64x86_64构造镜像检验镜像 Makefilewebhook 接入 apiserverwebhook.yamlapiserver 挂载 webconfig在 github 中创建认证 token将 token 添加到 kubecon…

mybatisplus快速入门-个人理解版

mybatisplus快速入门 1.快速入门1.1准备开发环境-idea2019.2.1版第一步&#xff1a;新建工程第二步&#xff1a;导入依赖 1.2创建数据库和表创建库表添加数据 1.3编写代码进行测试第一步&#xff1a;配置application.yml第二步&#xff1a;添加实体类第三步&#xff1a;添加map…

如何实现公网访问GeoServe Web管理界面共享空间地理信息【内网穿透】

文章目录 前言1.安装GeoServer2. windows 安装 cpolar3. 创建公网访问地址4. 公网访问Geo Servcer服务5. 固定公网HTTP地址 前言 GeoServer是OGC Web服务器规范的J2EE实现&#xff0c;利用GeoServer可以方便地发布地图数据&#xff0c;允许用户对要素数据进行更新、删除、插入…

前端面试题集合五(css)

CSS 面试知识点总结 本部分主要是笔者在复习 CSS 相关知识和一些相关面试题时所做的笔记&#xff0c;如果出现错误&#xff0c;希望大家指出&#xff01; 目录 1.介绍一下标准的 CSS 的盒子模型&#xff1f;低版本 IE 的盒子模型有什么不同的&#xff1f;2.CSS 选择符有哪些…

MobileViT

CNN与transformer的混合。 轻量级、通用的、对移动端友好的vision transformer模型。

快乐学Python,数据分析之获取数据方法「公开数据或爬虫」

学习Python数据分析&#xff0c;第一步是先获取数据&#xff0c;为什么说数据获取是数据分析的第一步呢&#xff0c;显而易见&#xff1a;数据分析&#xff0c;得先有数据&#xff0c;才能分析。 作为个人来说&#xff0c;如何获取用于分析的数据集呢&#xff1f; 1、获取现成…

实习学习总结(2023-12-14---2024-1-08)

CS汉化 首先下载CSagent&#xff0c;百度网盘中有 按照如下放置目录 使用出现中文乱码 插件使用乱码主要跟cs客户端加载没有指定UTF-8编码有关 指定编码的字符&#xff1a;-Dfile.encodingUTF-8 上面的字段添加到启动脚本里面即可&#xff0c;如&#xff1a; java -Dfile.e…

Apache Doris (六十一): Spark Doris Connector - (1)-源码编译

🏡 个人主页:IT贫道-CSDN博客 🚩 私聊博主:私聊博主加WX好友,获取更多资料哦~ 🔔 博主个人B栈地址:豹哥教你学编程的个人空间-豹哥教你学编程个人主页-哔哩哔哩视频 目录 1. Spark Doris Connector

【LeetCode:49. 字母异位词分组 | 哈希表】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…
最新文章