如何使用决策树判断要不要去相亲?

news/2024/4/30 11:15:07/文章来源:https://blog.csdn.net/b379685397/article/details/127124263

大家好,我是王老狮,上一篇我们简单介绍了下什么是决策树,这章我们来看如何根据实际问题构建决策树,然后来进行决策。

1.影响决策的重要因素,纯度和信息熵

我们先看一组数据集:

在这里插入图片描述

我们该如何构造一个判断是否去相亲的决策树呢?

根据创建决策树的步骤,首先我们要确定决策树的根节点。但是在众多影响因子中,每种影响因素肯定有所区别,那么我们应该选取那个属性当做根节点呢?

那么我们先了解下两个重要概念:纯度和信息熵

1.1.纯度

纯度就是我们一组数据差异性的大小,换种方式来解释就是让目标变量的分歧变小。纯度越高,差异性越小。

集合 1:6 次都去相亲;

集合 2:4 次去相亲,2 次不去相亲;

集合 3:3 次去相亲,3 次不去相亲;

按照纯度指标来说,集合 1> 集合 2> 集合 3。因为集合 1 的分歧最小,集合 3 的分歧最大。

1.2.信息熵

信息熵(information entropy)是信息论的基本概念。描述信息源各可能事件发生的不确定性。20世纪40年代,香农(C.E.Shannon)借鉴了热力学的概念,把信息中排除了冗余后的平均信息量称为“信息熵”.可以理解为信息的不确定度。

随机离散事件出现的概率存在着不确定性。为了衡量这种信息的不确定性,信息学之父香农引入了信息熵的概念,并给出了计算信息熵的数学公式:
在这里插入图片描述

p(i|t) 代表了节点 t 为分类 i 的概率,其中 log2 为取以 2 为底的对数。这里的公式含义表示:当不确定性越大时,它所包含的信息量也就越大,信息熵也就越高

根据公式,我们计算下面集合的信息熵

集合1:6 次都见面 信息熵就是 -6/6log26/6 = 0;

集合2:4 次去见面,2 次不去见面 -(4/6log2 4/6+2/6log2 2/6)=0.918

集合 3:3 次去见面,3 次不去见面 -(3/6log2 3/6+3/6log2 3/6)=1

从上面的计算结果中可以看出,信息熵越大,纯度越低。当集合中的所有样本均匀混合时,信息熵最大,纯度最低。

我们在构造决策树的时候,会基于纯度来构建。常用的算法分别是信息增益(ID3 算法)、信息增益率(C4.5算法)以及基尼指数(Car算法)

2.ID3算法

2.1.ID3算法介绍

ID3算法最早是由罗斯昆(J. Ross Quinlan)于1975年在悉尼大学提出的一种分类预测算法,算法的核心是“信息熵”。ID3算法通过计算每个属性的信息增益,认为信息增益高的是好属性,每次划分选取信息增益最高的属性为划分标准,重复这个过程,直至生成一个能完美分类训练样例的决策树。

ID3 算法计算的是信息增益,本身是一种贪心算法,信息增益指的就是划分可以带来纯度的提高,信息熵的下降。它的计算公式,是父亲节点的信息熵减去所有子节点的信息熵。在计算的过程中,我们会计算每个子节点的归一化信息熵,即按照每个子节点在父节点中出现的概率,来计算这些子节点的信息熵。所以信息增益的公式可以表示为

在这里插入图片描述

公式中 D 是父亲节点,Di 是子节点,Gain(D,a) 中的 a 作为 D 节点的属性选择。

2.2.使用ID3算法进行决策树的构造

我们根据信息增益的公式来算一个各个属性的信息增益是多少,来选择更合适的属性当做根节点

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YQTTtz1v-1664437436345)(D:\团队管理\笔记\博客文章\机器学习\image-20220929152423116.png)]

7条数据,根据结果4条不见面,3条见面,所以根节点的信息熵是:

Entropy(D)=-(4/7log2 4/7+3/7log2 3/7)=0.985

如果将经济条件当做属性划分,则有三个子节点,分别为有钱、一般、没钱,我们用D1,D2,D3标识,他们对应的见面结果我们用+,-表示。那么经济条件作为属性节点的计算方式如下:

经济条件信息增益

D1(经济条件=有钱)={1-,2-,6+}=Ent(D1)=-(2/3log2 2/3+1/3log2 1/3)=0.918

D2(经济条件=一般)={3+,7-}=Ent(D2)=-(1/2log2 1/2+1/2log2 1/2)=1

D3(经济条件=没钱)={4+,5-}=Ent(D2)=-(1/2log2 1/2+1/2log2 1/2)=1

信息熵归一化 3/70.918+2/71+2/7*1=0.965

以经济条件作为属性节点的信息增益为Gain(D,经济)=0.985-0.965=0.020.

