决策树
问题
决策树的原理是什么?如何选择分裂特征?如何防止过拟合?
答案
一、决策树原理
决策树通过递归分裂将特征空间划分为多个区域,每个叶节点对应一个预测值。
二、分裂准则
| 算法 | 分裂准则 | 特点 |
|---|---|---|
| ID3 | 信息增益 | 偏向多值特征 |
| C4.5 | 信息增益比 | 修正 ID3 偏向 |
| CART | 基尼系数 | 二叉树,sklearn 默认 |
信息增益
其中 是信息熵。
基尼系数
基尼系数越小,纯度越高。
三、防止过拟合
| 方法 | 说明 |
|---|---|
| 预剪枝 | 限制树深度、叶节点最少样本数、最小分裂增益 |
| 后剪枝 | 先生成完整树,再自底向上合并(CCP 代价复杂度剪枝) |
| 集成方法 | 用随机森林/XGBoost 代替单棵决策树 |
四、优缺点
| 优点 | 缺点 |
|---|---|
| 可解释性强 | 易过拟合 |
| 无需特征缩放 | 不稳定(数据小变化→树大变化) |
| 处理分类和回归 | 偏向多值特征(ID3) |
| 处理缺失值 | 表达能力有限(线性决策边界) |
常见面试问题
Q1: 决策树如何处理连续特征?
答案:
- 对连续特征排序,尝试所有相邻值的中点作为分裂阈值
- 选择使得信息增益(或基尼系数减小)最大的阈值
- 例如:年龄特征
[20, 25, 30, 35],尝试阈值22.5, 27.5, 32.5
Q2: 为什么随机森林比单棵决策树效果好?
答案:
- 单棵决策树方差大(对数据变化敏感),容易过拟合
- 随机森林通过Bagging + 特征随机训练多棵树,取平均/投票
- 多棵不同的树取平均可以降低方差,减少过拟合
- 这是偏差-方差权衡的经典应用