Hunt' s Algorithm| 学习笔记

简介: 快速学习 Hunt' s Algorithm。

开发者学堂课程【高校精品课-北京理工大学-数据仓库与数据挖掘(上):Hunt' s Algorithm】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/921/detail/15642


Hunt' s Algorithm

 

hunt 算法

image.png

在决策树模型构建中,我们需要使用到有标记的数据对决策树模型进行训练,得到训练好的决策树模型,但是我们根据训练集是可以得到很多棵决策树模型的。决策树模型的数量非常巨大,我们不可能列出所有的决策树模型并选择最优的决策数。

一般我们采用的策略是采用贪心策略,在构建决策树模型的时候,使用局部最优策略去选择一个比较合适的属性测试条件,从而完成我们决策树的构建,Hunt 算法就是这一类策略的集中代表。后续决策树算法的 C4.5算法、ID3 算法和 cart 算法都是基于 hunt 算法改造而来的。

所以我们首先向大家介绍 Hunt 算法,用的算法构建决策树的过程是一个自顶向下递归、分而自知的过程。我们用 DT 代表录入到一个节点T上的数据。那如果 DT 中所有数据对象的类都是一致的,当前的T就是一个叶子节点。我们可以构建一个叶子节点器,然后把它标上所有数据对象的类标签。那如果 DT 所包含的数据对象有多个类别,我们的节点T就是一个中间节点,这时我们需要确定一个合理的属性测试条件。根据属性测试条件,我们把落入到节点器上的数据集合 DT 划分成为若干个更小的子集。我们迭代循环以上步骤,一直到满足我们的终结条件。

终结条件主要有三种情况,第一种情况就是落入到这个节点上的所有数据对象,它的类标签是一致的。第二种条件就是没有属性供我们选择去构造我们的属性测试条件。第三种情况就是我们训练集中的所有数据对象都已经被使用完。

我们通过一个例子向大家来介绍 hunt 算法构建决策树模型的过程。首先从根节点开始,我们所有的数据对象落入到根节点上,在根节点上我们确定一个合适的属性测试条件。比如这里我们选择了 home owner 作为我们的测试条件,将我们的数据集一分为二,其中在我们的划分中,我们的这样的一个分支,也就是我们的  home owner 取值为 yes 的时候,那么他的所有数据对象的集合都是一致的,那这时候我就可以为它构建一个叶子节点。

对于 home owner 取值为 no 的这一部分集合,它所包含数据对象的取值有多种情况,因此这个节点就是一个中间节点,在这个节点上,我们选择合适的属性测试条件,这个时候我们选择的是婚姻状态,根据婚姻状态,我们又将我们的数据对象集合划分成两个小的集合,那么其中一部分是他的婚姻状态为 single 和  divorce 的,那么另一部分是maried,在这两个集合中,我们会发现对于我们的婚姻状态是 maried 的情况下,那么它所包含的数据对象的类标签是一致的,我们就构造一个叶子节点被标上它的类标签,对于我们的婚姻状态是 divorce 和 single 的时候,我们发现这个集合中数据对象的类标签有多种情况,那我们就选择合适的属性测试条件将这样一个集合继续划分,一直到我们最后所有的集合中的数据对象的类标签都是一致的,那我们就完成了决策树的构建。

image.png

对于我们决策树构建过程中,其中一个重要的环节就是用来测试属性条件。对于不同属性,测试条件的表达形式是不一样的。

如果我们的属性是标称属性。由于标称属性,它的取值是离散的。那我们就可以根据标称属性的取值。将我们的集合划分为若干个小的子集。实现多路划分。当然我们也可以实现两路划分,我们以这样的一个 Mary state 这样的一个属性为例。它的取值有三种情况。

image.png

我们可以根据它的取值实现自然的三路划分,那如果想实现两路划分的时候,我们可以把它的取值进行划分,比如说我们可以把它的取值划分成为 Mary 的,Single divorce 的,Single divorce married,还有 single married 和 divorce 的。那么这种就是对标称属性的属性测试条件的表达。

我们再来看一下连续属性。对于连续属性,如果我们想实现多路划分,那我们就可以设置多个取值范围取值。取值范围的表达形式就是这样的。那么通过设置多个取值范围,我们可以得到多个子集。

对于联系属性,我们同样也可以实现二路划分,对于要实现二路划分,我们可以选择一个最佳的分裂值V,然后将这个属性分成 a 小于 V 和 a 大于等于V2个部分。

image.png

在我们刚才介绍的 hunt 算法中,我们对于落入到一个节点上的数据集合,他的属性测试条件是有多种选择的。那我们怎么样才能得到一个合理的属性测试条件,从而实现最佳的划分?

我们这里举一个例子,比如说我们这里有一个数据集,它是由20个数据对象主。那我们怎么样去选择合理的属性测试条件,对这个数据集进行划分?

