TIP想象你是一个医生,要根据病人的症状判断病情。你习惯先问”发烧吗?“——如果发烧,再问”咳嗽吗?“——如果咳嗽,再问”痰的颜色?”……这样一串问答就形成了一棵决策树。
决策树是一种基于树结构的监督学习模型,既可以做分类也可以做回归。它的核心思想是:从根节点开始,逐层根据特征对样本空间进行划分,每个叶子节点对应一个决策结果。
基本概念
一棵决策树由以下元素构成:
- 根节点:包含全部训练样本
- 内部节点:对应一个特征的测试条件
- 分支:测试的每个可能输出
- 叶子节点:最终的分类/回归结果
从根到叶子的每条路径就是一条决策规则(if-then规则的集合),这些规则互斥且完备。
决策树学习的核心问题:每一步选哪个特征来分裂? 选法不同就催生了不同的算法。
ID3 —— 信息增益
ID3(Iterative Dichotomiser 3,Quinlan 1986)基于信息论选择分裂特征。
熵
设样本集合 中有 类 ,将样本划分成 个子集 ,第 类样本占比 (用频率近似),则 的熵定义为:
- 熵度量不确定性。
- 熵越大,类别越混;
- 熵越小,类别越纯。
- 若 全部属于同一类,则 。
条件熵
用特征 对 划分:假设特征 有 种可能的取值,将样本 分为 个子集 ,则条件熵(按特征 划分后的加权平均熵)为:
- 表示集合 的元素个数,按子集大小加权求和
- 对于 的含义,例如 是”颜色”,可能取值为”红、绿、蓝”,则 ;如果A是二值特征(如”是否发烧”),则 。对于近似连续的特征(如”身高”),可以先离散化为若干区间(找分裂阈值)。
TIP条件熵用特征的取值可能来划分样本集合,熵用类别标签来划分
信息增益(Information Gain)
特征 对数据集 的信息增益:
ID3 策略
在每一步选择 最大的特征A来分裂,递归构建,直到:
- 子集中所有样本属于同一类
- 无可选特征
- 超过预设深度
:::warning [信息增益的偏好] 信息增益天然偏向取值多的特征( 较大的特征)(比如”编号”这种每个样本一个取值的特征,信息增益极大但毫无泛化能力)。
原因:信息增益计算的是划分前后熵的减少量,取值多的特征, 更大,划分后子集更小,熵更低,导致信息增益更大。 :::
C4.5 —— 信息增益率
C4.5(Quinlan 1993)是 ID3 的改进版,用增益率代替信息增益:
增益率
定义特征 的固有值(Intrinsic Value)或分裂信息(Split Information),其实就是特征 本身的熵。:
NOTE这个和熵的公式很像,但是这里的 是按特征 的取值可能划分的子集,而不是按类别划分的子集。
增益率:
C4.5 策略:不直接选增益率最大的特征(因为 小时增益率会被过度放大),而是先选出信息增益高于平均水平的特征,再从中选增益率最大的。
C4.5 的其他改进
| 改进点 | 说明 |
|---|---|
| 连续值处理 | 对连续特征排序,尝试每对相邻值的中点作为分裂阈值 |
| 缺失值处理 | 用带权样本参与分裂,缺失值按权重分配到各分支 |
| 剪枝 | 后剪枝(PEP),用悲观误差估计防止过拟合 |
| 多值处理 | 增益率天然压制多值特征 |
CART —— 基尼指数
CART(Classification And Regression Tree,Breiman 1984)既可以做分类,也可以做回归,且生成的是二叉树。对比之下ID3和C4.5生成的是多叉树(分类用的特征有 种取值,就有 个分支)。CART不仅能做分类,还能做回归
基尼指数
对于数据集 ,有个类别,将样本集合划分为 个子集 ,第 类样本占比 ,基尼值(Gini impurity)定义为:
反映了从 随机抽取两个样本,其类别不一致的概率。越小表示纯度越高,越大越不纯。
基尼指数和熵在物理意义上完全等价(都表示不纯度),只是数值范围不同(基尼最大0.5,熵最大1)
用特征 划分后(CART 对每个特征做二分),基尼指数:
CART 分类策略:选 最小的特征和分裂点。
CART 回归树
对于回归任务,分裂准则不再是基尼指数,而是均方误差(MSE):
其中 分别是左右子集的输出值(取该子集 的均值)。递归划分,叶子节点的预测值即为该叶子上样本的均值。
剪枝
决策树容易过拟合(理论上可以做到训练误差为零),剪枝是关键的正则化手段。
预剪枝
在构建过程中提前停止:
- 限制树的最大深度
- 限制节点的最少样本数
- 限制分裂后的信息增益阈值
- 用验证集评估:若划分不能提高验证集精度则停止
优点:效率高 缺点:可能过早停止,错过后续的好划分(视界局限效应)
后剪枝
先让树充分生长,再自底向上合并叶子:
CART 代价复杂度剪枝(CCP): 定义损失函数:
- 是叶子数
- 是叶子 的样本数
- 是平衡拟合度与复杂度的参数
对每个 ,存在一棵最优子树。通过交叉验证选择最优 。
C4.5 悲观剪枝(PEP): 用训练集估计误差,加上一个惩罚项(连续修正),自底向上判断是否合并。
三大算法对比
| 维度 | ID3 | C4.5 | CART |
|---|---|---|---|
| 分裂准则 | 信息增益 | 增益率 | 基尼指数 / MSE |
| 树结构 | 多叉树 | 多叉树 | 二叉树 |
| 连续值 | 不支持 | 支持 | 支持 |
| 缺失值 | 不支持 | 支持 | 支持 |
| 剪枝 | 不支持 | 后剪枝(PEP) | 后剪枝(CCP) |
| 输出 | 分类 | 分类 | 分类 + 回归 |
决策树的优缺点
优点:
- 可解释性极强(白箱模型),规则可以直接阅读
- 无需特征缩放(对数值范围不敏感)
- 可以处理非线性关系
- 天然处理混合类型特征
缺点:
- 容易过拟合(必须剪枝)
- 对数据微小变化敏感(不稳定,可用 Bagging + 随机森林缓解)
- 贪婪搜索(每步最优不保证全局最优)
- 偏向于多值特征(ID3 尤其严重)
- 决策边界是平行于坐标轴的(难以拟合斜线分割)
总结
信息增益 → ID3(基础,偏好多值特征)增益率 → C4.5(改进,连续值 + 缺失值 + 剪枝)基尼指数 → CART(二叉树,分类 + 回归,CCP 剪枝)三者关系:ID3 → C4.5(直接改进)和 ID3 → CART(并行发展)。目前工业界最常用的是 CART(随机森林和 GBDT 的基础模型)。