决策树的笔记

一、基础准备

有 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 ),此时还剩 "是否有脚蹼" 这个特征可用,重复计算条件熵、信息增益的步骤,基于这个子集选最优特征,继续拆分,直到所有子集类别都纯净(全是或全否 ),不能再分。

五、形成决策树

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

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

相关推荐
Cloud_Shy6183 小时前
解读《Effective Python 3rd Edition》:从练气到老魔(第五章 Item 33 - 35)
开发语言·人工智能·笔记·python·学习方法
做cv的小昊3 小时前
计算机图形学:【Games101】学习笔记08——光线追踪(辐射度量学、渲染方程与全局光照、蒙特卡洛积分与路径追踪)
图像处理·笔记·学习·计算机视觉·游戏引擎·图形渲染·概率论
星恒随风3 小时前
C++ 类和对象入门(五):初始化列表、explicit 和 static 成员详解
开发语言·c++·笔记·学习·状态模式
伊布拉西莫7 小时前
【流畅的Python】第20章:并发执行器 — 学习笔记
笔记·python·学习
AOwhisky9 小时前
学习自测与解析:MySQL第五、六、七期核心知识点详解
运维·数据库·笔记·学习·mysql·云计算
niuniuyi~9 小时前
QT学习笔记
笔记·qt·学习
咸甜适中9 小时前
rust语言学习笔记Trait(十六)Error(错误)
笔记·学习·rust
xuhaoyu_cpp_java10 小时前
项目学习(三)代码生成器
java·经验分享·笔记·学习
my_daling10 小时前
松下伺服驱动器参数保存流程(已在松下A5上验证)
笔记
智者知已应修善业11 小时前
【51单片机初始化D5-D8亮,每按键按下D1到D4全亮,再按下恢复,如此循环】2024-3-26
c++·经验分享·笔记·算法·51单片机