决策树:理解机器学习中的关键算法

决策树:理解机器学习中的关键算法

决策树是一种流行而强大的机器学习算法,它从数据中学习并模拟决策过程,以便对新的未知数据做出预测。由于其直观性和易理解性,决策树成为了分类和回归任务中的首选算法之一。在本文中,我们将深入探讨决策树的工作原理、如何构建决策树、它们的优缺点,以及在现实世界中的应用。

树模型

决策树:从根节点开始一步步走到叶子节点(决策)

所有的数据最终都会落到叶子节点,既可以做分类也可以做回归

例子:一个家庭里面找出玩游戏的人(通过年龄和性别两个特征)

如何切分特征(选择节点)

问题:根节点的特征该用哪个特征?如何切分?

假设:我们目标应该是根节点就像一个老大一样能够更好的切分数据(分类的效果更好),根节点下面的节点自然就是二当家。

目标:通过一种衡量指标,来计算通过不同特征进行分支选择后的分类情况,找出最好的那个当成根节点,以此类推。

衡量指标——

熵:表示随机变量不确定性的度量(说白了就是物体内部的混乱程度,(概率越大)熵的值越小,物体的混乱程度越低,(概率越小)熵值越大,物体的混乱程度越高)

公式:H%uFF08X%uFF09= -\sum pi_{}*\log2_{}i(i=1,2,3,4,5...)

[ H(S) = -\sum_{i=1}^{n} p_i \log_2(p_i) ]

其中H(X)表示熵值大小

Pi表示:i在所有元素中的个数  /  元素总数

i:

例子:

A集合:【1,1,1,1,1,1,2,2,2,2】

B集合:【1,2,3,4,5,6,7,8,9,10】

A:负五分之三乘以二为底二分之一的对数减五分之二乘以二为底二分之一的对数

B:负十分之一乘以二为底十分之一的对数 再乘十

树的组成

根节点:第一个选择点

非叶子节点与分支:中间过程

叶子节点:最终的决策过程

决策树的基本原理

决策树通过一系列问题将数据集分割成越来越小的子集,最终达到一个可以做出预测的点。每个问题都基于特征和特征值,并且将数据集分割成两个或更多的同质子集,这些子集在目标变量上具有更高的纯度。

构建决策树的步骤

  1. 选择最佳特征:选择最佳分割特征是通过计算每个特征的信息增益(Information Gain)或基尼不纯度(Gini Impurity)来决定的。

  2. 分割数据:使用上一步选定的特征,将数据集分割成子集。分割可以基于一个阈值(用于连续特征)或特征的分类。

  3. 重复分割过程:在每个子集上重复步骤1和步骤2,直到每个子集达到一个停止标准(比如所有的记录都属于同一个类别,或者达到了树的最大深度)。

  4. 剪枝:为了避免过拟合,通过剪掉那些对模型预测能力提升不大的分支来简化决策树。

决策树的优点

  • 直观易懂:决策树的结构清晰,易于理解和解释,它们的决策规则可以直观地展示出来。

  • 不需要很多数据预处理:不需要标准化或归一化数据,也不需要处理缺失值。

  • 可以处理非线性关系:由于分割过程的非参数性质,决策树能够捕捉到数据中的非线性关系。

  • 多功能性:既可以处理分类问题,也可以处理回归问题。

决策树的缺点

  • 容易过拟合:决策树可能会创建过于复杂的树结构,完美地匹配训练数据,但对新数据的泛化能力差。

  • 稳定性较差:小的数据变动可能导致生成完全不同的树。

  • 偏向于多类别的特征:使用信息增益作为分割标准时,决策树倾向于选择那些具有更多类别的特征。

应用实例

决策树广泛应用于各种领域,如医疗诊断、信用评分、股票市场分析、农业研究等。它们的直观性使得非专业人士也能够理解模型的预测结果。

结论

