吴恩达deeplearning.ai:使用多个决策树随机森林

news2024/11/24 19:03:35

以下内容有任何不理解可以翻看我之前的博客哦:吴恩达deeplearning.ai专栏

文章目录

  • 为什么要使用树集合
  • 使用多个决策树(Tree Ensemble)
  • 有放回抽样
  • 随机森林
  • XGBoost(eXtream Gradient Boosting)
  • XGBoost的库实现
  • 何时使用决策树
    • 决策树和树集合
    • 神经网络


使用单个决策树的缺点之一是该决策树可能对数据中的微小变化高度敏感,改变这种问题的一个解决方式是不仅仅使用一个决策树,而是使用多个,我们称为树集合

为什么要使用树集合

我们先来理解下什么叫做对于数据的变化高度敏感:
在这里插入图片描述
假设我们仅仅将数据集中的一只猫替换成一只与它特征相反的猫,结果发现,树的根节点的最优选择直接变成了是否有胡须,那么甚至导致了整个决策树变得完全不同了,这样就意味着算法的健壮性不够,所以,针对这种情况,我们的解决方案是构建多棵决策树。

使用多个决策树(Tree Ensemble)

在这里插入图片描述
假设你已经有三棵决策树了,假设这三棵树都是合理的(具体如何构建我们在后面再提),那么你有一只猫,在三种不同的树中的预测分别如上图,三棵树在一起开了个会,最终少数服从多数,投票决定它是一只猫。
所以我们该如何才能构建出这棵树呢? 我们将介绍一种方法。

有放回抽样

我们要做的是替换采样,步骤大概是这样的:我们将所有的训练集的样本放到一个黑箱中,从中随机抽取一定数量的例子,即使重复也没关系不用放回,然后你就构建好了一个新的替换的数据集,这个数据集可能重复,也可能不包含所有数据,但是没关系,这是计划的一部分哈哈。这样你就构建了一个和以前很相似但是有略微不同的数据集合。事实证明,这是构建树集合的关键。
在这里插入图片描述

随机森林

在这一章节中,我们着重讨论随机森林算法,这是一种强大的树样本算法,比使用单个决策树效果更好。
在这里插入图片描述
在例子中,我们从样本集中随机放回地抽取一定数量的树然后根据这些树来构建出一颗树,然后重复这一步骤,你可以构建几十棵,几百棵树,例如64,128之类,然后在这又随机抽样组成的随机森林对新样本进行预测,从而得到最终结果。
事实证明,将树的数量设置的很多并不会降低效果,但是当树的数量超过一个临界点时,你最终会得到收益递减的效果。这种树集合的创建方法也叫做袋状决策(bagged decision tree)
实际上有一个对袋装决策的修改,从而能使其变为随机森林。关键思想是,即使你采用这种带有替换的采样过程,很多时候你依然会获得同样的根节点,以及非常相似的根节点附近的节点。因此,为了避免这种情况的发生,我们需要更加随机一点。通常的做法是在每个节点上选择一个特征进行切割,方法是每次选取特征时随机选取k个,再从k个中选取一个最大增益特征作为该节点的分类特征。这种方法有效的原因是它允许决策树出现更多的情况的可能。

XGBoost(eXtream Gradient Boosting)

XGBoost是当前效果非常好的一种基于决策树和样本的决策树。我们看看XGBoost的工作原理。
构建决策树时,我们从数据集中抽取m个来创建新的数据集,但是与之前不同的是,我们要改变抽到每个元素的概率,让它更有可能抽到在之前已经创建的决策树中分类错误的例子。这就像你学弹钢琴,要把弹得不好的那一部分拿出来多练,而不是把整首曲子都再弹一遍。
在这里插入图片描述
XGBoost有以下特点

  1. 开源实现。
  2. 快速、高效。
  3. XGBoost还内置了正则化防止过度拟合,因此在相关竞赛之中表现很好。
  4. 有一个很好的默认选项来判断何时停止拆分。
  5. 为不同的数据使用不同的方法,对数据集大小要求不高。

XGBoost的库实现

