决策树的笔记

一、基础准备

有 5 条样本数据,每条样本包含 "不浮出水面是否可以生存""是否有脚蹼" 这 2 个特征,最终要判断的目标是 "属于鱼类" 的结果(是或否 ),我们的任务就是基于这些特征,构建能判断是否为鱼类的决策逻辑树。

二、计算总熵(数据集整体不确定性)

熵用来衡量数据的混乱、不确定程度。对于 "属于鱼类" 这个目标,数据里 "是" 的有 2 条,"否" 的有 3 条 。按照熵的计算公式:D)=−∑i=1n​pi​log2​(pi​)

是类别占比 ),算出总熵约为 0.971 。这说明数据集本身因为类别分布不均(不是全是或全否 ),存在一定不确定性。

三、计算条件熵与信息增益(选最优特征)

对每个特征("不浮出水面是否可以生存" 和 "是否有脚蹼" ),都要做以下操作:

  1. 拆分数据集:按照特征的不同取值,把原数据集拆成多个子集。比如 "不浮出水面是否可以生存" 取值为 "是" 时,对应样本 1、2、3;取值为 "否" 时,对应样本 4、5 。
  2. 算子集熵:对每个子集,计算其内部 "属于鱼类" 的熵(算法同总熵 ),衡量子集内部的不确定性。像 "不浮出水面是否可以生存" 取值 "是" 的子集里,"属于鱼类" 是 2 条、否 1 条,算出这个子集熵约 0.918 ;取值 "否" 的子集里,"属于鱼类" 全否,熵就是 0 。
  3. 算条件熵:把各子集的熵,按照子集在原数据集中的占比加权平均,得到该特征的条件熵。"不浮出水面是否可以生存" 的条件熵约 0.551 ,"是否有脚蹼" 的条件熵约 0.8 。
  4. 算信息增益:用总熵减去条件熵,得到的差值就是信息增益,它衡量的是用这个特征分类后,数据不确定性降低了多少。"不浮出水面是否可以生存" 信息增益约 0.42 ,"是否有脚蹼" 约 0.171 。我们选信息增益大的特征(这里就是 "不浮出水面是否可以生存" )作为当前构建决策树的节点,因为它对降低不确定性、分类更有帮助。

四、递归构建子树

选好根节点("不浮出水面是否可以生存" )后,按其特征取值拆分出不同子集,对每个子集继续上述流程:

  • 对于 "不浮出水面是否可以生存" 取值 "否" 的子集(样本 4、5 ),发现里面 "属于鱼类" 全是 "否",类别纯净,直接作为决策树的叶节点(结果就是否 )。
  • 对于取值 "是" 的子集(样本 1、2、3 ),此时还剩 "是否有脚蹼" 这个特征可用,重复计算条件熵、信息增益的步骤,基于这个子集选最优特征,继续拆分,直到所有子集类别都纯净(全是或全否 ),不能再分。

五、形成决策树

最终构建出的决策树,根节点是 "不浮出水面是否可以生存",往下分支后,对需要继续判断的分支,用 "是否有脚蹼" 等剩余特征接着分,形成一个树状的判断流程。比如从根节点 "不浮出水面是否可以生存" 选 "是",就走到 "是否有脚蹼" 的判断,脚蹼是就判定属于鱼类,脚蹼否就判定不属于,以此类推,把原本零散的数据规律,转化成了清晰、可一步步执行的决策规则 。

总的来说,这整个过程就是用数学方法(信息增益等 )从数据里挑出最关键的分类特征,然后一层一层递归拆分,把 "是否是鱼类" 的判断变成可视化、可解释的树状逻辑,是从实际数据中归纳分类规则、做决策判断的一种典型思路,能帮我们把复杂的分类问题,拆解成简单的步骤化判断,其中信息增益越大代表熵越小结果越准确 。

相关推荐
stars-he3 分钟前
单相双半波可控整流电路的MATLAB仿真设计
笔记·学习·matlab
im_AMBER18 分钟前
Leetcode 87 等价多米诺骨牌对的数量
数据结构·笔记·学习·算法·leetcode
今儿敲了吗33 分钟前
计算机网络第一章笔记
笔记·计算机网络
yuxb731 小时前
Jenkins 流水线:镜像仓库与自动化部署
笔记·jenkins
YJlio1 小时前
Sysinternals 磁盘工具学习笔记(13.0):从 VHD 备份到碎片整理与卷标管理总览
服务器·笔记·学习
iconball1 小时前
个人用云计算学习笔记 --25 OpenStack 框架
运维·笔记·学习·云计算
iconball1 小时前
个人用云计算学习笔记 --27 云基础介绍
运维·笔记·学习·华为云·云计算
其美杰布-富贵-李2 小时前
PyTorch Tabular 学习笔记
pytorch·笔记·学习·表格
TheSumSt2 小时前
Python丨课程笔记Part2:方法论进阶部分
开发语言·笔记·python
摇滚侠2 小时前
Java 零基础全套视频教程,异常,处理异常,自定义异常,笔记 124-129
java·笔记