1603SVD与降维方法全景
📌 一、 课程导入(5分钟)
回顾前两节课(1601、1602):
- 1601:我们学会了PCA的核心思想——找方差最大的投影方向,用散点图探索数据结构。
- 1602:我们学会了PCA的数学直觉——投影、碎石图、累计方差曲线。
核心疑问:
- 我们一直在用
sklearn.decomposition.PCA,但它在计算机内部到底是怎么算的? - PCA是不是降维的唯一工具?还有没有其他降维方法?
- 面对不同类型的数据和分析目标,我们该怎么选择降维方法?
本节课定位:
本节课是“降维方法论”的收官之课。我们将回答三个问题: ① PCA的幕后英雄是谁?(SVD) ② 除了PCA还有什么?(t-SNE) ③ 什么时候用什么方法?(选型决策)
引出SVD——“幕后英雄”的比喻:
- 你去餐厅点了一道“红烧鱼”(PCA)。
- 鱼是厨师用“灶台和锅”(SVD)做出来的。
- 你作为食客,只需要知道“这道菜很好吃”(PCA降维效果好),不需要知道灶台的具体构造。
- 但如果你想成为一名厨师(进阶学习),了解一下灶台的工作原理会很有帮助。
本节课的教学原则:
SVD不提数学公式,只讲“它是做什么的”和“它和PCA什么关系”。t-SNE重点讲“它和PCA有什么不同”。
- 👨🏫 教师活动:
- 在黑板上画一个简单的类比图:
原始数据 → SVD(计算引擎)→ 主成分(PCA输出)。 - 提问:“我们一直在用PCA,但你知道计算机内部是怎么算出主成分的吗?”
- 引导学生思考:“就像你用手机拍照,但不需要知道手机内部芯片怎么处理图像一样。”
- 在黑板上画一个简单的类比图:
- 🧑🎓 学生活动:
- 思考:“如果不需要知道SVD的公式,那我们需要知道什么?”
- 讨论:“除了PCA,你还听说过其他降维方法吗?”
通过“厨师与灶台”的类比,明确SVD的定位——它是PCA底层的计算工具,知道它叫什么、干什么用即可,不需要掌握公式。同时通过“除了PCA还有什么”的提问,为引入t-SNE做铺垫。
📖 二、 解决问题过程(一):SVD——PCA的幕后英雄(15分钟)
1. SVD的全称与定位
| 项目 | 内容 |
|---|---|
| 全称 | Singular Value Decomposition(奇异值分解) |
| 定位 | PCA的底层数学计算引擎 |
| 类比 | PCA是一道菜,SVD是灶台 |
| 关系 | 调用PCA时,sklearn在后台默认使用了SVD算法 |
2. PCA与SVD的关系(一句话说清)
PCA是降维的方法,SVD是计算PCA的数学工具。
详细解释:
- 当你调用
PCA(n_components=2).fit(X)时:- sklearn先在后台调用SVD算法,对数据矩阵进行分解。
- SVD计算出主成分的方向和每个主成分的方差比例。
- 返回给你PC1、PC2和
explained_variance_ratio_。
3. SVD的“存在感”在哪里?
在sklearn中,有一个专门的类叫 TruncatedSVD,它可以直接使用SVD进行降维:
但注意:在实际使用中,PCA 类是更常用、更完整的封装(它包含了数据中心化等预处理步骤)。TruncatedSVD 通常用于稀疏矩阵(如文本数据的词频矩阵)的降维。
4. 职高学生需要记住的三件事
| 序号 | 需要记住的 | 不需要深究的 |
|---|---|---|
| ① | SVD是PCA的底层计算工具 | SVD的数学公式 |
| ② | 调用PCA时,背后在用SVD | 奇异值是什么 |
| ③ | 知道 TruncatedSVD 的名字和用途 |
SVD的推导过程 |
⚠️ 记住:你不需要知道灶台怎么造,只需要知道菜是谁做的。
- 👨🏫 教师活动:
- 在黑板上画出“调用链”:
你的代码 → PCA → SVD(幕后计算)→ 返回主成分。 - 用“点菜”的比喻反复强调:“你点的是PCA,做菜的是SVD。”
- 提问:“如果我问你SVD的公式,你会不会?”(答案:不会,但我知道它和PCA的关系!)
- 在黑板上画出“调用链”:
- 🧑🎓 学生活动:
- 用自己的话复述:“SVD是______,PCA是______。”
- 讨论:“学习SVD的公式对职高学生来说有必要吗?为什么?”
彻底将SVD定位于“工具的工具”——不展开任何数学公式,只用“灶台做菜”的类比建立清晰的关系认知。明确告诉学生“需要记住什么”和“不需要深究什么”,降低学习焦虑。
📖 三、 解决问题过程(二):t-SNE——可视化专家(20分钟)
1. 为什么还需要t-SNE?——PCA的局限性
| PCA的优点 | PCA的局限 |
|---|---|
| 计算快速 | 只能发现线性结构(直线方向上的分散) |
| 可解释性强 | 对于非线性数据(如环形、螺旋),PCA表现不佳 |
| 适合建模前预处理 | 在复杂高维数据上,2D散点图可能看不出清晰结构 |
2. t-SNE的核心思想——“保持邻居关系”
- PCA的思路:找方差最大的方向(全局视角)。
- t-SNE的思路:保持样本之间的“相似性”关系——相似的样本在降维后依然靠近,不相似的样本在降维后依然远离(局部视角)。
生活类比 ——“朋友圈布局”:
想象你要把班级里30个同学的关系画在一张纸上(降维到2维):
- PCA的做法:把所有同学按“身高”和“体重”两个方向拉开。如果两个人的身高体重都差不多,在图上就靠近。
- t-SNE的做法:先问每个同学“你和谁是好朋友?”(相似性),然后把这些“好朋友关系”尽量保持到2D图上。如果A和B是好友,在图上就尽量靠近;A和C不是好友,在图上就尽量远离。
t-SNE特别擅长揭示数据中的“局部聚类结构”。
3. PCA vs t-SNE —— 核心区别
| 维度 | PCA | t-SNE |
|---|---|---|
| 核心理念 | 保留全局方差(数据分散程度) | 保留局部相似性(邻居关系) |
| 擅长发现 | 数据的主骨架(变化最大的方向) | 数据的聚类结构(哪些点是一伙的) |
| 计算速度 | 快速(几秒内完成) | 慢(大数据集可能需要几分钟到几小时) |
| 是否可解释 | ✅ 主成分可解释为综合指标 | ❌ 降维后的坐标没有业务含义 |
| 适用场景 | 建模前预处理、数据压缩 | 探索性可视化、聚类辅助分析 |
| 随机性 | 确定性的(相同数据→相同结果) | 随机性的(每次运行可能结果略有不同) |
4. t-SNE的使用警告
⚠️ t-SNE只用于可视化,不用于建模前预处理!
- t-SNE降维后的坐标没有物理意义,不能送入模型训练。
- t-SNE的结果具有随机性,每次运行可能略有不同。
- t-SNE计算非常慢,不适合大数据集(建议样本数<5000)。
- 👨🏫 教师活动:
- 展示两张并排的降维对比图——同一份手写数字数据,左边用PCA降到2维,右边用t-SNE降到2维。t-SNE图上不同数字的簇明显更清晰、分离更彻底。
- 指着右边t-SNE图提问:“这两个图上都是0-9的数字,哪个图更容易分辨不同的数字?”
- 引导学生回答:“t-SNE!因为每个数字都聚得更紧,不同数字之间的距离更大。”
- 🧑🎓 学生活动:
- 观察两张对比图,说出自己的观察:“PCA图上,有些数字混在一起;t-SNE图上,每个数字都是一小团。”
- 讨论:“既然t-SNE效果这么好,为什么不直接用t-SNE代替PCA?”
通过PCA vs t-SNE的对比图,让学生直观感受两种方法的差异。用“身高体重 vs 朋友圈关系”的类比,帮助学生理解“全局方差”与“局部相似性”的本质区别。同时明确强调t-SNE的使用边界——只能看图,不能送进模型。
💻 四、 解决问题过程(三):代码实战——PCA vs t-SNE 对比(25分钟)
1. 实验目标
在手写数字数据集上,分别用PCA和t-SNE将64维降到2维,对比两种方法的:
- 聚类效果(不同数字是否分得更开)
- 运行时间
2. 完整代码
3. 运行结果解读(典型输出)
| 指标 | PCA | t-SNE |
|---|---|---|
| 耗时 | 约0.05秒 | 约5-10秒 |
| 速度比 | 基准 | 约100-200倍慢 |
| 聚类效果 | 数字分散,边界模糊 | 数字各自聚成清晰的簇 |
| 用途定位 | 快速预处理 | 精细可视化 |
4. 核心结论
PCA:速度快,适合建模前预处理,但聚类效果一般。 t-SNE:可视化效果好,但速度极慢,只用于探索性分析。
- 👨🏫 教师活动:
- 运行对比代码,让学生同时看到运行时间和两张散点图。
- 指着两张图提问:“如果只能选一张图给老板看,选哪个?”
- 引导学生回答:“选t-SNE,因为看起来更清晰。”
- 追问:“如果老板说‘明天再给我20000个样本’,你还会用t-SNE吗?”
- 🧑🎓 学生活动:
- 在本地运行代码,观察两张图的差异和耗时对比。
- 记录自己电脑上的运行时间。
- 讨论:“在什么场景下,我们愿意接受t-SNE的慢速度?”
通过“并排对比”的设计,让学生在同一时间看到PCA和t-SNE在视觉效果和运行速度上的巨大差异。用“给老板看什么图”和“数据量大怎么办”两个问题,引导学生思考“选型决策”的实际逻辑。
📝 五、 解决问题过程(四):三种降维方法的全景对比与选型(15分钟)
1. 完整对比表格
| 维度 | PCA | SVD | t-SNE |
|---|---|---|---|
| 定位 | 降维方法 | 数学计算工具 | 降维方法 |
| 核心思想 | 找方差最大的方向 | 矩阵分解 | 保持局部相似性 |
| 与PCA关系 | — | 是PCA的计算引擎 | 独立方法,可与PCA互补 |
| 适用场景 | 建模前预处理、数据压缩 | 稀疏矩阵降维 | 探索性可视化 |
| 计算速度 | ⚡ 最快 | ⚡ 快 | 🐢 很慢 |
| 可解释性 | ✅ 主成分可解读 | ⚠️ 视应用场景 | ❌ 无业务含义 |
| 是否随机 | 确定性的 | 确定性的 | 随机性的 |
| 能否用于建模 | ✅ 可以 | ✅ 可以 | ❌ 只能看图! |
2. 选型决策流程图
flowchart TD
A["📊 拿到高维数据"] --> B{"你的目标是什么?"}
B -->|"建模前预处理<br>(压缩特征加速训练)"| C["✅ 选择 PCA"]
C --> C1["速度快、可解释、可送模型"]
B -->|"探索性可视化<br>(想看清数据分组结构)"| D{"数据量多大?"}
D -->|"≤ 5000 样本"| E["✅ 选择 t-SNE"]
E --> E1["可视化效果好、聚类清晰"]
D -->|"> 5000 样本"| F["⚠️ t-SNE太慢 → 先用PCA降维到50维<br>再用t-SNE降到2维(两步降维)"]
B -->|"处理稀疏矩阵<br>(文本词频数据)"| G["✅ 选择 TruncatedSVD"]
G --> G1["专门针对稀疏矩阵优化"]</pre>
3. 职高学生需要记住的核心结论
| 场景 | 推荐方法 | 一句话理由 |
|---|---|---|
| 要训练模型,特征太多跑不动 | PCA | 快,可解释,可送进模型 |
| 要画图给老板看数据分组 | t-SNE(样本<5000时) | 视觉效果最好,簇清晰 |
| 数据量超大(数万样本) | PCA + t-SNE 两步降维 | 先PCA降维降速,再t-SNE画图 |
| 处理文本词频矩阵 | TruncatedSVD | 专门处理稀疏矩阵 |
4. 本系列三节课知识全景回顾
| 课次 | 核心主题 | 关键收获 |
|---|---|---|
| 1601 | PCA思想与几何直觉 | 降维是“探路者”——先降维看结构,再选方法深入分析 |
| 1602 | PCA数学直觉与信息保留 | 投影、碎石图、累计曲线——科学选择降维维度 |
| 1603 | SVD与降维方法全景 | SVD是幕后英雄,t-SNE是可视化专家,三种方法各有所长 |
- 👨🏫 教师活动:
- 展示三种方法的对比表格,逐行讲解。
- 运行“选型决策流程图”,和学生一起走一遍决策路径。
- 提问:“如果你的老板给你10万条数据,让你画个图看看数据结构,你会怎么做?”
- 🧑🎓 学生活动:
- 跟随决策流程图,回答每个分支问题。
- 讨论:“为什么t-SNE不能送进模型?PCA可以?”(答案:t-SNE的坐标没有业务含义且具有随机性)
通过“全景对比”和“选型决策流程”,帮助学生建立完整的降维方法论体系。明确告诉学生“在什么场景用什么方法”,将知识点转化为可操作的决策能力。
📝 六、 课堂小结(5分钟)
flowchart LR
root["📊 无监督学习(八):降维方法全景"]
subgraph C1["⚡ SVD(幕后英雄)"]
direction TB
A1["PCA的底层计算引擎"]
A2["知道名字和用途即可"]
A3["不推公式"]
end
subgraph C2["🎨 t-SNE(可视化专家)"]
direction TB
B1["保持局部相似性"]
B2["聚类效果最好"]
B3["计算极慢,只看图不建模"]
end
subgraph C3["📌 选型决策"]
direction TB
C1_node["建模预处理 → PCA"]
C2_node["画图探索 → t-SNE"]
C3_node["稀疏矩阵 → TruncatedSVD"]
end
subgraph C4["🎯 全景总结"]
direction TB
D1["PCA = 速度之王(建模预处理首选)"]
D2["SVD = 幕后英雄(PCA的计算器)"]
D3["t-SNE = 可视化专家(只看图不建模)"]
end
root --> C1
root --> C2
root --> C3
root --> C4
style root fill:#6a1b9a,stroke:#4a148c,color:#fff
style C1 fill:#f3e5f5,stroke:#9c27b0
style C2 fill:#e3f2fd,stroke:#2196f3
style C3 fill:#fff3e0,stroke:#ff9800
style C4 fill:#e8f5e9,stroke:#4caf50
✏️ 随堂检测与互动练习
📮 七、 课后作业与拓展
📋 八、 板书设计
本课用到的单词
| 单词 | 发音 | 专业英语解释(中文) |
|---|---|---|
| Singular Value Decomposition (SVD) | /ˈsɪŋɡjələr ˈvæljuː ˌdiːkəmpəˈzɪʃən/ | 奇异值分解。PCA背后的核心数学计算工具,用于矩阵分解和降维。 |
| t-SNE | /tiː sniː/ | t分布随机邻域嵌入。一种专注于可视化的降维方法,保持局部相似性。 |
| Manifold | /ˈmænɪfoʊld/ | 流形。t-SNE所属的“流形学习”方法家族,用于发现数据中的非线性结构。 |
| Perplexity | /pərˈpleksəti/ | 困惑度。t-SNE中的重要参数,控制每个点考虑的邻居数量。 |
| Sparse Matrix | /spɑːrs ˈmeɪtrɪks/ | 稀疏矩阵。大部分元素为0的矩阵,常见于文本词频数据,TruncatedSVD专门处理此类数据。 |
| Truncated SVD | /ˈtrʌŋkeɪtɪd ˌes viː ˈdiː/ | 截断奇异值分解。SVD的变体,专门用于稀疏矩阵的降维。 |
| Dimensionality Reduction | /daɪˌmenʃəˈnæləti rɪˈdʌkʃən/ | 降维。本系列三节课的核心主题。 |