XGBoost的从头实现其实是很复杂的,因此很多人会选择开源库来实现。
你可以使用如下方式导入XGBoost库并且初始化分类器:

from xgboost import XGBClassifier
 
model = XGBClassifier()

model.fit(X_train, Y_train)
y_pred = model.predict(X_test)

或者你是想回归:

from xgboost import XGBRegressor

model = XGBRegressor()
model.fit(X_train, Y_train)
y_pred = model.predict(X_test)

何时使用决策树

我们什么时候该选择何种方法呢?让我们看看每种方法的适用情况

决策树和树集合

通常适用于表格数据(结构化数据)
不适用于非结构化数据,例如音频,视频,文本等
速度快
小型决策树是可解释的

神经网络

适用于各种不同的数据类型

需要和迁移学习一起使用
更容易构建多层神经网络

为了给读者你造成不必要的麻烦,博主的所有视频都没开仅粉丝可见,如果想要阅读我的其他博客,可以点个小小的关注哦。

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

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

相关文章

将OpenCV与gcc和CMake结合使用

返回:OpenCV系列文章目录(持续更新中......) 上一篇:OpenCV4.9.0开源计算机视觉库在 Linux 中安装 下一篇: 引言: 近年来,计算机视觉技术在图像处理、目标检测和机器人等方面得到了广泛的应用…

简易版 RPC 框架实现 2.0 -netty实现

这一篇理解如果有难度,可能对netty不是很理解, 可以关注我netty专栏,还有另外一篇: 用 Netty 自己实现简单的RPC, 这一篇是学习netty的时候写的,更倾向于分析netty相关的知识, 今天我是学习dubb…

win10 + cpu + pycharm + mindspore

MindSpore是华为公司自研的最佳匹配昇腾AI处理器算力的全场景深度学习框架。 1、打开官网: MindSpore官网 2、选择以下选项: 3、创建conda 环境,这里python 选择3.9.0,也可以选择其他版本: conda create -c conda-…

[VulnHub靶机渗透] BNE0x03 Simple

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收…

智慧交通:构建智慧城市的重要一环

随着信息技术的飞速发展,智慧城市已成为现代城市发展的重要方向。作为智慧城市的重要组成部分,智慧交通以其高效、便捷、环保的特性,成为推动城市现代化进程的关键力量。本文将从智慧交通的概念、发展现状、面临挑战以及未来趋势等方面&#…

以题为例浅谈文件包含

什么叫做文件包含 文件包含函数加载的参数没有经过过滤或严格定义,可以被用户控制, 包含其他恶意文件,导致了执行非预期代码。 文件包含漏洞(File Inclusion Vulnerability)是一种常见的网络安全漏洞,它允…

HTML5CSS3提高导读

HTML5CSS3提高导读 2024/2/20 HTML5 的新增特性主要是针对于以前的不足,增加了一些新的标签、新的表单和新的表单属性等。 这些新特性都有兼容性问题,基本是 IE9 以上版本的浏览器才支持,如果不考虑兼容性问题,可以大量使用这 …

瑞熙贝通实验室安全培训考试系统

一、系统概述 瑞熙贝通实验室安全培训考试系统是一种基于互联网和人工智能技术的在线考试平台,旨在旨在提供实验室安全教育和考核的全面解决方案。该系统可以帮助实现实验室安全培训考试的在线化、智能化和规范化,提高实验室安全意识和能力,…

计算机网络——物理层(编码与调制)

计算机网络——编码与调制 基带信号和宽带信号编码与调制数字数据编码为数字信号非归零编码归零编码反向不归零编码曼彻斯特编码差分曼彻斯特编码4B/5B编码 数字数据调制为模拟信号模拟数据编码为数字信号模拟数据调制为模拟信号 我们之前讲了物理层的一些基础知识和两个准则&a…

vite打包时发布时,放在服务器的二级目录中

方式一 hash模式 如果我们的站点根目录为 public , 我们访问的时候使用的是 http://www.abc.com/ 访问到了站点的根目当,现在我们要访问 http://www.abc.com/mysite/#/ 配置如下 修改 vite.config.js base:“/mysite/” 修改 router中的配置 上面的步骤完成&…

