3分钟搞懂决策树分裂核心:为什么用熵而不是错误率?

3分钟搞懂决策树分裂核心:为什么用熵而不是错误率?

【免费下载链接】python-machine-learning-book python-machine-learning-book: 是一个基于 Python 的机器学习教程和示例代码库,介绍了各种机器学习算法和实现方法。适合开发者、研究者和对机器学习感兴趣的人员学习并使用 Python 实现各种机器学习任务。 【免费下载链接】python-machine-learning-book 项目地址: https://gitcode.com/gh_mirrors/py/python-machine-learning-book

在机器学习分类任务中,决策树以其直观易懂的特点成为入门者首选算法。但你是否思考过:为什么主流决策树(如ID3、C4.5)都用熵(Entropy)或基尼指数(Gini)作为分裂准则,而非直观的分类错误率?本文将通过python-machine-learning-book的实战案例,揭示决策树特征分裂的数学本质与工程实践。

决策树分裂的底层逻辑

决策树的核心是通过递归分裂构建"if-else"规则集。其算法流程可概括为四步:

  1. 从根节点开始作为父节点
  2. 选择特征分裂使子节点不纯度最小化(信息增益最大化)
  3. 将训练样本分配到新子节点
  4. 当叶节点纯或满足停止条件时终止,否则递归处理子节点

决策树算法流程

停止规则通常包括:叶节点纯度达标、达到最大深度或分裂无信息增益。其中信息增益的计算是决定分裂质量的关键,这就涉及到不纯度度量的选择。

三种主流分裂准则数学解析

熵(Entropy):信息论视角的不确定性度量

熵起源于信息论,用于衡量随机变量的不确定性。在决策树中,节点熵定义为:

熵计算公式

其中p(i|t)是节点t中第i类样本的比例,C为类别总数。熵值越高表示节点样本越混乱,纯节点熵为0。

熵函数曲线

分类错误率:直观但迟钝的度量

分类错误率定义为:

错误率计算公式

它表示节点中被错误分类的样本比例。虽然直观,但在特征分裂时表现出"迟钝"特性。

错误率函数曲线

信息增益:分裂质量的量化指标

信息增益(IG)衡量分裂后不纯度的减少程度:

信息增益公式

其中H(parent)是父节点熵,H(child_i)是子节点i的熵,N是总样本数,N_i是子节点i样本数。

为什么熵比错误率更适合分裂?

通过一个具体案例对比两种准则的表现:假设根节点有40个正样本(y=1)和80个负样本(y=0),考虑三种可能的特征分裂。

错误率的致命缺陷

当使用错误率计算信息增益时:

  • 父节点错误率 = 1 - max(80/120, 40/120) = 1 - 2/3 ≈ 0.333
  • 假设分裂后子节点错误率分别为0.4和0.285
  • 平均错误率 = (70/120)*0.4 + (50/120)*0.285 ≈ 0.333
  • 信息增益为0,算法会停止分裂

错误率分裂问题演示

熵的优势:持续分裂的动力

改用熵计算时:

  • 父节点熵 = - (80/120)log2(80/120) - (40/120)log2(40/120) ≈ 0.918
  • 子节点熵分别为0.985和0.801
  • 平均熵 = (70/120)*0.985 + (50/120)*0.801 ≈ 0.907
  • 信息增益≈0.011,算法会继续分裂

熵分裂优势演示

关键原因在于熵的凸函数特性:任意两个熵值的加权平均总是小于父节点熵。而错误率在某些情况下会出现平均错误率等于父节点错误率的情况,导致分裂终止。

工程实现与可视化分析

python-machine-learning-bookch03.ipynb中,提供了决策树分裂过程的完整实现。通过对比使用不同准则的决策树在iris数据集上的表现,可以直观看到熵准则通常能产生更深且准确率更高的树模型。

熵函数关键区域标注

图中绿色虚线连接两个子节点的熵值,其平均值(绿色圆点)始终低于父节点熵值(蓝色圆点),这保证了持续分裂的动力。

实践建议与扩展阅读

  1. 准则选择指南

    • 熵:需要精确分裂、数据噪声低时使用
    • 基尼指数:分类任务计算更快,适合大数据集
    • 错误率:仅推荐用于剪枝而非分裂
  2. 项目资源推荐

  3. 常见陷阱:高基数特征可能导致过拟合,建议结合特征选择技术使用。

通过理解分裂准则的数学本质,我们能更好地调优决策树模型。在实际项目中,建议使用scikit-learn寻找最优参数组合。

【免费下载链接】python-machine-learning-book python-machine-learning-book: 是一个基于 Python 的机器学习教程和示例代码库,介绍了各种机器学习算法和实现方法。适合开发者、研究者和对机器学习感兴趣的人员学习并使用 Python 实现各种机器学习任务。 【免费下载链接】python-machine-learning-book 项目地址: https://gitcode.com/gh_mirrors/py/python-machine-learning-book

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值