同理,其他属性作为根节点的信息增益计算方式如下:

身高信息增益

D1(身高=高)={5-}=Ent(D1)=-(1log2 1+1log2 1)=0

D2(身高=一般)={6+,7–}=Ent(D2)=-(1/2log2 1/2+1/2log2 1/2)=1

D3(身高=低)={1-,2-,3+,4+}=Ent(D2)=-(1/2log2 1/2+1/2log2 1/2)=1

归一化信息熵为 1/70+2/71+4/7*1=0.857

信息增益为Gain(D,经济条件)=0.985-0.857=0.128

长相信息增益

D1(长相=帅)={3+,4±,5-,6-}=Ent(D1)=-(2/4log2 2/4+2/4log2 2/4)=1

D2(长相=不帅)={1-,2-,6+}=Ent(D2)=-(2/3log2 2/3+1/3log2 1/3)=0.918

归一化信息熵为 4/71+3/70.918=0.965

信息增益为Gain(D,长相)=0.985-0.965=0.02

得到每个属性当做属性节点的归一化信息熵和信息增益数据如下:

属性归一化信息熵信息增益
经济0.9650.02
身高0.8570.128
长相0.9650.02
附加0.9650.02

所以以身高作为根节点则信息增益最大,ID3算法就是以信息增益最大的节点当做父节点,获取纯度高的决策树。因此以身高当做根节点,那么决策树形状如下

在这里插入图片描述

继续往下划分,以低属性节点继续往下分,计算不同属性的信息增益

长相

D1(长相=帅)={3+,4+}=Ent(D1)=-(1log2 1 +10log2 0)=0

D2(长相=不帅)={1-,2-}=Ent(D2)=-(1log2 1 +10log2 0)=0

归一化信息熵为 0

信息增益为Gain(D,长相)=1-0=1

经济条件

D1(经济条件=有钱)={1-,2-}=Ent(D1)=-(1log2 1 +1log2 1)=0

D2(经济条件=一般)={3+}=Ent(D2)=-(1log2 1 +1log2 1)=0

D3(经济条件=没钱)={4+}=Ent(D2)=0

归一化信息熵为 0

信息增益为Gain(D,经济条件)=1-0=1

附加

D1(其他优点=有)={1-,3+,4+}=Ent(D1)=-(1/3log2 1/3 +2/3log2 2/3)=0.918

D2(其他优点=无)={2-}=Ent(D2)=-(1log2 1 +1log2 1)=0

归一化信息熵为 3/40.918+1/40 = 0.6885

信息增益为Gain(D,经济条件)=1-0.689=0.3115

属性归一化信息熵信息增益
长相01
经济01
附加0.68850.3115

可以看到长相和经济条件可以得到最大的信息增益,可以选择长相或者经济作为下一个节点的的属性节点

在这里插入图片描述

这样我们一颗决策树就构建好了,根据对方提供的条件通过决策树来决定到底该不该见面。

ID3 的算法规则相对简单,可解释性强。同样也存在缺陷,比如我们会发现 ID3 算法倾向于选择取值比较多的属性。

ID3 有一个缺陷就是,有些属性可能对分类任务没有太大作用,但是他们仍然可能会被选为最优属性。这种缺陷不是每次都会发生,只是存在一定的概率。在大部分情况下,ID3 都能生成不错的决策树分类。针对可能发生的缺陷,后人提出了新的算法进行改进,那就是C4.5。

3.C4.5算法

3.1.C4.5算法的思路

1.采用信息增益率

因为 ID3 在计算的时候,倾向于选择取值多的属性。为了避免这个问题,C4.5 采用信息增益率的方式来选择属性。信息增益率 = 信息增益 / 属性熵。

2.采用悲观剪枝

ID3 构造决策树的时候,容易产生过拟合的情况。在 C4.5 中,会在决策树构造之后采用悲观剪枝(PEP),这样可以提升决策树的泛化能力。

悲观剪枝是后剪枝技术中的一种,通过递归估算每个内部节点的分类错误率,比较剪枝前后这个节点的分类错误率来决定是否对其进行剪枝。这种剪枝方法不再需要一个单独的测试数据集。

3.离散化处理连续属性

C4.5 可以处理连续属性的情况,对连续的属性进行离散化的处理。比如相亲存在的“身高”属性,不按照“高、低”划分,而是按照身高高度进行计算,那么身高取什么值都有可能。

C4.5 选择具有最高信息增益的划分所对应的阈值。

4.处理缺失值

3.2.C4.5算法如何处理缺失值

我们看下面这组数据,数据集存在丢失的情况下,如何进行属性选择?如果已经做了属性划分,但是样本在这个属性上有缺失又该怎么对样本进行划分?

在这里插入图片描述