Luckysheet + Exceljs:H5实现Excel在线编辑、导入、导出及上传服务器的示例代码(完整版demo)

创建xeditor.html <!DOCTYPE html> <html><head><meta charset"UTF-8" /><title>Hello World!</title><!-- <link relstylesheet href./luckysheet/plugins/css/pluginsCss.css /><link relstylesheet href./luck…

[游戏开发][UE5.3]GAS学习心得

GAS(GameplayAbilitySystem) UE提供的一套技能框架&#xff0c;这个框架也不是万能的&#xff0c;甚至各个部件你要进行封装开发&#xff0c;但这也比你从头写一套技能框架要容易很多。 GAS功能极其强大&#xff0c;所以它是一个庞大的系统&#xff0c;如果想运用得当&#x…

【刷题训练】牛客:JZ31 栈的压入、弹出序列

文章目录 一、题目要求二、解题思路三、C代码四、注意点五、运行成功 一、题目要求 二、解题思路 题意解读。本道题给定了两个序列pushV和popV&#xff0c;其中序列pushV是入栈顺序&#xff0c;popV是出栈顺序。问题就是让我们去判断这个popV的顺序是否可能是pushV的弹出顺序。…

瑞_Redis_短信登录(二)

文章目录 项目介绍1.1 项目准备1.2 基于Session实现登录流程1.2.1 发送短信验证码1.2.2 短信验证码登录、注册1.2.3 校验登录状态 1.3 实现发送短信验证码功能1.3.1 页面流程1.3.2 代码实现 1.41.51.6 &#x1f64a; 前言&#xff1a;本文章为瑞_系列专栏之《Redis》的实战篇的…

【LeetCode热题100】148. 排序链表(链表)

一.题目要求 给你链表的头结点 head &#xff0c;请将其按 升序 排列并返回 排序后的链表 。 二.题目难度 中等 三.输入样例 示例 1&#xff1a; 输入&#xff1a;head [4,2,1,3] 输出&#xff1a;[1,2,3,4] 示例 2&#xff1a; 输入&#xff1a;head [-1,5,3,4,0] 输…

知名Web3投资基金a16z合伙人Jane Lippencott确认出席Hack.Summit() 2024区块链开发者大会

在区块链技术的风起云涌和Web3生态的蓬勃发展中&#xff0c;知名a16z Crypto的合伙人Jane Lippencott已确认出席即将于2024年4月9日至10日在香港数码港举行的Hack.Summit() 2024区块链开发者大会。作为亚洲首次举办的Hack.Summit()&#xff0c;此次大会将为全球区块链开发者及业…

DFS的一些题目

题目1&#xff1a;奶牛选美 这道题其实就是把两个连通块合成一个&#xff0c;可以用dfs、bfs和并查集。因为最近在dfs专题训练&#xff0c;这里我只写了dfs。 首先我们用dfs的方式遍历两个连通块&#xff0c;将两个连通块中点的坐标分别存入两个数组中&#xff0c;将这两个数组…

openssl3.2 - note - Writing OpenSSL Provider Skeleton

文章目录 openssl3.2 - note - Writing OpenSSL Provider Skeleton概述笔记测试工程的建立复现的provider工程总结Provider包含的头文件openssl/core.h中的数据结构实现 OSSL_provider_init()看一下openssl自带的提供者provider的openssl命令行测试provider的本质是hook了opens…

pytorch 入门基础知识一(Pytorch 01)

一 深度学习基础相关 深度学习三个主要的方向&#xff1a;计算机视觉&#xff0c;自然语言&#xff0c;语音识别。 机器学习核心组件&#xff1a;1 数据集(data)&#xff0c;2 前向传播的model(net)&#xff0c;3 目标函数(loss)&#xff0c; 4 调整模型参数和优化函数的算法…

【研发管理】产品经理-基础认知

导读&#xff1a;产品经理&#xff08;Product Manager&#xff09;是一个负责产品的全周期管理的职位&#xff0c;他们不仅参与产品的设计、开发、推广和销售&#xff0c;还涉及到产品的市场调研、用户需求分析、竞争分析、产品规划、产品测试以及后续的产品迭代等多个环节。产…