决策树与集成学习的基本了解
🌳 一、决策树是什么?
模仿人类决策的“流程图”
- 结构:根节点(起点)→ 内部节点(决策问题)→ 分支(答案)→ 叶节点(最终结果)
- 目标:通过一系列 “如果-那么”规则 将数据拆分成更纯净的子集
- 关键数学概念:
- 纯度:节点内样本的相似程度(越高越好)
- 不纯度公式(核心!):
- 分类任务:
- 信息熵:
Entropy = -Σ(p_i * log₂(p_i))➔ 衡量“混乱度”- 基尼系数:
Gini = 1 - Σ(p_i²)➔ 衡量“随机抽到不同类的概率”- 回归任务:
- 方差:
Variance = (1/N) * Σ(y_i - 均值)²➔ 衡量“数值的离散程度”
🔍 二、决策树如何生长?
递归分裂 + 追求纯度提升
- 选择分裂特征:
- 计算所有特征分裂后的 “不纯度减少量”
- 常用指标:
- ✅ 信息增益(ID3):
父节点熵 - 子节点熵加权和- ✅ 信息增益率(C4.5):解决信息增益偏向多值特征的问题
- ✅ 基尼增益(CART分类)/ 方差减少(CART回归)
- 停止条件:
- 节点纯度达标 ✨ | 样本数过少 📉 | 树深度超限 ⛔ | 分裂收益太低 🚫
🌟 三、决策树家族成员
| 类型 | 预测目标 | 不纯度指标 | 叶节点输出 |
|---|---|---|---|
| 分类决策树 | 离散类别(如猫/狗) | 熵、基尼系数 | 多数类 🗳️ |
| 回归决策树 | 连续数值(如房价) | 方差 | 平均值 ⚖️ |
经典算法:
- 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

浙公网安备 33010602011771号