如果不考虑确实的信息,身高的信息可以表示={2-,3+,4+,5-,6+,7-},计算属性的信息熵

身高=低=D1={2-,3+,4+} 信息熵=-(1/3 log2 1/3+2/3 log2/3)=0.918

身高=一般=D2={6+,7-} 信息熵=-(1/2 log2 1/2+1/2 log1/2)=1

身高=高=D3={5-} 信息熵=-(1 log2 1)=0

计算信息增益Gain(D,身高)=Ent(D)-0.792=1-0.792=0.208

属性熵 =-3/6log3/6 - 1/6log1/6 - 2/6log2/6=1.459

信息增益率 Gain_ratio(D′, 温度)=0.208/1.459=0.1426

D′的样本个数为 6,而 D 的样本个数为 7,所以所占权重比例为 6/7,所以 Gain(D′,温度) 所占权重比例为 6/7,所以:Gain_ratio(D, 温度)=6/7*0.1426=0.122。

这样即使在温度属性的数值有缺失的情况下,我们依然可以计算信息增益,并对属性进行选择。

3.2.C4.5算法和ID3算法的对比

ID3算法

优点:

  • 算法简单,通俗易懂

缺陷:

  • 无法处理缺失值
  • 只能处理离散值,无法处理连续值
  • 用信息增益作为划分规则,存在偏向于选择取值较多的特征。因为特征取值越多,说明划分的不确定性越低,信息增益则越高
  • 容易出现过拟合

C4.5算法

优点:

  • 能够处理缺省值
  • 能对连续值做离散处理
  • 使用信息增益比,能够避免偏向于选择取值较多的特征。因为信息增益比=信息增益/属性熵,属性熵是根据属性的取值来计算的,一相除就会抵消掉
  • 在构造树的过程中,会剪枝,减少过拟合
    缺点:构造决策树,需要对数据进行多次扫描和排序,效率低

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

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

相关文章

【XSY4765】axelavir(DP)

称序列 ⟨a1,⋯,an⟩\langle a_1,\cdots,a_n\rangle⟨a1​,⋯,an​⟩ 是避免 120 的&#xff0c;当且仅当不存在 1≤k<j<i≤n1\leq k<j<i\leq n1≤k<j<i≤n&#xff0c;满足 ai<ak<aja_i<a_k<a_jai​<ak​<aj​。 假设 a1,⋯,ai−1a_1,\c…

微信小程序 java-php大学校园学生社团系统python

功能介绍 将系统权限按管理员和学生这两类涉及学生划分。 (a) 管理员&#xff1b;管理员使用本系统涉到的功能主要有&#xff1a;个人中心、学生管理、社长管理、社团简介管理、社团招新管理、系统管理等功能 (b)学生进入系统前台可以实现首页、我的、社团简介、社团论坛等功能…

web实训大作业 网页设计期末课程设计(HTML+CSS)

&#x1f329;️ 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f482; 作者主页: 【进入主页—&#x1f680;获取更多源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;HTML5网页期末作业 (1000套…

APS排程软件帮机械加工企业解决交期承诺问题

相信很多做过生产计划的小伙伴都遇到过“交期承诺”的问题&#xff0c;实际生产中影响产品交期的因素有很多&#xff0c;进行“交期承诺”的计算不仅需要耗费大量时间&#xff0c;而且还只是估值&#xff0c;时间不准确&#xff0c;同时交期承诺影响订单交付&#xff0c;还影响…

大型企业——伙伴云,为什么会选择Baklib帮助中心?

当前产品的帮助中心不再只是为用户解决问题而存在&#xff0c;而更像是一个产品团队与用户进行交流的地方&#xff0c;你可以在这里介绍你的公司和产品&#xff0c;宣传你的理念&#xff0c;引导用户体验主打的功能&#xff0c;解答用户的问题&#xff0c;了解用户当前使用中遇…

P21升级后,用旧的spec模板生成的defime.xml中WhereClauses(VLM)里的逗号不能正常显示

背景&#xff1a;有个项目在P21升级之前&#xff08;v3.1.2&#xff09;做过一版defime.xml。后期因为某种原因导致数据集变更&#xff0c;同时define也需要重新生成。所以只能使用升级后的P21&#xff08;v4.0.1&#xff09;软件生成defime.xml。两次生成defime.xml使用的都是…

win10 安装Elasticsearch 安装 Kibana

1 下载 Elasticsearch &#xff08;ES需要有JDK环境&#xff0c;自行安装&#xff09; 官网 Download Elasticsearch | Elastic 这里下载的 8.4.2 Es 版本必须与 Kibana 版本对应 2 解压 打开 config 目录 3 找到 elasticsearch.yml 配置文件 4 修改 elasticsea…

JAVA中如何实现代码优化