在一般的决策树算法中,我们是通过贪心策略用来评估这个属性测试条件分裂之后各个节点的纯度。如果节点的纯度越高,那么我们认为这样的一个属性测试条件是比较理想的,得到的划分是比较好的。那什么是节点的纯度?

image.png

节点的纯度就指的是这个节点中数据对象它的类的倾斜性。如果一个节点中所有的数据对象都是一个类别,那么它的纯度就最高。我们下面向大家通过举例介绍这样的一个数据节点的纯度,比如说我们这里有两个节点。

这两个节点中,它的数据对象的个数都是十个。其中第一个节点,它的 C0 类别的数据对象有五个,C1 类别的数据对象有五个,那么对于这样的一种节点,它的纯度是非常低的,因为 C0 和 C1 出现的概率是一样的。但是对于第二个节点,我们可以看一下,同样是十个数据对象,其中有九个数据对象是属于  C0 类别,只有一个数据对象属于 C1 类别,也就是在这个节点中,大部分的数据对象都是属于 C0 类别的,那么我们认为这个节点它的纯度就比较高。

那么在决策树模型中,我们主要是通过设定评估节点纯度的方法来判断我们的属性测试题是否合理。

相关文章
|
算法 数据挖掘 Python
【数据挖掘】层次聚类DIANA、AGNES算法讲解及实战应用(图文解释 超详细)
【数据挖掘】层次聚类DIANA、AGNES算法讲解及实战应用(图文解释 超详细)
1417 0
|
机器学习/深度学习 自然语言处理 算法
文本摘要(text summarization)任务:研究范式,重要模型,评估指标(持续更新ing...)
本文是作者在学习文本摘要任务的过程中,根据学习资料总结逐步得到并整理为成文的相关内容。相关学习资料(包括论文、博文、视频等)都会以脚注等形式标明。有一些在一篇内会导致篇幅过长的内容会延伸到其他博文中撰写,但会在本文中提供超链接。 本文将主要列举里程碑式的重要文本摘要论文。 注意:除文首的表格外,本文所参考的论文,如本人已撰写对应的学习博文,则不直接引用原论文,而引用我撰写的博文。 本文会长期更新。
文本摘要(text summarization)任务:研究范式,重要模型,评估指标(持续更新ing...)
|
SQL Java 关系型数据库
【Spring Boot+Thymeleaf+MyBatis+mysql】实现电子商务平台实战(附源码)持续更新~~ 包括sql语句、java、html代码
【Spring Boot+Thymeleaf+MyBatis+mysql】实现电子商务平台实战(附源码)持续更新~~ 包括sql语句、java、html代码
473 2
|
机器学习/深度学习 人工智能 算法
基于YOLOv8的工业安全帽实时检测系统【训练和系统源码+Pyside6+数据集+包运行】
基于YOLOv8的工业安全帽实时检测系统,通过7581张图片训练,实现工作场所安全帽佩戴检测,降低工伤事故。系统支持图片、视频和摄像头实时检测,具备GUI界面,易于操作。使用Python和Pyside6开发,提供模型训练、评估和推理功能。
1963 1
基于YOLOv8的工业安全帽实时检测系统【训练和系统源码+Pyside6+数据集+包运行】
|
数据可视化 数据库 开发者
使用Dash构建交互式Web应用程序
【10月更文挑战第16天】本文介绍了使用Python的Dash框架构建交互式Web应用程序的方法。Dash结合了Flask、React和Plotly等技术,让开发者能够快速创建功能丰富的数据可视化应用。文章从安装Dash开始,逐步介绍了创建简单应用程序、添加交互元素、部署应用程序以及集成更多功能的步骤,并提供了代码示例。通过本文,读者可以掌握使用Dash构建交互式Web应用程序的基本技巧和高级功能。
|
区块链 Python
最详细Python打包exe教程,并修改图标,只需30秒
最详细Python打包exe教程,并修改图标,只需30秒
933 4
最详细Python打包exe教程,并修改图标,只需30秒
|
存储 BI 数据库
|
算法
浅谈剪枝算法
浅谈剪枝算法
365 0
|
机器学习/深度学习 算法 数据建模
决策树(Decision Tree)算法详解及python实现
决策树(Decision Tree)算法详解及python实现
2885 0
决策树(Decision Tree)算法详解及python实现
|
前端开发 搜索推荐 Java
基于SSM实现个性化健康饮食推荐系统
本项目基于SSM框架开发实现了一针对个人体质情况进行日常食谱推荐的信息化管理系统。系统分为前端信息展示页面和后台信息管理操作,用户登陆前端系统,可以查看相关饮食信息,热点资讯等,并可以对个人的体质信息进行相应的管理操作,也可以根据系统推荐的饮食方案来进行查看,并可以在线查看美食介绍的相关视频。后台管理操作主要包含用户管理、饮食方案管理,用户饮食方案定制,资讯信息管理,反馈管理,轮插图管理等相关功能。系统整个体功能完整,结构清晰,适合做毕业设计和课程设计使用。...
1622 0
基于SSM实现个性化健康饮食推荐系统