一、基础准备
有 5 条样本数据,每条样本包含 “不浮出水面是否可以生存”“是否有脚蹼” 这 2 个特征,最终要判断的目标是 “属于鱼类” 的结果(是或否 ),我们的任务就是基于这些特征,构建能判断是否为鱼类的决策逻辑树。
二、计算总熵(数据集整体不确定性)
熵用来衡量数据的混乱、不确定程度。对于 “属于鱼类” 这个目标,数据里 “是” 的有 2 条,“否” 的有 3 条 。按照熵的计算公式:D)=−∑i=1npilog2(pi)
是类别占比 ),算出总熵约为 0.971 。这说明数据集本身因为类别分布不均(不是全是或全否 ),存在一定不确定性。
三、计算条件熵与信息增益(选最优特征)
对每个特征(“不浮出水面是否可以生存” 和 “是否有脚蹼” ),都要做以下操作:
- 拆分数据集:按照特征的不同取值,把原数据集拆成多个子集。比如 “不浮出水面是否可以生存” 取值为 “是” 时,对应样本 1、2、3;取值为 “否” 时,对应样本 4、5 。
- 算子集熵:对每个子集,计算其内部 “属于鱼类” 的熵(算法同总熵 ),衡量子集内部的不确定性。像 “不浮出水面是否可以生存” 取值 “是” 的子集里,“属于鱼类” 是 2 条、否 1 条,算出这个子集熵约 0.918 ;取值 “否” 的子集里,“属于鱼类” 全否,熵就是 0 。
- 算条件熵:把各子集的熵,按照子集在原数据集中的占比加权平均,得到该特征的条件熵。“不浮出水面是否可以生存” 的条件熵约 0.551 ,“是否有脚蹼” 的条件熵约 0.8 。
- 算信息增益:用总熵减去条件熵,得到的差值就是信息增益,它衡量的是用这个特征分类后,数据不确定性降低了多少。“不浮出水面是否可以生存” 信息增益约 0.42 ,“是否有脚蹼” 约 0.171 。我们选信息增益大的特征(这里就是 “不浮出水面是否可以生存” )作为当前构建决策树的节点,因为它对降低不确定性、分类更有帮助。
四、递归构建子树
选好根节点(“不浮出水面是否可以生存” )后,按其特征取值拆分出不同子集,对每个子集继续上述流程:
- 对于 “不浮出水面是否可以生存” 取值 “否” 的子集(样本 4、5 ),发现里面 “属于鱼类” 全是 “否”,类别纯净,直接作为决策树的叶节点(结果就是否 )。
- 对于取值 “是” 的子集(样本 1、2、3 ),此时还剩 “是否有脚蹼” 这个特征可用,重复计算条件熵、信息增益的步骤,基于这个子集选最优特征,继续拆分,直到所有子集类别都纯净(全是或全否 ),不能再分。
五、形成决策树
最终构建出的决策树,根节点是 “不浮出水面是否可以生存”,往下分支后,对需要继续判断的分支,用 “是否有脚蹼” 等剩余特征接着分,形成一个树状的判断流程。比如从根节点 “不浮出水面是否可以生存” 选 “是”,就走到 “是否有脚蹼” 的判断,脚蹼是就判定属于鱼类,脚蹼否就判定不属于,以此类推,把原本零散的数据规律,转化成了清晰、可一步步执行的决策规则 。
总的来说,这整个过程就是用数学方法(信息增益等 )从数据里挑出最关键的分类特征,然后一层一层递归拆分,把 “是否是鱼类” 的判断变成可视化、可解释的树状逻辑,是从实际数据中归纳分类规则、做决策判断的一种典型思路,能帮我们把复杂的分类问题,拆解成简单的步骤化判断,其中信息增益越大代表熵越小结果越准确 。