决策树
00:00
决策树算法原理、ID3/C4.5/CART算法对比、信息增益、剪枝策略。
1. 决策树基本原理
决策树通过递归分裂特征空间,构建树形决策结构,每个内部节点表示一个特征判断,叶节点表示预测结果。
1.1 树结构
根节点
/ \
特征A≤3? 特征A>3
/ \ / \
特征B≤5? 叶:0 特征C≤2? 叶:1
/ \ / \
叶:0 叶:1 叶:1 叶:0
| 组成 | 说明 |
|---|---|
| 根节点 | 包含全部训练样本 |
| 内部节点 | 特征测试条件 |
| 分支 | 测试结果的路径 |
| 叶节点 | 类别标签或回归值 |
1.2 学习过程
决策树学习本质是递归选择最优特征和分裂点:
BuildTree(D, features):
if D中所有样本同类:
return 叶节点(该类)
if features为空 or D样本数 < 阈值:
return 叶节点(多数类)
选择最优特征 f* 和分裂点 t*
D_left = {D | f* ≤ t*}
D_right = {D | f* > t*}
return Node(f*, t*, BuildTree(D_left), BuildTree(D_right))
2. 特征选择准则
2.1 信息增益(ID3)
信息熵度量数据集的纯度:
其中 为第 类的比例。熵越大,数据越不纯。
信息增益:按特征 分裂后的熵减少量:
选择信息增益最大的特征进行分裂。
缺点:偏向选择取值多的特征。
2.2 信息增益率(C4.5)
固有值(Intrinsic Value):
信息增益率:
C4.5 选择信息增益率最大的特征,惩罚取值多的特征。
2.3 基尼指数(CART)
基尼指数度量数据集的不纯度:
按特征 的某个取值 二分后的基尼指数:
CART 选择使基尼指数最小的特征和分裂点。
2.4 三种准则对比
| 准则 | 算法 | 分裂方式 | 偏好 | 树类型 |
|---|---|---|---|---|
| 信息增益 | ID3 | 多路分裂 | 取值多的特征 | 分类树 |
| 信息增益率 | C4.5 | 多路分裂 | 修正偏好 | 分类树 |
| 基尼指数 | CART | 二叉分裂 | 无明显偏好 | 分类+回归 |
基尼指数 vs 熵:
基尼指数计算不需要对数运算,效率更高。
3. 剪枝策略
3.1 预剪枝
在构建过程中提前停止树的生长:
| 策略 | 说明 |
|---|---|
| 最大深度 | 限制树的深度 |
| 最小样本数 | 节点最少样本数 |
| 最小信息增益 | 分裂的最小增益阈值 |
| 最小叶节点样本数 | 叶节点最少样本数 |
3.2 后剪枝
先生成完整树,再从底部开始剪枝:
代价复杂度剪枝(CART):
其中 为训练误差, 为叶节点数, 为复杂度参数。
- :不剪枝
- :只保留根节点
- 通过交叉验证选择最优
悲观剪枝(C4.5):
使用连续性修正估计泛化误差。
3.3 剪枝对比
| 维度 | 预剪枝 | 后剪枝 |
|---|---|---|
| 计算效率 | 高(不构建完整树) | 低(需构建完整树) |
| 模型质量 | 可能欠拟合 | 通常更好 |
| 实现难度 | 简单 | 较复杂 |
| 推荐度 | 快速原型 | 生产环境 |
4. CART回归树
CART 回归树使用平方误差最小化准则:
其中 和 为按特征 的分裂点 划分的两个区域。
最优输出为区域内的均值:
5. 决策树优缺点
5.1 优点
- 可解释性强:决策逻辑直观可视
- 无需特征缩放:对量纲不敏感
- 处理混合类型:数值和类别特征
- 处理缺失值:部分算法内置缺失值处理
- 训练速度快:时间复杂度
5.2 缺点
- 过拟合风险高:树太深容易记住噪声
- 不稳定:数据微小变化可能导致完全不同的树
- 贪心算法:局部最优不保证全局最优
- 偏向多值特征:ID3的信息增益偏好
- XOR问题:线性不可分问题需要很深的树
5.3 改进方向
| 问题 | 解决方案 |
|---|---|
| 过拟合 | 剪枝、随机森林 |
| 不稳定 | Bagging、随机森林 |
| 贪心 | Boosting迭代优化 |
| 表达能力有限 | 集成学习 |