机器学习——掌握决策树ID3算法的原理,通过增益熵实现手工推导的过程。

文章目录

  • 决策树
    • 介绍
    • 优缺点
    • ID3算法原理
    • 举例
  • 决策树的构建
    • 1、特征选择
      • (1)香农熵
      • (2)信息增益
    • 2、决策树的生成
    • 3、决策树的修剪
  • 总结:
  • 参考文献

决策树

介绍

决策树(decision tree)是一种基本的分类与回归方法。ID3是其中一种经典的决策树算法。它通过计算特征的信息增益熵来选择最佳的特征来进行划分。

优缺点

  • 优点:计算复杂度不高,输出结果易于理解,对中间值的缺失值不敏感可以处理不相关特征数据。
  • 缺点:可能会产生过度匹配的问题。

ID3算法原理

通过增益熵推导ID3算法的手工过程:

  • 计算原始数据集的熵(Entropy)作为初始熵值。 熵的计算公式为:H(D)=-Σ(p(xi) * log2(p(xi))),其中p(xi)表示数据集中分类为xi的样本的概率。

  • 计算每个特征的信息增益熵(Gain)。 信息增益熵表示给定特征后,数据集的熵减少的程度,可以通过计算原始熵与特征划分后的加权熵之差来表示。

  • 选择信息增益熵最大的特征作为划分特征。 选择信息增益熵最大的特征就是选择使得数据集熵减少最多的特征。这是因为信息增益熵最大的特征能够提供最多的关于目标变量的信息。

  • 根据选择的特征进行数据集划分。 将数据集根据选定的特征的不同取值进行划分,得到新的子集。

对于每个子集,重复步骤1-4,直到划分结束。 递归地对每个子集应用上述过程,直到满足停止条件,例如所有样本都属于同一类别,或者没有更多的特征可供划分。

举例

如下图所示的流程图就是一个决策树,长方形代表判断模块(decision block),椭圆形成代表终止模块(terminating block),表示已经得出结论,可以终止运行。从判断模块引出的左右箭头称作为分支(branch),它可以达到另一个判断模块或者终止模块。我们还可以这样理解,分类决策树模型是一种描述对实例进行分类的树形结构。决策树由结点(node)和有向边(directed edge)组成。结点有两种类型:内部结点(internal node)和叶结点(leaf node)。内部结点表示一个特征或属性,叶结点表示一个类。如下图所示的决策树,长方形和椭圆形都是结点。长方形的结点属于内部结点,椭圆形的结点属于叶结点,从结点引出的左右箭头就是有向边。而最上面的结点就是决策树的根结点(root node)。这样,结点说法就与模块说法对应上了,理解就好。
在这里插入图片描述
这个流程图中,首先检测相亲对方是否有房。如果有房,则对于这个相亲对象可以考虑进一步接触。如果没有房,则观察相亲对象是否有上进心,如果没有,直接Say Goodbye,此时可以说:"你人很好,但是我们不合适。"如果有,则可以把这个相亲对象列入候选名单,好听点叫候选名单,有点瑕疵地讲,那就是备胎。

不过这只是个简单的相亲对象分类系统,只是做了简单的分类。真实情况可能要复杂得多,考虑因素也可以是五花八门。脾气好吗?会做饭吗?愿意做家务吗?家里几个孩子?父母是干什么的?等等。

我们可以把决策树看成一个if-then规则的集合,将决策树转换成if-then规则的过程是这样的:由决策树的根结点(root node)到叶结点(leaf node)的每一条路径构建一条规则;路径上内部结点的特征对应着规则的条件,而叶结点的类对应着规则的结论。决策树的路径或其对应的if-then规则集合具有一个重要的性质:互斥并且完备。这就是说,每一个实例都被一条路径或一条规则所覆盖,而且只被一条路径或一条规则所覆盖。这里所覆盖是指实例的特征与路径上的特征一致或实例满足规则的条件。

