1️⃣ 什么是决策树?
决策树(Decision Tree)是一种常见的监督学习方法,可用于分类 和回归 。
其基本思想是:
通过特征条件的逐层划分,将数据集分割成越来越"纯净"的子集,直到子集中的样本几乎属于同一类别。
最终输出是一个树形结构,每个叶节点对应一个类别或预测值。
2️⃣ 决策树的构建思想
- 
从根节点开始,选择一个最佳特征来划分数据集
 - 
对划分后的子集递归构建子树
 - 
当满足停止条件时(子集纯净、特征用尽或达到深度限制)终止
 
3️⃣ 特征选择指标
决策树核心在于:如何选择最优的划分特征?
(1) 信息增益(ID3算法)
熵(Entropy)定义:
其中  是类别 
 在数据集 
 中的概率。
信息增益定义:
- 
:特征
 - 
:在特征
下的数据子集
 
优点:选择信息增益最大的特征,降低数据的不确定性。
(2) 信息增益率(C4.5算法)
信息增益率定义:
其中
(3) 基尼指数(CART算法)
基尼指数定义:
某特征  的基尼指数:
4️⃣ 决策树生成与剪枝
4.1 生成过程
- 
递归划分数据集
 - 
根据指标(信息增益/基尼指数)选择最优特征
 - 
当样本数量小于阈值或特征用尽,生成叶节点
 
4.2 剪枝(Pruning)
防止过拟合,主要有两类:
- 
预剪枝(Pre-Pruning) :
在生成树时提前终止划分,例如:
- 
最大深度限制
 - 
节点最小样本数限制
 - 
信息增益小于阈值
 
 - 
 - 
后剪枝(Post-Pruning) :
完整生成树后,再自底向上删除不必要的分支。
 
5️⃣ 决策树的完整数学表达
分类决策函数为:
回归任务可输出均值:
6️⃣ Python实现(Sklearn)
            
            
              python
              
              
            
          
          from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier, export_text
# 加载数据
X, y = load_iris(return_X_y=True)
# 构建决策树
clf = DecisionTreeClassifier(criterion="gini", max_depth=3, random_state=0)
clf.fit(X, y)
# 输出结构
print(export_text(clf, feature_names=["sepal_length","sepal_width","petal_length","petal_width"]))
        如果需要可视化:
            
            
              python
              
              
            
          
          from sklearn import tree
import matplotlib.pyplot as plt
plt.figure(figsize=(12,8))
tree.plot_tree(clf, filled=True, feature_names=["sepal_length","sepal_width","petal_length","petal_width"])
plt.show()
        7️⃣ 优缺点总结
✅ 优点
- 
可解释性强,输出清晰的规则
 - 
不需要大量特征工程(无需归一化)
 - 
能同时处理数值型和离散型特征
 
❌ 缺点
- 
容易过拟合,需要剪枝
 - 
对数据微小波动敏感
 - 
贪心选择特征,可能不是全局最优
 
8️⃣ 应用场景
- 
风控评分卡(可解释性需求高)
 - 
医学诊断、临床辅助
 - 
客户细分、市场营销
 - 
与集成学习(RandomForest、XGBoost)结合
 
📚 总结
- 
ID3 用信息增益 ,C4.5 用信息增益率 ,CART 用基尼指数
 - 
剪枝是防止过拟合的关键步骤
 - 
决策树是集成学习方法的核心基学习器