从决策树到GBDT、随机森林

news2024/9/24 5:35:27

何为决策树

决策树(Decision Tree),它是一种以树形数据结构来展示决策规则和分类结果的模型,作为一种归纳学习算法,其重点是将看似无序、杂乱的已知数据,通过某种技术手段将它们转化成可以预测未知数据的树状模型,每一条从根结点(对最终分类结果贡献最大的属性)到叶子结点(最终分类结果)的路径都代表一条决策的规则

简单来说,它是一种常用的机器学习算法,主要用于分类和回归任务。它通过树形结构来展示决策规则和分类结果。每个节点代表一个特征,每个分支代表该特征的一个可能取值,而每个叶节点则对应一个分类或回归结果。
下面图片是一个小栗子,假设你是银行的柜员,正在做要不要向一个客户发放贷款的决策,有目前的条件信息:
在这里插入图片描述
在基本概念中,
根节点:树的起始点,包含所有数据。
内部节点:根据某个特征对数据进行划分。
(是否拥有房产、是否已婚等)
叶节点:最终的分类或回归结果。(能否偿还贷款)

优缺点

在这里插入图片描述
决策树详细解释:决策树原理详解(无基础的同样可以看懂)

由树的并行计算考虑方法

GBDT (Gradient Boosting Decision Tree)

梯度提升决策树
一个例子:想象你有一个团队,每个人都擅长解决问题,但每个人开始时只能解决问题的一小部分。这个团队的目标是一起解决一个复杂的问题。

第一步:团队中的第一个成员会给出他的答案,但可能不太准确,只是一个初步的尝试。

第二步:接下来,团队中的第二个人并不是直接给出自己的答案,而是去观察第一个人的错误,看看问题在哪里没有解决好,然后他会专注于纠正这些错误。

第三步:接着,第三个人会看第二个人的工作,继续纠正前面两个人没解决好的地方。

后续步骤:这样一轮接一轮,越来越多的人加入,每个人都专注于纠正前面人的错误,最终整个团队就能得到一个非常准确的答案。

在GBDT中,这些“团队成员”就是一棵棵决策树。每一棵树都试图改进前一棵树的错误预测。最终,通过累积多棵树的结果,模型能够变得非常强大和准确。

所以,GBDT的核心思想就是:“每次学习都试着改正之前的错误”,这样一步步地提升模型的预测能力。

GBDT 是一种基于集成学习的机器学习算法,它通过将多个决策树模型组合起来,逐步提升模型的预测性能。其工作原理是逐步构建多个弱学习器(通常是简单的决策树),并且每一棵新的树都是为了纠正前一棵树预测中的误差。

核心概念包括:

决策树:每一棵树是一个简单的模型,能够对数据进行分类或回归预测,但单棵树的预测能力有限。

集成学习:GBDT 是一种集成方法,它不是用一棵树来做预测,而是用许多棵树的组合。通过集成多个弱学习器,可以得到一个强大的预测模型。

梯度提升:在每一轮迭代中,GBDT 会根据当前模型的预测误差,计算出残差(即预测值和真实值之间的差异)。新增加的树是为了拟合这些残差,从而逐步减小整体误差。这里的“梯度”指的是用损失函数的梯度(方向和大小)来指导模型的改进。

损失函数:GBDT 最常用的损失函数是平方误差(用于回归任务)或对数似然函数(用于分类任务)。算法通过最小化损失函数,逐渐提高模型的预测精度。

相对应的数学公式
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

随机森林

随机森林(Random Forest)是一种常见的并行计算解决方案。随机森林通过构建多个决策树并将它们的结果进行集成来提高模型的准确性和稳定性。每棵树都是在不同的数据子集和特征子集上独立训练的,这使得随机森林非常适合并行计算。

随机森林(Random Forest)是一种集成学习算法,它通过构建多个决策树来提高模型的准确性和稳定性。它与梯度提升决策树(GBDT)的不同之处在于,随机森林通过并行训练多棵树,然后对每棵树的输出取平均值或多数投票来做最终预测。

1.训练集的随机采样(Bootstrap Sampling):
在训练过程中,随机森林对训练数据集进行多次随机采样,使用有放回的方式。每次采样得到的子集称为“Bootstrap样本”,这意味着每棵树的训练数据集都是从原始数据集中随机抽取的。

比如,如果原始数据集有 n 个样本,每次我们从中随机抽取 n 个样本(可能重复),构建每棵树的训练集。

效果:通过采样不同的数据集,每棵树看到的数据略有不同,增强了模型的多样性,避免了过拟合。
2. 构建每棵决策树:
每棵决策树是一个独立的模型,它会在随机抽样的 Bootstrap 样本上训练,但随机森林在构建树时还引入了另一层随机性:特征随机选择。

