进阶 #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)——用完全不同的”几何”视角。