机器学习西瓜书南瓜书——决策树模型

news2024/11/21 1:38:08

机器学习西瓜书&南瓜书——决策树模型

本文主要结合南瓜书对西瓜书决策树模型进行一个解读,帮助大家更好的理解西瓜书

​ 决策树模型是机器学习领域最常见的模型之一,甚至有人说决策树模型上机器学习领域的水平上升了一个台阶。决策树的基本思想是根据样本的一些特征来构造一个树,树的每个分支节点都是一个分支属性,每个分支节点都会针对当前节点的属性把样本一分为二,有这个属性或者说在这个属性上表现为yes的数据被分为一个集合,没有这个属性或者在这个属性上表现为no的数据呗分为一个集合。一个完整的决策过程包含若干个子决策,最终得到判定结果。以“找出好瓜”这个任务为例,假设西瓜有“色泽“,”根蒂“,”敲击声“这三个属性,假设先判定“色泽”这个属性,色泽为青色的是好瓜,其余的都不是好瓜,这样根据“色泽”这个属性就可以划分两个集合,接下来就在分别根据“根蒂”和“敲击声”这两个属性划分,以此类推,最后的到一个好瓜的特征,然后就可以用这棵树进行预测了。

在这里插入图片描述

决策树每一步都是在缩小集合的范围,每一步都是在上一步的基础上进行细分的,其考虑范围是在上次决策结果范围之内的。一棵决策树包含一个根结点,若干个分支节点和叶节点,根结点包含所有样本数据,每个分支节点对应一个属性测试,叶子节点对应决策结果。西瓜书中也给出了决策树训练的具体流程:

在这里插入图片描述
流程解释:

​ 首先TreeGenerate是一个递归执行的函数,每次进入函数都会先生成一个新的分支节node,然后接下来的操作都是在确定选择哪个属性(或属性值取多少)来最为决策点。

​ 第一种情况:对应代码第2行,如果当前节点的样本集合中所有样本都是同一类的(在执行分类前就是同一类的了),那么直接把这个node标记为叶子节点,类别为C类。

​ 第二种情况:属性集合A为空或D在A上的取值相同,对应代码第5行。这句话要分成两部分来看,这两部分又分别对应两种小的情况。“属性集合A为空”:当样本细分到当前节点node时属性已经分完了,但是样本还没完全分开,还拿西瓜举例子,A={“色泽”,“根蒂”,“敲声”},现在已经根据这个三个属性进行分类的,但是分出的样本子集还是有正有负(即样本没完全分开),这时递归不得不中止,因为已经没有属性可让你再分了;“D在A上的取值相同”:A中的属性还没用完,但是后面不管再取A中的哪个属性,样本在这些属性上的表现都是一样的,这样不管怎么分都是没有意义的,所以递归可以停止了。对于这两种情况,node也需要标记为叶子节点,它的类型就是D中样本数最多的样本的类型。

​ 第三种情况:如果根据属性a划分后数据集为空集,说明样本数据中根本没有样本有这个属性,不能再分,所以把node叶子节点为了能训练出包含决策a的决策树,我们使用先验概率,把父节点中样本量多的数据的类型当作这个节点的类型。

​ 第四种情况:如果不符合上面三种情况,说明集合D到这一步还是可以再往下分的,或者说他再往下分也是有意义的,所以这种情况的关键就是要找到A中最优的划分属性a*,使得根据a划分出的数据使模型的分类性能更好。下面介绍的关键就是如何找到这个a*

ID3决策树

ID3决策树算法是以信息论为基础,以信息熵为指标来选出最优的a的。选择a的目的就是不断划分数据集日,让数据子集的“混乱程度”越来越小,也就是让子集越分越是同一类型的数据。信息论中的“信息熵”这个概念可以衡量信息的“混乱程度”。
在这里插入图片描述
​ y是样本的总类型数。信息熵可以衡量一个集合的“纯度”但是如何根据这个选出最优的a呢?最简单直接的办法就是从A中挨个试每个a,使用每个小a都对当前集合分一下,假设分出v个子集合,然后计算出这v个子集合信息熵的和跟分类前的信息熵做减法,计算出中间的“增益gain”(也是就是变化量),比较使用各个a分类后“增益”的大小,选出“增益”最大的作为当前节点最优的a,即a

​ 这里再解释下为什么要选“增益”最大的,按照西瓜书的说法“增益越大说明按照a划分所获的纯度的提升越大”,“增益“越大说明信息熵减少的就越多,举一个例子:假设一个节点node一共有A={a1,a2}两个属性,划分前总的信息熵为10,使用a1划分后子集信息熵的和为5,使用a2划分后子集信息熵的和为8,说明a1划分后样本的混乱程度更小,样本更纯,因此a1的划分效果更好。