在每个节点进行分裂时,随机森林不会考虑所有特征,而是从总特征集中随机选择 m 个特征(通常
m<d,其中 d 是总特征数)。然后仅在这些随机选择的特征中找到最佳分裂点。

效果:通过引入特征的随机性,树之间的相关性减小,使得每棵树更独立,增强模型的鲁棒性。
3. 决策树的训练:
每棵树通过标准的决策树算法来构建,树会不断分裂节点,直到满足某个终止条件(如达到最大深度或叶节点中样本数量少于某个阈值)。

区别:在随机森林中,决策树通常是“完全生长”的,即每棵树通常会深度生长,不进行剪枝,这让每棵树有可能是高偏差但低方差的模型。

4.预测输出:
在这里插入图片描述
5. 整体流程:
随机森林的核心思想是通过构建多个独立的决策树,并结合树的预测结果,来提高模型的准确性、稳健性,并减少过拟合。它利用了“模型集成”的思想——每棵树单独可能是弱学习器,但把它们结合起来就能形成一个强大的模型。
6. Out-of-Bag (OOB) 估计:
由于每棵树只使用部分数据进行训练,剩下的未被采样的数据可以用来作为验证集。这些数据称为袋外数据(OOB数据)。通过在 OOB 数据上评估模型的性能,可以近似得到模型的误差,不需要专门的验证集。

在这里插入图片描述

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

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

相关文章

3D 模型GLTF、GLB格式文件介绍使用

一、介绍 GLTF&#xff08;GL Transmission Format&#xff09;和 GLB&#xff08;GL Binary&#xff09;是用于在 Web 和各种应用程序中传输和加载 3D 场景和模型的开放标准格式。它们由 Khronos Group 开发&#xff0c;旨在提供一种高效、可扩展且易于使用的 3D 内容格式。以…

Java项目中Linux跑起来

要让一个web项目跑起来首先需要tomat和jdk的包&#xff08;Linux版本&#xff09; 之后可以使用Xftp工具将包传到linux中 可以新建一个java包专门放这些文件 之后将其这些包解压出来 tar -xvf jdk-8u141-linux-x64.tar.gz //换自己的包名使用命令配置自己的环境变量 vim /et…

计算机专业选题推荐-基于python的协同过滤酒店推荐系统

精彩专栏推荐订阅&#xff1a;在下方主页&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f496;&#x1f525;作者主页&#xff1a;计算机毕设木哥&#x1f525; &#x1f496; 文章目录 一、协同过滤酒店…

【C++ 11多线程加速计算实操教程】

【C 11多线程加速计算实操教程】 1. 了解线程的基本概念2. 创建线程2.1 启动线程的基本示例&#xff1a;2.2 运行结果 3. 线程加速计算3.1 演示如何使用多个线程计算数组的和&#xff1a;3.2 运行结果3.3 结果分析3.4 拓展学习 4. 互斥量&#xff08;Mutex&#xff09;4.1 演示…

Qt中多语言的操作(以QtCreator为例)

1、首先&#xff0c;我们在代码中与文本相关的且需要支持多语言的地方&#xff0c;用tr来包含多语言key&#xff08;多语言key是我们自己定义的&#xff09;&#xff0c;如下 //举例 QPushButton* btnnew QPushButton(this); btn->move(20,20); btn->resize(100,50); //…

vue.js 展示一个树形结构的数据视图,并禁用其中默认选中的节点

功能描述 展示树形结构&#xff1a; 使用 Element UI 的 <el-tree> 组件展示树形结构数据。数据由 content 数组提供&#xff0c;树形结构包含了嵌套的节点及其子节点。 默认选中节点&#xff1a; 使用 defaultCheckedKeys 属性指定默认选中的节点。这些节点在树形结构渲…

自动换行且带下划线的居中长标题的论文封面一种绘图实现

自动换行且带下划线的居中长标题的论文封面一种绘图实现 引言 在一些学位论文的封面上要求标题带有下划线&#xff0c;但长标题的情况下标题自动换行后下划线就会面临一些问题。 因此&#xff0c;往往需要一些特殊的处理。 在《如何制作自动换行且有定长下划线的论文封面模板…

决策树+随机森林模型实现足球大小球让球预测软件

文章目录 前言一、决策树是什么&#xff1f;二、数据收集与整理1.数据收集2.数据清洗3.特征选择 三、决策树构建3.1绘制训练数据图像3.2 训练决策树模型3.3 依据模型绘制决策树的决策边界3.4 树模型可视化 四、模型预测五、随机森林模型总结 前言 之前搞足球数据分析的时候&…

删除topic提示admin token

这个admin token不是admin的密码&#xff0c;而是如下配置文件中的值&#xff1a; 否则报错&#xff1a; 检查&#xff1a; [rootk1 conf]# pwd /opt/kafka-web/efak-web-3.0.1/conf [rootk1 conf]# grep token system-config.properties # delete kafka topic token efak.t…

