决策树与集成学习的基本了解


🌳 一、决策树是什么?

模仿人类决策的“流程图”

  • 结构:根节点(起点)→ 内部节点(决策问题)→ 分支(答案)→ 叶节点(最终结果)
  • 目标:通过一系列 “如果-那么”规则 将数据拆分成更纯净的子集
  • 关键数学概念
  • 纯度:节点内样本的相似程度(越高越好)
  • 不纯度公式(核心!):
    • 分类任务
      • 信息熵:Entropy = -Σ(p_i * log₂(p_i)) ➔ 衡量“混乱度”
      • 基尼系数:Gini = 1 - Σ(p_i²) ➔ 衡量“随机抽到不同类的概率”
    • 回归任务
      • 方差:Variance = (1/N) * Σ(y_i - 均值)² ➔ 衡量“数值的离散程度”

🔍 二、决策树如何生长?

递归分裂 + 追求纯度提升

  1. 选择分裂特征
  • 计算所有特征分裂后的 “不纯度减少量”
  • 常用指标:
    • 信息增益(ID3):父节点熵 - 子节点熵加权和
    • 信息增益率(C4.5):解决信息增益偏向多值特征的问题
    • 基尼增益(CART分类)/ 方差减少(CART回归)
  1. 停止条件
  • 节点纯度达标 ✨ | 样本数过少 📉 | 树深度超限 ⛔ | 分裂收益太低 🚫

🌟 三、决策树家族成员

类型 预测目标 不纯度指标 叶节点输出
分类决策树 离散类别(如猫/狗) 熵、基尼系数 多数类 🗳️
回归决策树 连续数值(如房价) 方差 平均值 ⚖️

经典算法

  • ID3:只用分类+离散特征
  • C4.5:支持分类+连续特征+缺失值
  • CART:万能!支持分类+回归+连续/离散特征(二叉树⭐)

⚖️ 四、决策树的优缺点

优点 缺点
白盒模型:规则可解释性强 👁️‍🗨️ 易过拟合:需剪枝(预剪枝/后剪枝)✂️
✅ 支持数值/类别特征 📊 高方差:数据微小变动导致树结构剧变 🌪️
✅ 自动特征选择 🔍 ❌ 贪婪算法:局部最优 ≠ 全局最优 🧩
✅ 处理非线性关系 ➰ ❌ 外推能力差(预测未知数据弱)🚧

🚀 五、集成学习:三大流派

核心思想:组合多个弱模型 → 强模型!

1. Bagging:并行投票制

  • 做法
    1️⃣ 对样本 有放回抽样(Bootstrap)→ 生成多份训练集
    2️⃣ 每份训练集独立训练1棵树 🌲
    3️⃣ 最终结果:投票(分类) or 平均(回归)
  • 代表随机森林(Random Forest) 🌳🌳🌳
    • 双重随机:样本随机 + 节点分裂时特征随机选(降方差神器!)
    • 优点:抗过拟合强、支持并行训练 ⚡

2. Boosting:串行补习班

  • 做法
    1️⃣ 按顺序训练树,后一棵树 重点学习前一棵的残差 📝
    2️⃣ 给表现好的树更高投票权重 ⚖️
  • 代表算法
    • AdaBoost:动态调整样本权重(分错的样本权重↑)
    • GBDT:用梯度下降拟合残差(回归神器!📈)
    • XGBoost:GBDT的超级进化版!
      • ✅ 二阶梯度优化 → 精度更高
      • ✅ 显式正则项 → 抗过拟合
      • ✅ 并行计算 → 速度飞快 🚀

3. Stacking:模型议会制

  • 做法
    1️⃣ 训练多个 不同类型模型(如SVM+决策树+KNN)→ 初级模型
    2️⃣ 用初级模型的预测结果作为新特征 → 训练 次级模型(如逻辑回归)
  • 关键:用K折交叉验证防止次级模型过拟合!
  • 优点:融合异质模型优势 🧠 + 🧠
  • 缺点:训练复杂,解释性差 🧩

🎯 终极总结

方法 训练方式 核心目标 代表算法
决策树 单棵树 可解释性 CART, C4.5
Bagging 并行 降方差 随机森林 🌲🌲🌲
Boosting 串行 降偏差 XGBoost(王者!🏆)
Stacking 混合 模型融合 自定义组合

💡 实际应用建议

  • 要可解释性:用 单棵决策树(剪枝后)
  • 要精度和鲁棒性:首选 随机森林 or XGBoost
  • 玩Kaggle竞赛:XGBoost/LightGBM 是不二 “人选” 🏆!

苦瓜不苦O_o

posted @ 2025-08-04 10:31  苦瓜大王-001  阅读(33)  评论(0)    收藏  举报