进阶 #ml#decision-tree#ensemble
决策树与随机森林
决策树用 if-else 规则树做分类——每个节点问一个问题,根据答案走不同分支。随机森林用多棵决策树投票,大幅降低过拟合
🤔 “猜人物”游戏——和决策树一模一样
你在玩”猜人物”游戏:
- “是中国人吗?” → 是
- “是古代人吗?” → 不是
- “是男的吗?” → 是
- “是演员吗?” → 是 → “我猜是吴京!”
你每次问一个问题,根据答案走不同分支——这就是决策树(Decision Tree)。
决策树:一系列 if-else 规则组成的树——从根节点开始,每层问一个问题,最终在叶子节点得到分类结果。
🏪 **类比:医院分诊”
病人进来 → 发烧吗?(是)→ 咳嗽吗?(是)→ 可能是流感 → 咳嗽吗?(不是)→ 可能是普通感冒 → 发烧吗?(不是)→ 头痛吗?→ ……
这就是一棵决策树——“问问题→走分支→得到结论”。
# 决策树的训练本质:选择"最好的问题"
# 什么是最好的问题?——能最大程度"分清"数据的那个
# 信息增益(Information Gain):
# 原始数据:10 个 A,10 个 B → 混乱
# 问"颜色是红色吗?"后:
# 红色组:8 个 A,2 个 B → 更纯了
# 非红色组:2 个 A,8 个 B → 也更纯了
# → 信息增益大 → 这个好
# 基尼不纯度(Gini Impurity)——另一种衡量"纯不纯"的指标
🌲 随机森林——一群树比一棵树强
单棵决策树容易过拟合(Overfitting)——对训练数据记太细了,换点新数据就不准。
随机森林(Random Forest) 的解决方案:训练很多棵不同的树,投票决定结果。
# 随机森林 = 多棵随机生成的决策树
# "随机"体现在两个方面:
# 1. 每棵树用不同的训练数据子集(Bootstrap 采样)
# 2. 每个节点分裂时只考虑随机子集的特征
# 预测时:所有树投票 → 得票最多的类别
# 准确率通常高于单棵决策树,且不易过拟合
📝 小结
| 概念 | 一句话 |
|---|---|
| 决策树 | if-else 规则树——可解释性最强 |
| 信息增益 | 选择”最能分清数据”的问题分裂节点 |
| 过拟合 | 树太深→记死了训练数据→泛化差 |
| 随机森林 | 多棵树投票——降低过拟合,提高准确率 |
为什么先学这个? 决策树直观。另一种经典分类器——支持向量机(SVM)——用完全不同的”几何”视角。