当前位置: 首页 > news >正文

决策树最优属性选择



本文以西瓜数据集为例演示决策树使用信息增益选择最优划分属性的过程

在这里插入图片描述

西瓜数据集下载:传送门

首先计算根节点的信息熵:

  • 数据集分为好瓜、坏瓜,所以|y|=2
  • 根结点包含17个训练样例,其中好瓜共计8个样例,所占比例为8/17
  • 坏瓜共计9个样例,所占比例为9/17

将数据带入信息熵公式,即可得到根结点的信息熵:

E n t ( D ) = − ( 8 17 log ⁡ 2 8 17 + 9 17 log ⁡ 2 9 17 ) = 0.998 Ent(D)=-\left( \frac{8}{17}\log_2\frac{8}{17}+\frac{9}{17}\log_2\frac{9}{17} \right) =0.998 Ent(D)=(178log2178+179log2179)=0.998

以属性色泽为例,其对应3个数据子集:

  • D1(色泽=青绿),包含{1,4,6,10,13,17}共6个样例,其中好瓜样例为{1,4,6},比例为3/6,坏瓜样例为{10,13,17},比例为3/6。将数据带入信息熵计算公式即可得到该结点的信息熵:1.000
  • D2(色泽=乌黑),包含{2,3,7,8,9,15}共6个样例,其中好瓜样例为{2,3,7,8},比例为4/6,坏瓜样例为{9,15},比例为2/6。将数据带入信息熵计算公式即可得到该结点的信息熵:0.918
  • D1(色泽=浅白),包含{5,11,12,14,16}共5个样例,其中好瓜样例为{5},比例为1/5,坏瓜样例为{11,12,14,16},比例为4/5。将数据带入信息熵计算公式即可得到该结点的信息熵:0.722

则计算色泽属性的信息增益为:

G a i n ( D , 色泽 ) = E n t ( D ) − ∑ v = 1 3 ∣ D v ∣ ∣ D ∣ E n t ( D ) = 0.998 − ( 6 17 ∗ 1.000 + 6 17 ∗ 0.918 + 5 17 ∗ 0.722 ) = 0.109 Gain(D,色泽)=Ent(D)-\sum_{v=1}^{3}\frac{|D^v|}{|D|}Ent(D) \\ =0.998-\left( \frac{6}{17} * 1.000+\frac{6}{17}*0.918+\frac{5}{17}*0.722 \right) =0.109 Gain(D,色泽)=Ent(D)v=13DDvEnt(D)=0.998(1761.000+1760.918+1750.722)=0.109

同样的方法,计算其他属性的信息增益为:
G a i n ( D , 根蒂 ) = 0.143 G a i n ( D , 敲声 ) = 0.141 G a i n ( D , 纹理 ) = 0.381 G a i n ( D , 脐部 ) = 0.289 G a i n ( D , 触感 ) = 0.006 Gain(D,根蒂)=0.143 \\ Gain(D,敲声)=0.141 \\ Gain(D,纹理)=0.381 \\ Gain(D,脐部)=0.289 \\ Gain(D,触感)=0.006 \\ Gain(D,根蒂)=0.143Gain(D,敲声)=0.141Gain(D,纹理)=0.381Gain(D,脐部)=0.289Gain(D,触感)=0.006

对比不同属性,我们发现纹理属性的信息增益最大,因此,纹理属性被选为划分属性:清晰{1,2,3,4,5,6,8,10,15}、稍糊{7,9,13,14,17}、模糊{11,12,16}

下一步,我们再看纹理=清晰的节点分支,该节点包含的样例集合D1中有编号为{1,2,3,4,5,6,8,10,15}共计9个样例,此时可用属性集合为{色泽,根蒂,敲声,脐部,触感},纹理不会再作为划分属性,我们以同样的方式再计算各属性的信息增益为:

G a i n ( D , 色泽 ) = 0.043 G a i n ( D , 根蒂 ) = 0.458 G a i n ( D , 敲声 ) = 0.331 G a i n ( D , 脐部 ) = 0.458 G a i n ( D , 触感 ) = 0.458 Gain(D,色泽)=0.043 \\ Gain(D,根蒂)=0.458 \\ Gain(D,敲声)=0.331 \\ Gain(D,脐部)=0.458 \\ Gain(D,触感)=0.458 \\ Gain(D,色泽)=0.043Gain(D,根蒂)=0.458Gain(D,敲声)=0.331Gain(D,脐部)=0.458Gain(D,触感)=0.458

从上图可以看出根蒂、脐部、触感3个属性均取得了最大的信息增益,此时可任选其一作为划分属性。同理,对每个分支结点进行类似操作,即可得到最终的决策树


相关文章:

  • 2024最新 Jenkins + Docker 实战教程(四) - 编写自己的Springboot项目实现自动化部署
  • Apache JMeter操作
  • linux使用dockerCompose脚本化部署镜像
  • 简单采用windows批处理命令批量合并命名安卓B站缓存视频
  • jenkins自动化部署详解
  • Tina-Linux -- 4. LVGL 8.3移植
  • 【全国青少年信息素养大赛算法创意初中组押题卷】
  • 防火墙最新技术汇总
  • 【学习笔记】后端(Ⅰ)—— NodeJS(Ⅱ)
  • Centos7.9上安装Oracle 11gR2 RAC 三节点(ASMlib管理asm磁盘)
  • Vue学习穿梭框Transfer组件
  • 贪心算法:划分字母区间
  • 包装类..
  • 如何彻底搞懂迭代器(Iterator)设计模式?
  • 反序列化漏洞(JBoss、apache log4、apache Shiro、JWT)Weblogic未授权访问、代码执行、任意上传
  • 【Amaple教程】5. 插件
  • django开发-定时任务的使用
  • Java 多线程编程之:notify 和 wait 用法
  • JavaScript中的对象个人分享
  • Magento 1.x 中文订单打印乱码
  • Material Design
  • Python进阶细节
  • SpringBoot 实战 (三) | 配置文件详解
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • 二维平面内的碰撞检测【一】
  • 飞驰在Mesos的涡轮引擎上
  • 构建二叉树进行数值数组的去重及优化
  • 如何选择开源的机器学习框架?
  • 使用Gradle第一次构建Java程序
  • 无服务器化是企业 IT 架构的未来吗?
  • 学习笔记TF060:图像语音结合,看图说话
  • 阿里云ACE认证学习知识点梳理
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • ###C语言程序设计-----C语言学习(6)#
  • #pragma pack(1)
  • $ git push -u origin master 推送到远程库出错
  • (1)无线电失控保护(二)
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (done) 两个矩阵 “相似” 是什么意思?
  • (JS基础)String 类型
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (三)SvelteKit教程:layout 文件
  • (十六)一篇文章学会Java的常用API
  • (译) 函数式 JS #1:简介
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .NET Core引入性能分析引导优化
  • .net Signalr 使用笔记
  • .net安装_还在用第三方安装.NET?Win10自带.NET3.5安装
  • .net反混淆脱壳工具de4dot的使用
  • :not(:first-child)和:not(:last-child)的用法