什么是决策树?
决策树(Decision Tree) 是一种直观的分类算法。它通过一系列"是/否"问题将数据逐步分类。
核心直觉:想象你在玩"20个问题"猜谜游戏:
- 问题 1:这个动物有翅膀吗?→ 是/否
- 问题 2:它会飞吗?→ 是/否
- 问题 3:它是哺乳动物吗?→ 是/否
- ...最终得出结论:这是鸟/狗/猫
每个内部节点都是一个决策点,叶子节点是最终分类。
🎯 适用场景
- 可解释性要求高:银行审批、医疗诊断等需要解释决策过程的场景
- 特征重要性分析:需要快速了解哪些特征对预测最重要
- 混合类型数据:同时处理数值型和分类型特征
- 数据预处理少:不需要特征缩放,对缺失值有一定容忍度
- 快速原型开发:作为基准模型快速验证想法
💡 经典应用:信用评分、客户流失预测、医疗诊断、植物分类
📜 历史渊源
问题背景:早期的机器学习模型(如线性回归、感知机)输出的是数字或权重,人类很难理解"模型为什么这样决策"。医生、法官、银行经理需要的是可以解释的规则:"如果体温>38°且咳嗽,则可能是流感"。
关键突破:1984年,统计学家 Breiman 等人提出 CART 算法,用基尼不纯度来选择最佳分裂点。1986年,Quinlan 提出 ID3 算法,用信息增益(熵的减少量)来决定"先问哪个问题"。两种方法殊途同归——都是贪心地选择最能区分数据的特征。
深远影响:决策树是唯一能直接输出"人类可读规则"的模型,至今仍是医疗诊断、金融风控等需要可解释性场景的首选。更重要的是,它催生了随机森林、GBDT、XGBoost 等一系列强大的集成方法。
趣闻:Quinlan 开发 ID3 时的灵感来源是一个经典的猜谜游戏"20 Questions"——通过最少的是/否问题猜出对方想的东西。决策树本质上就是在玩这个游戏:每次选择最有信息量的问题来问。
🔗 发展脉络
⚠️ 局限性
- 容易过拟合:深层决策树会记住训练数据的噪声,需要剪枝
- 不稳定:数据微小变化可能导致完全不同的树结构
- 只能做轴平行分割:决策边界只能是垂直或水平的
- 偏向多值特征:信息增益偏向取值较多的特征
- 难以学习复杂关系:如 XOR 问题需要很深的树
💡 这些局限催生了:随机森林(解决不稳定)、梯度提升树(提高精度)、XGBoost(综合优化)
🏢 工业界地位
单棵决策树在工业界主要用于以下场景:
- 可解释性需求场景:金融风控、医疗诊断需要解释模型决策
- 快速特征筛选:在特征工程阶段快速识别重要特征
- 作为基学习器:随机森林、梯度提升树的基础组件
- 规则提取:从树中提取业务规则
🎯 现状:单棵决策树较少单独使用,但其思想是现代集成学习方法(随机森林、XGBoost、LightGBM)的基石。
交互式可视化
调整参数,观察决策树如何生长和分裂
- 调整「最大深度」:深度 1 只分一刀(太简单),深度过大则每个叶节点只有几个点(过拟合)
- 观察树结构:每个节点显示了分裂条件——这就是决策树的可解释性
- 比较不同的「分裂标准」(基尼/信息增益),观察树的结构是否变化
树的结构信息:
节点数: 0
最大深度: 0
叶子节点数: 0
数学原理
直觉引入:想象你在猜一个动物——你会问"它会飞吗?""它有四条腿吗?"每个问题都把可能的答案缩小一半。决策树做的就是这件事:找到最能"区分"数据的问题,优先问。
信息熵(衡量"混乱程度"):
符号解释:
- $D$:当前数据集
- $K$:类别总数
- $p_k$:第 $k$ 类样本占比
熵越大 → 越混乱 → 越需要分裂。纯净节点(只有一类)熵 = 0。
信息增益(ID3 算法):
选择信息增益最大的特征 $a$ 进行分裂——即分裂后"混乱程度"下降最多的特征。
基尼不纯度(CART 算法):
直觉:从数据集中随机抽两个样本,它们类别不同的概率。基尼值越小越纯净。
数据集 14 天:9 天打球(+),5 天不打(-)
• 总熵:$H = -\frac{9}{14}\log_2\frac{9}{14} - \frac{5}{14}\log_2\frac{5}{14} = 0.940$
按"天气"分裂:晴(5天)、阴(4天)、雨(5天)
• $H(\text{晴}) = 0.971$,$H(\text{阴}) = 0$,$H(\text{雨}) = 0.971$
• 加权熵 = $\frac{5}{14}(0.971) + \frac{4}{14}(0) + \frac{5}{14}(0.971) = 0.694$
• 信息增益 = 0.940 - 0.694 = 0.246
对比其他特征,选增益最大的作为根节点。
剪枝(防止过拟合):
- 预剪枝:限制最大深度、最小样本数等,提前停止生长
- 后剪枝:先长完整棵树,再自底向上剪去不显著的分支