使用决策树做预测需要以下过程:

  • 收集数据:可以使用任何方法。比如想构建一个相亲系统,我们可以从媒婆那里,或者通过采访相亲对象获取数据。根据他们考虑的因素和最终的选择结果,就可以得到一些供我们利用的数据了。
  • 准备数据:收集完的数据,我们要进行整理,将这些所有收集的信息按照一定规则整理出来,并排版,方便我们进行后续处理。
  • 分析数据:可以使用任何方法,决策树构造完成之后,我们可以检查决策树图形是否符合预期。
  • 训练算法:这个过程也就是构造决策树,同样也可以说是决策树学习,就是构造一个决策树的数据结构。
  • 测试算法:使用经验树计算错误率。当错误率达到了可接收范围,这个决策树就可以投放使用了。
  • 使用算法:此步骤可以使用适用于任何监督学习算法,而使用决策树可以更好地理解数据的内在含义。

决策树的构建

决策树的构建可以概括为三个步骤:特征选择、决策树的生成和修剪。

1、特征选择

特征选择在于选取对训练数据具有分类能力的特征。这样可以提高决策树学习的效率,如果利用一个特征进行分类的结果与随机分类的结果没有很大差别,则称这个特征是没有分类能力的。经验上扔掉这样的特征对决策树学习的精度影响不大。通常特征选择的标准是信息增益(information gain)信息增益比,为了简单,本文使用信息增益作为选择特征的标准。

什么是信息增益呢?
在划分数据集之后信息发生的变化称为信息增益,知道如何计算信息增益,我们就可以计算每个特征值划分数据集获得的信息增益,获得信息增益最高的特征就是最好的选择。

(1)香农熵

熵定义为信息的期望值。在信息论与概率统计中,熵是表示随机变量不确定性的度量。如果待分类的事物可能划分在多个分类之中,则符号xi的信息定义为(其中p(xi)是选择该分类的概率。):
在这里插入图片描述通过上式,我们可以得到所有类别的信息。为了计算熵,我们需要计算所有类别所有可能值包含的信息期望值(数学期望),通过下面的公式得到:
在这里插入图片描述
期中n是分类的数目。熵越大,随机变量的不确定性就越大。根据此公式计算经验熵H(D),以下是一组实例,贷款申请样本数据表。分析贷款申请样本数据表中的数据。
在这里插入图片描述
根据表中的数据统计可知,在15个数据中,9个数据的结果为放贷,6个数据的结果为不放贷。所以数据集D的经验熵H(D)为:
在这里插入图片描述

**总结:**如何选择特征,需要看信息增益。也就是说,信息增益是相对于特征而言的,信息增益越大,特征对最终的分类结果影响也就越大,我们就应该选择对最终分类结果影响最大的那个特征作为我们的分类特征。

(2)信息增益

在了解信息增益之前需要了解条件熵的概念。
条件熵H(Y|X)表示在已知随机变量X的条件下随机变量Y的不确定性,随机变量X给定的条件下随机变量Y的条件熵(conditional entropy)H(Y|X),定义为X给定条件下Y的条件概率分布的熵对X的数学期望:
在这里插入图片描述
其中
在这里插入图片描述
同理,当条件熵中的概率由数据估计(特别是极大似然估计)得到时,所对应的条件熵称为条件经验熵。

明确了条件熵和经验条件熵的概念。接下来,让我们说说信息增益。前面也提到了,信息增益是相对于特征而言的。所以,特征A对训练数据集D的信息增益g(D,A),定义为集合D的经验熵H(D)与特征A给定条件下D的经验条件熵H(D|A)之差,即:
在这里插入图片描述
一般地,熵H(D)与条件熵H(D|A)之差称为互信息(mutual information)。

设特征A有n个不同的取值{a1,a2,···,an},根据特征A的取值将D划分为n个子集{D1,D2,···,Dn},|Di|为Di的样本个数。记子集Di中属于Ck的样本的集合为Dik,即Dik = Di ∩ Ck,|Dik|为Dik的样本个数。于是经验条件熵的公式可以些为:
在这里插入图片描述

举例: 以贷款申请样本数据表为例进行说明。看下年龄这一列的数据,也就是特征A1,一共有三个类别,分别是:青年、中年和老年。我们只看年龄是青年的数据,年龄是青年的数据一共有5个,所以年龄是青年的数据在训练数据集出现的概率是十五分之五,也就是三分之一。同理,年龄是中年和老年的数据在训练数据集出现的概率也都是三分之一。现在我们只看年龄是青年的数据的最终得到贷款的概率为五分之二,因为在五个数据中,只有两个数据显示拿到了最终的贷款,同理,年龄是中年和老年的数据最终得到贷款的概率分别为五分之三、五分之四。所以计算年龄的信息增益,过程如下:
计算器上怎么按出log以2为底的数