​ 西瓜书给出“信息增益”的计算公式:
在这里插入图片描述
​ 大家注意,在公式的后半部分西瓜书给Ent加了一个权重,这个权重是根据子集样本大小动态变化的,目的就是让样本多的集合影响更多一些,样本小的集合影响更小一些。这个很容易理解,因为样本量大就更具有客观性,应该给予更大的占比,并且小样本集合天然的就比大样本集合的混乱程度要小,所有小样本的结果不太具有参考意义,给他一个小权重。

下面是西瓜书给出的构造ID3决策树的实际例子:

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

在这里插入图片描述

C4.5决策树

​ 其实使用ID3决策树已经可以对离散的数据进行分类了,但是他有一些弊端,就是他会对可选数值较多的属性有所偏好,因为一个属性他可选的数值越多他划分出的子集也就越多,划分出的子集合越多每个集合中的数据也就越“纯”。这是符合ID3决策树的生成逻辑的,但是这样会导致模型的泛化性急剧下降,就像书中所说的“按照编号进行划分,每个编号都可以划分成一个子集并且这个集合中只有他自己一个元素“这样集合的信息熵确实是下降了,但是在新样本上模型是不具有预测能力的。于是Quinlan提出了用增益率选出a*的方法。

增益率:
在这里插入图片描述
在Gain的基础上除去IV后就会平衡多取值属性的影响程度,让他不那么“强势”。这其实是一个标准化(normalization)的过程,统一了单位。

C4.5确实解决了ID3的问题,但是他又引入一个新问题,就是增益率会对样本可取值数目较少的属性有所偏好,纯纯是解决了一个bug又引入一个新bug。因此c4.5在使用时不会直接根据增益率选择最优属性,而是先选出信息增益高出平均值的属性然后再从这几个属性中使用增益率排序得出最优属性。

CART(基尼指数)决策树

在这里插入图片描述

后续

随着技术不断的发展,决策树的种类层出不穷,但是他们和核心目标都是选出让子集更“纯”的属性a。研究表明,只要决策树能实现让子集更“纯”,不管使用什么方法选出a,模型的性能差别都不大,与怎么选出a相比更重要的是“剪枝”处理。剪枝顾名思义就是减去决策树的一些分支节点,这一操作可以大大提高模型的泛化能力,实验表明有些决策树在进行剪枝处理后性能提升高达25%。后续文章会讲解剪枝操作。

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

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

相关文章

家用高清投影仪怎么选?目前口碑最好的投影仪推荐

双十一马上要到了,而且今年还有投影仪的家电国补,所以大家入手投影仪的需求也越来越多,但是家用高清投影仪怎么选?什么投影仪最适合家用?家庭投影仪哪个牌子质量最好?今天就给大家做一个2024性价比高的家用…

本地访问autodl的jupyter notebook

