机器学习-决策树

​​一、基础认知​​

​​1.1 什么是决策树?​​

  • ​本质​:模拟人类决策过程的树形结构

  • ​组成​:

  • ​实例​ :相亲决策流程

    复制代码
    年龄 > 30? → 是 → 拒绝
            ↓ 否
    收入 > 50万? → 是 → 接受
            ↓ 否
    公务员? → 是 → 接受
            ↓ 否 → 拒绝

​​1.2 核心概念对比​​

​​概念​​ ​​ID3决策树​​ ​​C4.5决策树​​ ​​CART决策树​​
​​分裂依据​​ 信息增益最大 信息增益率最大 基尼指数最小
​​树结构​​ 多叉树 多叉树 二叉树
​​支持任务​​ 分类 分类 分类+回归
​​缺陷​​ 偏向多值特征 计算复杂度高 只能二叉树分裂

​​二、核心数学原理(附图解)​​

​​2.1 信息熵:混乱度度量​​

  • ​公式​ :

  • ​实例​ :

    复制代码
    数据集A:[A,B,C,D] → 熵 = -4×(1/4)×log₂(1/4) = 2.0
    数据集B:[A,A,A,B] → 熵 = -[(3/4)log₂(3/4)+(1/4)log₂(1/4)] ≈ 0.81

    ​​结论​​:数据越纯净,熵值越小

​​2.2 信息增益(ID3核心)​​

  • ​计算流程​ :

    复制代码
    1. 计算父节点熵值 H(D)
    2. 按特征分裂后计算子节点加权熵 ∑(子样本数/总样本数)×H(子)
    3. 信息增益 = H(D) - 子节点加权熵
  • ​实例演算​ (7人拖欠贷款数据集):

    特征\结果 拖欠(Yes) 不拖欠(No) 计算
    ​​有房​​ 0 3 熵=0
    ​​无房​​ 3 4 熵≈0.985
    ​​信息增益​​ = 0.985 - (3/10)×0 + (7/10)×0.985 ≈ 0.69

​​2.3 信息增益率(C4.5核心)​​

  • ​公式​ :

  • ​修正原理​ :

    复制代码
    特征"邮编"有1000个取值 → 固有值很大 → 增益率变小 
    特征"性别"有2个取值 → 固有值小 → 增益率保留

​​2.4 基尼指数(CART核心)​​

  • ​公式​ :

  • ​物理意义​:随机抽两个样本,类别不一致的概率

  • ​实例​ :

    复制代码
    数据集[3个A,7个B]: 
    Gini = 1 - [(3/10)² + (7/10)²] = 0.42

​​三、实战案例详解​​

​​3.1 泰坦尼克生存预测(分类树)​​

python 复制代码
import pandas as pd
from sklearn.tree import DecisionTreeClassifier

# 数据预处理
titanic = pd.read_csv('titanic.csv')
titanic['Age'].fillna(titanic['Age'].mean(), inplace=True)  # 年龄缺失值填充
X = pd.get_dummies(titanic[['Pclass', 'Age', 'Sex']])       # 独热编码
y = titanic['Survived']

# 模型训练与评估
model = DecisionTreeClassifier(criterion='gini', max_depth=3) 
model.fit(X_train, y_train)
print(f"准确率: {model.score(X_test, y_test):.2%}")

# 决策树可视化
from sklearn.tree import plot_tree
plot_tree(model, feature_names=X.columns, class_names=['Died','Survived'])

​​关键输出​​:

复制代码
              precision    recall  f1-score   support
        Died       0.83      0.91      0.87       105
    Survived       0.82      0.68      0.74        69
    accuracy                           0.83       174

​​3.2 房价预测(回归树)​​

python 复制代码
from sklearn.tree import DecisionTreeRegressor

# 生成波形数据
X = np.sort(5 * np.random.rand(80, 1), axis=0)
y = np.sin(X).ravel() + np.random.normal(0, 0.1, X.shape[0])

# 不同深度树对比
regr_1 = DecisionTreeRegressor(max_depth=2)
regr_2 = DecisionTreeRegressor(max_depth=5)
regr_1.fit(X, y)
regr_2.fit(X, y)