在这里插入图片描述
通过比较计算出的信息增益大小,由于特征A3(有自己的房子)的信息增益值最大,所以选择A3作为最优特征。

2、决策树的生成

通过以上结果将有无房子作为根节点,进行迭代,一层层判断最大的信息增益的条件并作为新的子节点,直至不能在进行迭代。
最终生成的决策树如下图(有点草,没来得及及画电子版,有时间改上)
在这里插入图片描述

3、决策树的修剪

由于采用的ID3算法,无剪枝策略,容易过拟合。

有修剪策略的决策树算法有:C4.5、CART(Classification and Regression Tree)。

总结:

本篇文章讲解了ID3算法中如何计算数据集的经验熵和如何选择最优特征作为分类特征。需要注意的是,决策树在划分过程中可能会过拟合训练数据,因此为了避免过拟合问题,可以对生成的决策树进行剪枝操作,如预剪枝或后剪枝,以提高决策树的泛化能力。

参考文献

机器学习实战教程(二):决策树基础篇之让我们从相亲说起
决策树之ID3算法

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

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

相关文章

Linux学习之分区和挂载磁盘配额

先分区然后格式化。 fdisk /dev/sdb开始分区。 输入p,然后按下Enter,可以查看当前设备的分区情况。 输入d,然后按下Enter,就可以删除上边的分区,要是有多个分区,会让你选择删除哪个分区。 输入n&…

mysql基础5——mysql主从

文章目录 一、基本了解二、主从原理三、主从复制3.1 从无到有3.1.1 服务器初始化3.1.2 配置主库3.1.3 配置从库3.1.4 效果验证 3.2 从有到无3.2.1 主库全备,并同步到从库3.2.2 配置主库3.2.3 配置从库3.2.4 效果验证 四、数据库运维4.1 几个参数4.2 查看进程列表 一…

MATLAB | 如何使用MATLAB获取顶刊《Nature》全部绘图(附带近3年全部图像)