教师管理系统小程序+ssm论文源码调试讲解

第二章 开发工具及关键技术介绍 2.1 JAVA技术 Java主要采用CORBA技术和安全模型&#xff0c;可以在互联网应用的数据保护。它还提供了对EJB&#xff08;Enterrise JavaBeans&#xff09;的全面支持&#xff0c;java servlet AI&#xff0c;JS&#xff08;java server ages&…

TCL25届校招测评笔试TAS人才测评题库:高分攻略真题分析

&#x1f31f; 职场新人必看&#xff1a;TCL校招测评全解析 &#x1f31f; 亲爱的小伙伴们&#xff0c;你是否正准备踏入职场&#xff0c;或是对即将到来的校招感到既兴奋又紧张&#xff1f;今天&#xff0c;我将带你深入了解TCL校招中的TAS人才测评&#xff0c;让你在面试前做…

Flutter鸿蒙化环境配置(windows)

Flutter鸿蒙化环境配置&#xff08;windows&#xff09; 参考资料Window配置Flutter的鸿蒙化环境下载配置环境变量HarmonyOS的环境变量配置配置Flutter的环境变量Flutter doctor -v 检测的问题flutter_flutter仓库地址的警告问题Fliutter doctor –v 报错[!] Android Studio (v…

构建数据分析模型,及时回传各系统监控监测数据进行分析反馈响应的智慧油站开源了。

AI视频监控平台简介 AI视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒&#xff0c;省去繁琐重复的适配流程&#xff0c;实现芯片、算法、应用的全流程组合&#xff0c;从而大大减少企业级应用约95%的开发成本。增…

20 基于STM32的温度、电流、电压检测proteus仿真系统(OLED、DHT11、继电器、电机)

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于STM32F103C8T6 采用DHT11读取温度、滑动变阻器模拟读取电流、电压。 通过OLED屏幕显示&#xff0c;设置电流阈值为80&#xff0c;电流小阈值为50&#xff0c;电压阈值为60&#xff0c;温度阈值…

虚幻引擎的射线检测/射线追踪

射线检测在 FPS/TPS 游戏中被广泛应用 什么是射线检测? 两个点行成一条线 , 射线检测是从一个起始点发出一条到终点的射线 , 如果射线命中一个游戏对象&#xff0c;就可以获取到对象命中时的 位置、距离、角度、是否命中、骨骼 等非常多的信息 , 这些信息在射击游戏中至关重…

价格便宜又好用的云电脑挑选:ToDesk云电脑 vs 青椒云

云计算技术的成熟使得云电脑因其便捷、灵活和高效而成为日常工作、学习和娱乐的首选工具。而在众多云电脑品牌之中&#xff0c;ToDesk云电脑与青椒云电脑 较为热门 。在此&#xff0c;笔者将围绕价格、性能、用户体验等关键指标对 比 这两款云电脑&#xff0c; 帮助 你们 找到最…

信号分解降噪 | Matlab实现基于TVFEMD-IMF能量熵增量的数据降噪方法

信号分解降噪 | Matlab实现基于TVFEMD-IMF能量熵增量的数据降噪方法 目录 信号分解降噪 | Matlab实现基于TVFEMD-IMF能量熵增量的数据降噪方法效果一览基本介绍程序设计参考资料 效果一览 基本介绍 信号分解降噪 | Matlab实现基于TVFEMD-IMF能量熵增量的数据降噪方法。该方法引…

地平线静态目标检测 MapTR 参考算法-V1.0

简介 高清地图是自动驾驶系统的重要组件&#xff0c;提供精确的驾驶环境信息和道路语义信息。传统离线地图构建方法成本高&#xff0c;维护复杂&#xff0c;使得依赖车载传感器的实时感知建图成为新趋势。早期实时建图方法存在局限性&#xff0c;如处理复杂地图元素的能力不足…

【python】requests 库 源码解读、参数解读

文章目录 一、基础知识二、Requests库详解2.1 requests 库源码简要解读2.2 参数解读2.3 处理响应2.4 错误处理 一、基础知识 以前写过2篇文章&#xff1a; 计算机网络基础&#xff1a; 【socket】从计算机网络基础到socket编程——Windows && Linux C语言 Python实现…

OpenHarmony(鸿蒙南向开发)——小型系统内核(LiteOS-A)【LMS调测】

往期知识点记录&#xff1a; 鸿蒙&#xff08;HarmonyOS&#xff09;应用层开发&#xff08;北向&#xff09;知识点汇总 鸿蒙&#xff08;OpenHarmony&#xff09;南向开发保姆级知识点汇总~ 持续更新中…… 基本概念 LMS全称为Lite Memory Sanitizer&#xff0c;是一种实时…