# 可视化预测曲线
plt.plot(X_test, regr_1.predict(X_test), label="深度=2")
plt.plot(X_test, regr_2.predict(X_test), label="深度=5")

​​结论​​:树深度越大,拟合能力越强(过拟合风险越高)


​​四、剪枝技术解析​​

​​4.1 为什么要剪枝?​​

  • ​过拟合现象​:训练准确率99% → 测试准确率70%
  • ​根本原因​:树过于复杂,学习了噪声数据

​​4.2 剪枝方法对比​​

​​类型​​ ​​操作时机​​ ​​优点​​ ​​缺点​​
预剪枝 树生成过程中 训练快,减少计算资源 可能欠拟合(早停问题)
后剪枝 生成完整树后 保留更多有效分支 计算开销大

​​4.3 剪枝效果演示​​

python 复制代码
# 未剪枝 vs 预剪枝对比
full_tree = DecisionTreeClassifier()  # 无限制
pruned_tree = DecisionTreeClassifier(max_depth=3, min_samples_leaf=5) 

full_tree.fit(X_train, y_train)
pruned_tree.fit(X_train, y_train)

print(f"未剪枝测试集准确率: {full_tree.score(X_test, y_test):.2%}")
print(f"预剪枝测试集准确率: {pruned_tree.score(X_test, y_test):.2%}")

​​典型输出​​:

复制代码
未剪枝测试集准确率:76.34% 
预剪枝测试集准确率:82.15%  # 剪枝后泛化能力提升

​​五、高频面试题解析​​
  1. ​​信息增益 vs 信息增益率​​

    信息增益偏向多值特征(如"ID"字段),增益率通过除以特征固有值修正此问题

  2. ​​CART为何用基尼指数?​​

    基尼指数计算只需加减乘(熵需要log运算),在大数据场景效率更高

  3. ​​如何处理连续特征?​​

    复制代码
    步骤:
    1. 排序特征值:[10, 20, 30, 40]
    2. 计算候选切分点:(10+20)/2=15, (20+30)/2=25...
    3. 选择最优切分点(基尼指数最小)
  4. ​​决策树优缺点​ ​

    ​​优点​ ​:可解释性强、无需特征缩放、支持混合数据类型

    ​​缺点​​:容易过拟合、对样本敏感、忽略特征间相关性


​​六、学习资源推荐​​
  1. ​实践平台​:Kaggle Titanic竞赛(决策树基线模型)
  2. ​可视化工具​ :
  3. ​进阶方向​ :
    • 集成学习:随机森林、GBDT
    • 特征重要性分析:model.feature_importances_
相关推荐
Raas1001 小时前
AI网关怎么选?MAI Gateway(魔芋企业级AI网关)入选2026年企业级AI网关推荐清单
大数据·网络·人工智能·gateway·mai gateway
晨间晓1 小时前
两张图片哪里不一样?用 OpenCV 做图像差异检测工具
人工智能·opencv·计算机视觉
逸A1 小时前
携程app逆向那些事(ai agent能力偏弱时)
人工智能·python·安全
汇智信科1 小时前
基于 SMS 体系的民航安全管理平台架构,危险源与事件闭环管理
人工智能·安全·汇智信科·hsim·fastclaw·汇智龙虾
数据皮皮侠1 小时前
中国产品级二氧化碳排放数据集
大数据·人工智能·搜索引擎·智慧城市·制造
旋生万物2 小时前
螺旋数不是玄学:Python 实现广义复数与等角螺线
开发语言·人工智能·python·云原生·aigc·软件工程·后端开发
边界智能2 小时前
国庆假期 AI Agent 行业复盘|智能体的考核标准被改写
人工智能·ai·智能体
李福春2 小时前
技术思考问题16:AI智能体模型Meta-Muse-Wonder越聪明,刹车应该谁来踩?
人工智能·agent安全·幂等设计·深圳同盟·腾讯云架构师技术同盟·智能体权限·工具授权分级
素男2 小时前
不够好,正好:便利贴那管「失败」的胶
人工智能·agent·self-becoming·ai长期记忆·ai自我介绍
AI码上来2 小时前
全模态、全双工、端到端:GPT-Live 之后被用坏了
人工智能·实时音视频