决策树的核心思想

一、决策树的核心思想

  • 本质:通过特征判断对数据集递归划分,形成树形结构。
  • 目标:生成一组"若-则"规则,使数据划分到叶子节点时尽可能纯净。
  • 关键流程
    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=1∑Kpklog2pk

  • 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=1∑V∣D∣∣Dv∣H(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)=1−k=1∑Kpk2

  • 特点:计算效率比熵高,常用于分类树
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=1∑N(yi−yˉ)2

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

三、代码实现(Python)

示例:手动计算基尼系数
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 实现分类树
python 复制代码
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. 其他领域
  • 医疗诊断:根据症状(特征)判断疾病类型(标签)
  • 工业控制:根据传感器数据(特征)判断设备故障(标签)

五、决策树的优缺点

优点 缺点
可解释性强(规则可视化) 容易过拟合(需剪枝)
支持类别和数值特征 对数据微小变化敏感
无需特征标准化 回归任务中预测不够平滑
相关推荐
njsgcs3 分钟前
已知链中心距用节数算中间电机摆放位置 常量弧长 三链轮弦长模型算法
算法
2601_962440841 小时前
计算机毕业设计之jsp旅游网站管理系统
java·开发语言·算法·课程设计·旅游·推荐算法
Java小白笔记1 小时前
Codex 桌面应用设置功能完全指南
人工智能·opencv·目标检测·机器学习·计算机视觉·数据挖掘·语音识别
池塘的蜗牛1 小时前
AFDM波形基于DFT的通感一体化
算法
大鱼>2 小时前
Scikit-learn Pipeline:构建可复用的 ML 流水线
python·机器学习·scikit-learn
147API2 小时前
Claude global workspace 研究给智能体测试提了一个醒
人工智能·算法·机器学习
葫三生2 小时前
《论三生原理》与模糊数学的关联、异同、互补关系?
人工智能·科技·算法·机器学习·开源
我命由我123452 小时前
方差(实例实操、与标准差的区别)
java·数据结构·算法·数据分析·java-ee·intellij-idea·idea
闲研随记2 小时前
【文献阅读 ICML 2026】RL算法:Critique-GRPO
论文阅读·算法·llm·强化学习·rl·icml·grpo
民乐团扒谱机2 小时前
【微实验】从迷雾中看清世界:卡尔曼滤波的数学诗意与MATLAB实践
人工智能·算法·matlab·卡尔曼滤波·kalman