决策树由于其简单和有效性,在解决分类和回归问题上是一个不可或缺的工具。虽然单独的决策树可能容易过拟合,但通过组合多个决策树构成的集成方法,如随机森林和梯度提升决策树,可以大大提高模型的准确性和鲁棒性。学习和掌握决策树不仅有助于理解基本的机器学习原理,还为进一步探索更复杂的算法奠定了基础。

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

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

相关文章

2024最新外贸建站:SiteGround主机购买使用及自建外贸独立站教程

原文来源:https://guomuyu.com/building-website-siteground.html 在开始之前,让我们先了解一下什么是外贸独立站。外贸独立站简单来说就是一个拥有独立域名的网站,它不依赖于第三方平台(如阿里巴巴、亚马逊等)的网站…

Python--闭包

在 Python 中,闭包是一种函数,它能够记住并访问其所在词法作用域(即定义该函数的作用域)中的变量,即使该函数在其词法作用域之外被调用。要形成闭包,需要满足以下几个条件: 必须有一个内嵌函数&…

介绍 QT 的 QGraphicsView 和 QGraphicsScene

当绘制复杂的图形或实现交互式图形应用程序时,可以使用 QGraphicsView 和 QGraphicsScene 来进行绘图。 QGraphicsScene: QGraphicsScene 是一个场景,可以容纳和管理图形项(QGraphicsItem)。它提供了一个二维坐标系统…

网页设计与网站建设作业html+css+js,一个简易的游戏官网网页

一个简易的游戏网页 浏览器查看 目录结构 部分代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport&…

重学Java 5 idea详细使用和运算符

慢点跑&#xff0c;前面的路不好走 ——24.1.14 一、IDEA的使用 1.idea的介绍 1.概述&#xff1a;开发工具 2.特点&#xff1a; a、idea是java写的&#xff0c;所以本地上必须有正确的jdk环境 b、idea自动保存 c、不用我们打开dos命令窗口执行javac和java命令 d、idea有强大的…

Mnajora 使用deb包安装软件

说明 Mnajora 安装deb软件包主要有两种方式 可以使用dpkg 直接安装也可是使用debtap将deb软件包转换成 使用dpkg sudo pacman -S dpkg #安装dpkgsudo dpkg -i ###.deb #使用dpkg安装deb软件包和在ubuntu上是一样的 安装成功 使用debtap debtap是一个用于将.deb包转换为A…

236.【2023年华为OD机试真题(C卷)】生成哈夫曼树(优先搜索(DFS)-JavaPythonC++JS实现)

🚀点击这里可直接跳转到本专栏,可查阅顶置最新的华为OD机试宝典~ 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目二.解题思路三.题解代码Python题解代码JAVA题解…

第 2 课 ROS 系统安装和环境搭建

文章目录 方法一&#xff1a;一键安装&#xff08;推荐&#xff09;方法二&#xff1a;逐步安装&#xff08;常规安装方式&#xff09;1.版本选择2.检查 Ubuntu 的软件和更新源3.设置 ROS 的下载源3.1 设置国内下载源3.2 设置公匙3.3 更新软件包 4. 安装 ROS5. 设置环境变量6. …

(每日持续更新)jdk api之FileFilter基础、应用、实战

博主18年的互联网软件开发经验&#xff0c;从一名程序员小白逐步成为了一名架构师&#xff0c;我想通过平台将经验分享给大家&#xff0c;因此博主每天会在各个大牛网站点赞量超高的博客等寻找该技术栈的资料结合自己的经验&#xff0c;晚上进行用心精简、整理、总结、定稿&…

鸿蒙Harmony-PersistentStorage--持久化存储UI状态储详解

用简单的心境&#xff0c;对待复杂的人生&#xff0c;方能看淡得失&#xff0c;从容入世&#xff0c;潇洒自如&#xff0c;心变得简单了&#xff0c;世界也就简单了 目录 一&#xff0c;定义 二&#xff0c;限制条件 三&#xff0c;使用 一&#xff0c;定义 LocalStorage和App…