建立环境并安装jupyter conda create --name medkg python3.10 source activate medkg pip install jupyter 安装完成后,输入jupyter notebook --generate-config 输入ipython,进入python In [2]: from jupyter_server.auth import passwd In [3]: passwd(algori…

Halcon基础系列1-基础算子

1 窗口介绍 打开Halcon 的主界面主要有图形窗口、算子窗口、变量窗口和程序窗口,可拖动调整位置,关闭后可在窗口下拉选项中找到。 2 显示操作 关闭-dev_close_window() 打开-dev_open_window (0, 0, 712, 512, black, WindowHandle) 显示-dev_display(…

【算法系列-数组】螺旋矩阵(模拟)

【算法系列-数组】螺旋矩阵(模拟) 文章目录 【算法系列-数组】螺旋矩阵(模拟)1. 螺旋矩阵II(LeetCode 59)1.1 思路分析🎯1.2 解题过程🎬1.3 代码示例🌰 2. 螺旋矩阵(LeetCode 54)2.1 思路分析🎯2.2 解题过程🎬2.3 代码…

2024/10/1 408大题专训之磁盘管理

2021: 2019: 2010:

网络通信——动态路由协议RIP

目录 一.动态路由协议分类 二.距离矢量路由协议 (理解) 三. 链路状态路由协议(理解) 四.RIP的工作原理 五.路由表的形成过程 六. RIP的度量值(条数)cost 七.RIP的版本(v1和v2&#xff0…

基于SpringBoot+Vue的校园篮球联赛管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

<使用生成式AI对四种冒泡排序实现形式分析解释的探讨整理>

<使用生成式AI对四种冒泡排序实现形式分析解释的探讨整理> 文章目录 <使用生成式AI对四种冒泡排序实现形式分析解释的探讨整理>1.冒泡排序实现形式总结1.1关于冒泡排序实现形式1的来源&#xff1a;1.2对四种排序实现形式使用AI进行无引导分析&#xff1a;1.3AI&…

字节终面问Transformer,就很离谱...

Transformer 是目前 NLP 甚至是整个深度学习领域不能不提到的框架&#xff0c;同时大部分 LLM 也是使用其进行训练生成模型&#xff0c;所以 Transformer 几乎是目前每一个机器人开发者或者人工智能开发者不能越过的一个框架。 接下来本文将从顶层往下去一步步掀开 Transforme…

只写CURD后台管理的Java后端要如何提升自己

你是否工作3~5年后&#xff0c;发现日常只做了CURD的简单代码。 你是否每次面试就会头疼&#xff0c;自己写的代码&#xff0c;除了日常CURD简历上毫无亮点可写 抱怨过苦恼过也后悔过&#xff0c;但是站在现在的时间点回想以前&#xff0c;发现有很多事情我们是可以做的更好的。…

宁夏众智科技OA办公系统存在SQL注入漏洞

漏洞描述 宁夏众智科技OA办公系统存在SQL注入漏洞 漏洞复现 POC POST /Account/Login?ACTIndex&CLRHome HTTP/1.1 Host: Content-Length: 45 Cache-Control: max-age0 Origin: http://39.105.48.206 Content-Type: application/x-www-form-urlencoded Upgrade-Insecur…

【C语言指南】数据类型详解(上)——内置类型

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《C语言指南》 期待您的关注 目录 引言 1. 整型&#xff08;Integer Types&#xff09; 2. 浮点型&#xff08;Floating-Point …

C++ 游戏开发

C游戏开发 C 是一种高效、灵活且功能强大的编程语言&#xff0c;因其性能和控制能力而在游戏开发中被广泛应用。许多著名的游戏引擎&#xff0c;如 Unreal Engine、CryEngine 和 Godot 等&#xff0c;都依赖于 C 进行核心开发。本文将详细介绍 C 在游戏开发中的应用&#xff0…

【机器学习】ID3、C4.5、CART 算法

目录 常见的决策树算法 1. ID3 2. C4.5 3. CART 决策树的优缺点 优点&#xff1a; 缺点&#xff1a; 决策树的优化 常见的决策树算法 1. ID3 ID3&#xff08;Iterative Dichotomiser 3&#xff09;算法使用信息增益作为特征选择的标准。它是一种贪心算法&#xff0c;信…

Ubuntu开机进入紧急模式处理

文章目录 Ubuntu开机进入紧急模式处理一、问题描述二、解决办法参考 Ubuntu开机进入紧急模式处理 一、问题描述 Ubuntu开机不能够正常启动&#xff0c;自动进入紧急模式&#xff08;You are in emergency mode&#xff09;。具体如下所示&#xff1a; 二、解决办法 按CtrlD进…

基于SpringBoot+Vue的智能宾馆预定系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

基于人工智能的实时健身训练分析系统:深蹲姿态识别与动作评估

关于深度实战社区 我们是一个深度学习领域的独立工作室。团队成员有&#xff1a;中科大硕士、纽约大学硕士、浙江大学硕士、华东理工博士等&#xff0c;曾在腾讯、百度、德勤等担任算法工程师/产品经理。全网20多万粉丝&#xff0c;拥有2篇国家级人工智能发明专利。 社区特色…

前端css样式设置元素的绝对定位和相对定位,要注意宽度和高度的设置

vue3子div position absolute,父div positon relative 。如果不设置子div的 width 和height,那么子div中如果数据变长,子div相对父div位置会变化。子div数据超过&#xff0c;显示... 如何实现 <template><div class"parent"><div class"child&q…

[含文档+PPT+源码等]精品大数据项目-基于Django实现的高校图书馆智能推送系统的设计与实现

大数据项目——基于Django实现的高校图书馆智能推送系统的设计与实现背景&#xff0c;可以从以下几个方面进行详细阐述&#xff1a; 一、信息技术的发展背景 随着信息技术的飞速发展和互联网的广泛普及&#xff0c;大数据已经成为现代社会的重要资源。在大数据背景下&#xf…

深入计算机语言之C++:C到C++的过度

&#x1f511;&#x1f511;博客主页&#xff1a;阿客不是客 &#x1f353;&#x1f353;系列专栏&#xff1a;从C语言到C语言的渐深学习 欢迎来到泊舟小课堂 &#x1f618;博客制作不易欢迎各位&#x1f44d;点赞⭐收藏➕关注 一、什么是C C&#xff08;c plus plus&#xff…