1.用String.format拼接字符串 例&#xff1a;比如现在有个需求&#xff1a;要用get请求调用第三方接口&#xff0c;url后需要拼接多个参数。 1&#xff09; 以前我们的请求地址是这样拼接的&#xff1a;字符串使用号拼接&#xff0c;非常容易出错。 String url "http://…

Linux安全之SELinux理解

安全增强式 Linux&#xff0c;即SELinux(Security-Enhanced Linux)是一个 Linux 内核的安全模块&#xff0c;其提供了访问控制安全策略机制&#xff0c;包括了强制访问控制(Mandatory Access Control&#xff0c;MAC)。SELinux 是一组内核修改和用户空间工具&#xff0c;已经被…

0052-Tui-设置方块样式

环境Time 2022-08-09 Rust 1.62.0 Tui 0.18.0前言 说明 参考:https://github.com/fdehau/tui-rs/blob/master/examples/block.rs 目标 使用 tui-rs 对方块设置各种不同的样式。 设置背景色 let block = widgets::Block::default().title("设置背景色").style(style:…

跨境电商如何利用WhatsApp API交互式按钮提高客户转化率

WhatsApp API有很多实用的功能&#xff0c;跨境电商卖家因此可以为客户提供出色的客户服务体验与服务。 跨境电商卖家在通过WhatsApp API为客户提供服务或进行营销时&#xff0c;交互性功能可以明显提高客户转化率。因为当用户想要选择服务或产品时&#xff0c;可以直接使用交…

Java / Tensorflow - API 调用 pb 模型使用 GPU 推理

目录 一.引言 二.Java / Tensorflow 代码配置 1.代码配置 2.Maven 配置 三.环境检测 1.显卡检测 2.显卡监控 四.推理踩坑 1.异常现象 2.异常日志 五.安装 cuda-10.0 1.下载 cuda 安装包 2.安装 cuda 2.1 preface 前言 2.2 安装配置 2.3 安装完成 2.4 可能遇到的…

day013--mysql中的子查询

目录 一&#xff0c;前言 二&#xff0c;子查询的定义及书写格式 1&#xff0c;定义 2&#xff0c;书写格式 三&#xff0c;子查询的分类 1&#xff0c;单行子查询和多行子查询 2&#xff0c;相关子查询和非相关子查询 一&#xff0c;前言 相信大家还记得之前我们在学习分…

保研专业课参考

文章目录数据结构1.什么是平衡树&#xff1f;平衡树是怎么创建的&#xff1f;2.二叉排序树的性质&#xff1a;3.如何编程判断一棵二叉树是完全二叉树4.二叉树怎么求高度&#xff08;山大计算机&#xff09;5.在图中找到一个连通图&#xff0c;有n个顶点&#xff0c;n-1条边使得…

SQL Server大分区表没有空分区的情况下如何扩展分区的方法

官方文档https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-partition-function-transact-sql?viewsql-server-ver16 Best Practices Always keep empty partitions at both ends of the partition range. Keep the partitions at both ends to guarantee that th…

【学生网页作业】航海王动漫网页 html+ css + JavaScript 简单的学生网页作业源码

&#x1f329;️ 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f482; 作者主页: 【进入主页—&#x1f680;获取更多源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;HTML5网页期末作业 (1000套…

手机用Postern配置socks5全局代理详细教程

以静态Socks5独享IP的单地区资源为例&#xff0c;即IP资源全部归属单一城市&#xff0c;不会变动&#xff0c;如南京区域&#xff0c;则IP全部为南京城市出口。 关于Socks5的使用有多种方案&#xff0c;可应用于PC&#xff0c;安卓&#xff0c;模拟器&#xff0c;请根据情况灵…

EasyRecovery15万能数据恢复软件全面详细功能讲解

EasyRecovery 15是由全球著名数据厂商Ontrack 出品的一款非常优秀的数据恢复软件&#xff0c;在诸多数据恢复软件中这款软件可以说是排的上名的&#xff0c;具有快捷、高效、便捷等特点&#xff0c;可以帮助用户轻松恢复电脑丢失的数据。 因此今天coco玛吉多就给大家带来了eas…

环境主题静态HTML网页作业作品 大学生环保网页设计制作成品 简单DIV CSS布局网站

&#x1f329;️ 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f482; 作者主页: 【进入主页—&#x1f680;获取更多源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;HTML5网页期末作业 (1000套…

2022短视频神器历时6个月辛苦全力打造的软件短视频运用工具

短视频批量监控混剪消重上传运营神器 ​ 要问当下什么最火&#xff1f;当然是从事自媒体了&#xff0c;自媒体是普通大众经由数字科技强化、与全球知识体系相连之后&#xff0c;一种开始理解普通大众如何提供与分享他们自身的事实、新闻的途径。简而言之&#xff0c;即公民用以…