midjournery教程(可以在微信中免费使用)

图片比例 9:16 --ar 9:16 图片风格化 --s 1000 --stylize 1000 版本 Midjourney 定期发布新模型版本以提高效率、一致性和质量。默认为最新型号&#xff0c;但可以使用--version或--v参数或使用/settings命令并选择型号版本来使用其他型号。不同的模型擅长处理不同类型的图…

【ASP.NET Core 基础知识】--中间件--内置中间件的使用

ASP.NET Core 中包含很多内置的中间件&#xff0c;我们不可能对每一个内置的中间件进行一一讲解&#xff0c;并且中间件的使用步骤大致一样&#xff0c;因此本文讲解几个常用的内置中间件以及使用中间件的步骤&#xff0c;希望读者们可以举一反三。 一、内置中间件的介绍 1.1…

爬虫-6-数据提取-beautifulsoup4

#声明:本文仅供学习。 (●—●)

12.3在应用层使用SPI总线

在SPI总线驱动框架中提供了一个spidev 的字符设备驱动&#xff0c;在应用层可以通过它来访问SPI总线。 应用层访问SPI总线的步骤 编写spidev设备树节点&#xff0c;在SPI总线的设备树节点下添加spidev设备的树节点&#xff0c;设备树示例如下所示&#xff1a; spidev0: spid…

沉浸式webview输入框被输入法遮挡了怎么办?!

还是那个倒霉的双十一需求&#xff0c;测试时发现发弹幕的输入框被系统输入法挡住了&#xff0c;这个问题在之前UC内核的浏览器时没问题啊。经过各种对比定位&#xff0c;发现是因为这次需求还有个沉浸式的实现&#xff0c;就是这个实现导致输入框无法被弹起。所幸看到了Androi…

c++字符串拼接(对标C语言的sprintf)

C语言的sprintf 我们在一些场景下需要先将字符串拼接起来再使用。 如&#xff1a; 我们要输出一个数组中的数据&#xff0c;输出的格式为--第几个数据为什么&#xff1f; 在这种情况下每次输出的字符串都是不一样的&#xff0c;我们可以通过循环来不断增加i的值&#xff0c;通…

“华为杯“第四届中国研究生数学建模竞赛-D题:邮路规划与邮车调度

目录 摘 要&#xff1a; 1.问题的重述 2.模型的假设与符号说明 2.1 针对本问题&#xff0c;本文做出如下假设 2.2 符号说明 3.问题的数学模型 4.问题的求解 4.1 问题一的求解 4.1.1 最少邮车数的求法 4.1.2 邮路规划及路径选择 4.1.3 问题的求解结果 4.2 问题二的求…

隧道应用3-Cobalt Strike正反向连接多层内网

Cobalt Strike 正向连接多层内网&#xff1a; teamserver 不允许访问 B &#xff0c;但是服务器上A有权限&#xff08; A 与 B 在同一网段&#xff09;&#xff0c;若 A 服务上已经有了 cs 的后门&#xff0c;则可以通过 cs 的正向连接去连接 B &#xff0c;在 teamserver 通…

Java 怎么判断对象是否可以被回收?

Java 怎么判断对象是否可以被回收&#xff1f; 在 Java 中&#xff0c;对象的垃圾回收是由垃圾回收器&#xff08;Garbage Collector&#xff09;负责的。判断对象是否可以被回收通常是通过对象的引用计数、可达性分析等机制来完成的。以下是一些判断对象是否可以被回收的方法…

datavrap可视化设计器使用手册

datavrap使用手册 一、产品简介 datavrap是一个动态数据可视化设计器&#xff0c;通过简单配置生成可视化视频&#xff0c;图片和gif。 站长&#xff1a;B站UP&#xff0c;夹克mnnm 这个产品的灵感是在做B站视频时&#xff0c;觉得每次通过修改代码录屏实现视频制作太过于繁琐&…