1201 决策树原理与可视化
📌 一、 课程导入(5 分钟)
场景引入:银行审批系统需要判断“是否给一名用户发放信用卡”。系统无法直接给出复杂公式,但可以画出一棵“如果……那么……”的决策树。
展示一颗已经绘制好的、关于“鸢尾花种类识别”的简易决策树截图,让学生直观看到:一层层的 if-else 判断,最终指向一个结论(花的类别)。
核心疑问抛出:
- 计算机是怎么知道先用哪个特征进行判断的(特征选择)?
- 树到底要长多深才算合适?
- 👨🏫 教师活动:展示预先绘制好的鸢尾花决策树图片;用日常生活中的“猜动物”游戏类比决策树的分裂过程;提出本节课要解决的两个核心疑问。
- 🧑🎓 学生活动:观察决策树图形结构,口头描述从根节点到叶节点的路径;回忆初中生物中“检索表”的用法,思考与决策树的异同。
从可视化图形入手降低认知负荷,消除对“树模型”的恐惧感。利用“猜动物”或“银行审批”等强场景建立规则系统的直觉,为理解抽象的基尼系数做铺垫。
📖 二、 解决问题过程(一):从数据到树——决策树的核心原理
1. 树的“零件”叫什么?
- 根节点:第一次做判断的位置(包含全部样本)。
- 内部节点:中间做判断的位置。
- 叶节点:最终结论(不再继续分裂)。
2. 计算机怎么选“最佳特征”?——不纯度(Impurity)
- 目标:每一次分裂,都希望子节点里的样本 越纯越好(最好是同一类)。
- 基尼系数(Gini)(职高侧重):
- 公式直觉:随机从集合里抽两个样本,他们类别不一样的概率。
- 取值范围:0(完全纯) ~ 0.5(二分类完全乱)。
- 分裂依据:基尼增益 = 父节点基尼 – 子节点加权基尼,选择增益最大的特征。
3. 树长多深?——过拟合 vs 欠拟合
- 树太深(分支太多):完美记住训练数据,但在新数据上表现差(过拟合)。
- 树太浅:连训练数据都没学好(欠拟合)。
- 解决方法(前置剪枝):设定
max_depth=3(限制最大深度)。
- 👨🏫 教师活动:在黑板上手写一个 4 个样本、2 个特征的小数据集,带领学生手动模拟一次“计算基尼系数 – 比较增益 – 选择特征”的分裂过程;强调公式的“朴素直觉”而非复杂数学推导。
- 🧑🎓 学生活动:跟随教师手算步骤,填写导学案上的基尼系数计算空表;尝试口头复述“为什么不纯度越小越好”。
通过手算小例子,破除“黑盒迷信”,让学生亲眼看到机器决策的数学依据。无需学生熟练掌握对数运算,故以基尼系数为核心,降低运算门槛。
💻 三、 解决问题过程(二):从原理到代码——训练与可视化
实验环境:Scikit-learn 内置鸢尾花数据集(Iris)。
步骤 1:训练模型(限制深度)
步骤 2:可视化树结构(需要安装 graphviz)
步骤 3:查看特征重要性
现象解释:观察哪个特征被用作根节点(花瓣长度),这与鸢尾花数据集的常识相符。
- 👨🏫 教师活动:在 Jupyter Notebook 中逐行运行代码,并实时展示生成的树形图;点击图像中的节点,放大解释每个节点包含的“样本数(samples)”和“类别分布(value)”。
- 🧑🎓 学生活动:在教师机上同步观看演示;在本地电脑上复现代码,修改
max_depth为 2、5、10,观察树结构变化;截图记录不同深度下的树形状。
“代码 + 可视化”强反馈机制,让学生快速建立“参数改动 → 树形变化 → 性能变化”的因果链条,为后续调参积累感性经验。
✍️ 四、 解决问题过程(三):课堂练习——用决策树分析“西瓜好坏”
📝 五、 课堂小结(5 分钟)
flowchart LR
root["🌳 决策树(第一次课)"]
subgraph C1["📖 核心概念"]
direction TB
A1["树结构:根/内部/叶节点"]
A2["特征选择:基尼系数"]
end
subgraph C2["💻 代码实践"]
direction TB
B1["sklearn 训练与可视化"]
B2["feature_importances_ 提取"]
end
subgraph C3["⚖️ 过拟合控制"]
direction TB
C1_node["前置剪枝:max_depth"]
C2_node["观察训练集与测试集差异"]
end
root --> C1
root --> C2
root --> C3
style root fill:#4b6cb7,stroke:#253b6e,color:#fff,stroke-width:2px,rx:8px,ry:8px
style C1 fill:#e3f2fd,stroke:#2196f3,stroke-width:1px
style C2 fill:#fff3e0,stroke:#ff9800,stroke-width:1px
style C3 fill:#e8f5e9,stroke:#4caf50,stroke-width:1px
✏️ 随堂检测与互动练习
📮 六、 课后作业与拓展
📋 七、 板书设计
本课用到的单词
| 英文术语 | 发音(美式) | 中文释义 | 专业语境解释 |
|---|---|---|---|
| Decision Tree | /dɪˈsɪʒ.ən triː/ | 决策树 | 一种基于树形结构的分类与回归模型,通过一系列规则对样本进行决策。 |
| Root Node | /ruːt noʊd/ | 根节点 | 决策树的顶端节点,包含全部训练样本,是第一次分裂发生的位置。 |
| Leaf Node | /liːf noʊd/ | 叶节点 | 决策树的末端节点,该节点不再继续分裂,输出最终的预测结果。 |
| Gini Impurity | /ˈdʒiː.ni ɪmˈpjʊr.ə.ti/ | 基尼不纯度 | 衡量节点内样本类别混杂程度的指标,值越小代表节点越“纯”。 |
| Overfitting | /ˌoʊ.vərˈfɪt.ɪŋ/ | 过拟合 | 模型在训练集上表现过好,但泛化能力差,无法适应新数据。 |
| Max Depth | /mæks depθ/ | 最大深度 | 控制决策树生长的关键超参数,用于限制树的层数,防止过拟合。 |
| Feature Importance | /ˈfiː.tʃər ɪmˈpɔːr.təns/ | 特征重要性 | 衡量每个特征在决策树构建中对分类贡献程度的数值。 |