决策树的核心思想

一、决策树的核心思想

  • 本质:通过特征判断对数据集递归划分,形成树形结构。
  • 目标:生成一组"若-则"规则,使数据划分到叶子节点时尽可能纯净。
  • 关键流程
    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. 其他领域
  • 医疗诊断:根据症状(特征)判断疾病类型(标签)
  • 工业控制:根据传感器数据(特征)判断设备故障(标签)

五、决策树的优缺点

优点 缺点
可解释性强(规则可视化) 容易过拟合(需剪枝)
支持类别和数值特征 对数据微小变化敏感
无需特征标准化 回归任务中预测不够平滑
相关推荐
有一个好名字3 分钟前
力扣:多数元素
算法·leetcode·职场和发展
pystraf16 分钟前
P2572 [SCOI2010] 序列操作 Solution
数据结构·算法·线段树·洛谷
吗喽对你问好27 分钟前
华为5.7机考-最小代价相遇的路径规划Java题解
算法·华为
Trent198533 分钟前
影楼精修-牙齿美型修复算法解析
算法
明朝百晓生1 小时前
【Survival Analysis】【机器学习】【3】deepseek流程图
人工智能·机器学习
小王努力学编程2 小时前
高并发内存池(二):项目的整体框架以及Thread_Cache的结构设计
开发语言·c++·学习·算法
wzx_Eleven2 小时前
【论文阅读】基于客户端数据子空间主角度的聚类联邦学习分布相似性高效识别
论文阅读·人工智能·机器学习·网络安全·聚类
补三补四2 小时前
遗传算法(GA)
人工智能·算法·机器学习·启发式算法
梁小憨憨2 小时前
循环卷积(Circular Convolutions)
人工智能·笔记·深度学习·机器学习
dot to one3 小时前
C++ 渗透 数据结构中的二叉搜索树
数据结构·c++·算法·visual studio