决策树的核心思想

发布于:2025-03-11 ⋅ 阅读:(19) ⋅ 点赞:(0)

一、决策树的核心思想

  • 本质:通过特征判断对数据集递归划分,形成树形结构。
  • 目标:生成一组“若-则”规则,使数据划分到叶子节点时尽可能纯净。
  • 关键流程
    1. 特征选择:选择最佳分裂特征(如信息增益最大)。
    2. 节点分裂:根据特征取值划分子节点。
    3. 停止条件:节点样本纯度过高或样本数过少时终止。

二、数学公式与理论

1. 信息熵(Information Entropy)

衡量数据集的混乱程度:

H ( D ) = − ∑ k = 1 K p k log ⁡ 2 p k H(D) = -\sum_{k=1}^{K} p_k \log_2 p_k H(D)=k=1Kpklog2pk

  • K K K:类别总数
  • p k p_k pk:第 k k k 类样本的占比
  • 熵值范围 0 0 0(完全纯净)到 log ⁡ 2 K \log_2 K log2K(完全混乱)
2. 信息增益(Information Gain)

特征 A A A 分裂后熵的减少量:

Gain ( D , A ) = H ( D ) − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ H ( D v ) \text{Gain}(D, A) = H(D) - \sum_{v=1}^{V} \frac{|D^v|}{|D|} H(D^v) Gain(D,A)=H(D)v=1VDDvH(Dv)

  • D v D^v Dv:特征 A A A 取值为 v v v 的子集
  • 分裂标准:选择信息增益最大的特征
3. 基尼不纯度(Gini Impurity)

另一种纯度衡量指标:

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

  • 特点:计算效率比熵高,常用于分类树
4. 回归树的均方误差(MSE)

节点内样本的预测误差:

MSE = 1 N ∑ i = 1 N ( y i − y ˉ ) 2 \text{MSE} = \frac{1}{N} \sum_{i=1}^{N} (y_i - \bar{y})^2 MSE=N1i=1N(yiyˉ)2

  • y ˉ \bar{y} yˉ:节点样本的均值
  • 分裂目标:最小化分裂后的加权 MSE

三、代码实现(Python)

示例:手动计算基尼系数
import numpy as np

def compute_gini(y):
    # y: 样本标签数组
    classes, counts = np.unique(y, return_counts=True)
    proportions = counts / len(y)
    gini = 1 - np.sum(proportions ** 2)  # 对应公式 $Gini(D) = 1 - \sum p_k^2$
    return gini

# 示例:计算基尼系数
y = np.array([0, 0, 0, 1, 1, 1, 1])  # 3个0类,4个1类
print("基尼系数:", compute_gini(y))  # 输出:1 - ( (3/7)^2 + (4/7)^2 ) ≈ 0.49
使用 Scikit-learn 实现分类树
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_iris

# 加载数据
data = load_iris()
X, y = data.data, data.target

# 创建模型(使用基尼系数,限制树深度)
model = DecisionTreeClassifier(
    criterion="gini",       # 分裂标准:基尼系数 $Gini(D)$
    max_depth=3,            # 最大深度防止过拟合
    min_samples_split=10    # 节点最少10样本才分裂
)
model.fit(X, y)

# 查看特征重要性(对应信息增益贡献)
print("特征重要性:", model.feature_importances_)

四、实际应用场景

1. 分类任务
  • 信用卡欺诈检测
    • 特征:交易金额、地点、时间间隔
    • 标签:正常/欺诈
    • 方法:计算特征的信息增益,选择关键特征(如“金额 > 阈值”)
2. 回归任务
  • 房价预测
    • 特征:面积、房间数、地理位置
    • 标签:房价
    • 方法:递归划分区域,使每个区域的房价 MSE 最小
3. 其他领域
  • 医疗诊断:根据症状(特征)判断疾病类型(标签)
  • 工业控制:根据传感器数据(特征)判断设备故障(标签)

五、决策树的优缺点

优点 缺点
可解释性强(规则可视化) 容易过拟合(需剪枝)
支持类别和数值特征 对数据微小变化敏感
无需特征标准化 回归任务中预测不够平滑