跳到主要内容

决策树

问题

决策树的原理是什么?如何选择分裂特征?如何防止过拟合?

答案

一、决策树原理

决策树通过递归分裂将特征空间划分为多个区域,每个叶节点对应一个预测值。

二、分裂准则

算法分裂准则特点
ID3信息增益偏向多值特征
C4.5信息增益比修正 ID3 偏向
CART基尼系数二叉树,sklearn 默认

信息增益

Gain(D,A)=H(D)H(DA)\text{Gain}(D, A) = H(D) - H(D|A)

其中 H(D)=pilog2piH(D) = -\sum p_i \log_2 p_i 是信息熵。

基尼系数

Gini(D)=1k=1Kpk2\text{Gini}(D) = 1 - \sum_{k=1}^{K} p_k^2

基尼系数越小,纯度越高。

三、防止过拟合

方法说明
预剪枝限制树深度、叶节点最少样本数、最小分裂增益
后剪枝先生成完整树,再自底向上合并(CCP 代价复杂度剪枝)
集成方法用随机森林/XGBoost 代替单棵决策树

四、优缺点

优点缺点
可解释性强易过拟合
无需特征缩放不稳定(数据小变化→树大变化)
处理分类和回归偏向多值特征(ID3)
处理缺失值表达能力有限(线性决策边界)

常见面试问题

Q1: 决策树如何处理连续特征?

答案

  • 对连续特征排序,尝试所有相邻值的中点作为分裂阈值
  • 选择使得信息增益(或基尼系数减小)最大的阈值
  • 例如:年龄特征 [20, 25, 30, 35],尝试阈值 22.5, 27.5, 32.5

Q2: 为什么随机森林比单棵决策树效果好?

答案

  • 单棵决策树方差大(对数据变化敏感),容易过拟合
  • 随机森林通过Bagging + 特征随机训练多棵树,取平均/投票
  • 多棵不同的树取平均可以降低方差,减少过拟合
  • 这是偏差-方差权衡的经典应用

相关链接