决策树的笔记

一、基础准备

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

五、形成决策树

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

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

相关推荐
像素猎人13 分钟前
差分数组【自用笔记】【c++】
c++·笔记·算法
weixin_4410036432 分钟前
廖华英《中国文化概况》修订版+批注版+译文版+笔记+课件PPT+配套题库 PDF
笔记·pdf·中国文化概况
Cathy Bryant44 分钟前
聊聊拓扑学
笔记·算法·数学建模·拓扑学·高等数学
The森1 小时前
macOS 26(M芯片)部署 cocos2d-x(C++)全链路指南——Xcode + Rosetta
c++·经验分享·笔记·macos·xcode·cocos2d
天天爱吃肉82181 小时前
【 电机热网络温度预测模型学习笔记】
笔记·功能测试·嵌入式硬件·学习·机器学习·信息可视化·汽车
oi..1 小时前
Flag和JavaScript document有关
开发语言·前端·javascript·经验分享·笔记·安全·网络安全
童话名剑2 小时前
YOLOX(学习笔记)
笔记·学习·yolox
ouliten2 小时前
C++笔记:标签分派
c++·笔记
ljt27249606612 小时前
Flutter笔记--popUntilWithResult
前端·笔记·flutter
圣光SG2 小时前
Maven 学习笔记(基础入门版)
笔记·maven