我出了如何使用MATLAB获取期刊《Cell》全部绘图,立马就有粉丝问《Nature》、《Sience》、《PNAS》啥的会不会安排,这期就给大家安排《Nature》全部绘图获取,之后其他期刊也会慢慢安排,但是不会一次性全出完(毕竟不能抓住一个主题就…

【Java基础教程】(五)程序概念篇 · 下:夯实基础!全面解析Java程序的逻辑控制体:顺序、选择与循环结构~

Java基础教程之程序概念 下 本节学习目标1️⃣ 程序逻辑控制1.1 顺序结构1.2 分支结构1.2.1 if 选择结构1.2.2 switch 选择结构 1.3 循环结构1.3.1 while 循环1.3.2 for 循环1.3.3 循环控制 🌾 总结 本节学习目标 掌握Java中分支结构、循环结构、循环控制语法的使…

Squid 缓存代理--反向代理

Squid 缓存代理–反向代理 反向代理:如果Squid反向代理服务器中缓存了该请求的资源,则将该请求的资源直接返回给客户端:否则反向代理服务器将向后台的WEB服务器请求资源,然后将请求的应答返回给客户端,同时也将应答缓…

Django框架-11

聚合查询 1.聚合函数 使用aggregate()过滤器调用聚合函数。聚合函数包括:Avg 平均,Count 数量,Max 最大,Min 最 小,Sum 求和,被定义在django.db.models中。 例:查询图书的总阅读量。 from mo…

如何确定活动隔断整体色调

确定活动的整体色调可以通过以下几个步骤: 1. 确定主题或目标:首先要明确活动的主题或目标,这将有助于确定活动需要传达的情感或氛围。 2. 考虑活动类型:根据活动的类型,例如婚礼、生日派对、企业活动等,可…

vue3+pinia用户信息持久缓存(token)的问题

vue3pinia用户信息持久缓存(token)的问题 对博主来说,这是个相当复杂的问题。 当初在使用vue2vuex进行用户信息持久登录时,写了不下3篇博客,确实是解决了问题,博客链接如下 vue存储和使用后端传递过来的tokenvue中对…

gma 2 教程(二)数据操作:1. 相关模块组成

考虑到数据读写是地理空间数据分析和应用的基础,因此将本章作为正文第一部分,以便为后续章节应用提供基础支持。本章以gma栅格/矢量数据输入输出模块(io)栅格/矢量数据的读取、创建、变换等主要操作为基础,配合gma地理…

基于PyQt5的桌面图像调试仿真平台开发(13)图像边缘显示

系列文章目录 基于PyQt5的桌面图像调试仿真平台开发(1)环境搭建 基于PyQt5的桌面图像调试仿真平台开发(2)UI设计和控件绑定 基于PyQt5的桌面图像调试仿真平台开发(3)黑电平处理 基于PyQt5的桌面图像调试仿真平台开发(4)白平衡处理 基于PyQt5的桌面图像调试仿真平台开发(5)…

2023年第一届证券基金行业先进计算峰会在沪成功召开

2023年7月7日,在中国计算机学会集成电路设计专委会、中国通信学会金融科技发展促进中心、中国电子工业标准化技术协会新一代计算标准工作委员会和证券基金信息技术创新联盟WG1工作组的指导下,由中科驭数主办的2023年第一届证券基金行业先进计算峰会在上海…

用矩阵处理3D变换

Rotation 也可以把三个旋转矩阵合并为一个综合旋转矩阵: 平移和旋转结合 有时我们想要将平移和旋转结合起来,这样我们就可以在一次操作中同时进行两者,但是我们不能用3x3矩阵来做3D平移,只能用4x4矩阵来做,如下所定义&#xff1a…

iOS打包IPA教程

转载:xcode打包导出ipa 众所周知,在开发苹果应用时需要使用签名(证书)才能进行打包安装苹果 IPA,作为刚接触ios开发的同学,只是学习ios app开发内测,并没有上架appstore需求,对于苹…

UE4/5用贴图和GeneratedDynamicMeshActor曲面细分与贴图位移制作模型

目录 制作逻辑: ​编辑 曲面细分函数: 添加贴图逻辑: 代码: 制作逻辑: 在之前的文章中,我们使用了网格细分,而这一次我们将使用曲面细分函数,使用方法和之前是一样的&#xff1a…

2023年Web安全学习路线总结!430页Web安全学习笔记(附PDF)

关键词:网络安全入门、渗透测试学习、零基础学安全、网络安全学习路线、web安全攻防笔记、渗透测试路线图 网络安全的范畴很大,相较于二进制安全等方向的高门槛、高要求,Web安全体系比较成熟,在现阶段来看,但凡有自己…

浅析便捷生活的新选择——抖音本地服务

抖音是一款风靡全球的短视频分享平台,其本地服务功能的发展也逐渐引起了广泛关注。本地服务是指抖音平台上的用户可以通过平台直接查找并使用周边的各种服务,比如美食外卖、快递配送、家政服务等。本地服务的发展对用户和商家都带来了很多便利和机遇。 首…

Mockplus Cloud - June 2023crack

Mockplus Cloud - June 2023crack 添加便签以澄清情节提要上的任何设计概念。 新的流程图工具直接在情节提要上可视化任何设计流程和过程。 添加了在发布到Mockplus Cloud时删除RP页面的功能。 添加设计注释时包括图像和链接。 添加了一个新的提示,用于在断开互联网…

四、Docker镜像详情

学习参考:尚硅谷Docker实战教程、Docker官网、其他优秀博客(参考过的在文章最后列出) 目录 前言一、Docker镜像1.1 概念1.2 UnionFS(联合文件系统)1.3 Docker镜像加载原理1.4 重点理解 二、docker commit 命令2.1 是什么?2.2 命令…

element之el-table合并列功能

目标效果如下&#xff1a; 实现代码如下&#xff1a; html部分&#xff1a; <!--定义表格组件,用组件自带的span-method属性定义合并列的方法--> <el-table :data"tableData" :span-method"spanRow"><el-table-column prop"RegionNa…

独立站如何实现全球开店,获得更多流量?

对于独立站卖家来说&#xff0c;针对一个国家搭建一个站点、运营&#xff0c;就已经要花上不少力气了。更别说想要在多个市场售卖了&#xff0c;每个国家不同的货币、语言、定价、付款方式等等就已经够让人头大。 研究显示&#xff0c;40%的人不会从其他语言的网站上购买产品。…
最新文章