6-4-1降维与PCA基础
📌 一、 课程导入(8分钟)
🔄 回顾特征处理流水线
在之前的课程中,我们完成了特征处理的"前半程":
- 特征缩放(StandardScaler)→ 让不同尺度的特征公平比较
- 特征编码(OneHotEncoder)→ 让文字变成数字
- 特征构造(PolynomialFeatures)→ 创造新特征捕捉非线性关系
今天我们要完成特征处理的最后一环——当特征太多时,如何帮数据"瘦身"。
情景模拟:体检报告太详细,医生看花眼了!
假设你去医院体检,机器给你测了100个指标(身高、体重、血压、心率、血糖、血脂、尿酸……)。这100个指标就是100维特征。
问题来了:
- 计算太慢:模型处理100维数据,计算距离要算100次减法,电脑卡顿。
- 过拟合风险:很多指标其实是重复的(比如"收缩压"和"舒张压"高度相关),冗余特征会让模型学歪。
- 没法画图:人类只能理解3维以内的空间,100维的数据你看不到全貌。
引出解决方案: 聪明的医生不会看全部100项,而是提取几个综合指标,比如**“心血管健康指数”(由血压、血脂合并而来)。这个合并过程就是降维(Dimensionality Reduction)**。
💡 核心提问:
上节课我们用 PolynomialFeatures 把特征从10个变成了65个(特征变多)。今天我们要学的是它的"反向操作"——当特征多到跑不动时,我们把它压缩回去。这就是降维。
📌 本节课定位:
在特征处理章节中,降维是特征工程的最后一环——数据整理好了,但"太胖了",我们帮它"瘦个身"再送进模型。特征处理流水线的最后一步就是:降维压缩 → 准备建模。
- 👨🏫 教师活动:
- 在黑板上画出"特征处理流水线"的全景图:
原始数据 → 清洗 → 缩放 → 编码 → 构造 → 降维 → 模型,标注本节课的位置。 - 展示一张1000×1000像素的图片,再展示压缩成100×100的缩略图。提问:“缩略图虽然模糊了,但你是不是还能认出它是猫还是狗?”
- 引导学生回答:“能!关键信息保留了。”
- 在黑板上画出"特征处理流水线"的全景图:
- 🧑🎓 学生活动:
- 观察图片,感受"降维保信息"的直观含义。
- 讨论:“生活中还有哪些’压缩但不丢失关键信息’的例子?"(比如:音乐MP3压缩、视频H.264压缩)
用"体检报告"这种信息过载的场景,让学生立刻共情"维度灾难"的痛点。再用"图片压缩"的常识,瞬间建立"降维≠瞎删数据,而是提炼精华"的正确认知。更重要的是,通过"特征处理流水线"全景图,让学生明确本节课在整体知识框架中的位置——这是特征处理的收官之战。
📖 二、 解决问题过程(一):什么是PCA(核心概念,15分钟)
1. 核心思想:找一条"最佳投影线"
想象桌子上撒了一把长条形的豆子(二维数据:X轴和Y轴)。
- 原始坐标:你要用(x, y)两个数描述每颗豆子的位置。
- 降维目标:只用一个数(一维)描述每颗豆子的位置。
怎么做?
- ❌ 错误做法:只取X坐标,抛弃Y坐标(丢掉了豆子在Y方向的高低差异)。
- ✅ PCA做法:画一条穿过豆子群中间、且豆子们在这条线上的投影分散得最开的斜线。
2. 关键术语(只讲意象,不讲公式)
| 术语 | 含义 | 生活类比 |
|---|---|---|
| 主成分(Principal Component) | 数据"散得最开"的方向 | 豆子群的长轴方向 |
| 第一主成分(PC1) | 最分散的方向(最重要的新特征) | 长轴 |
| 第二主成分(PC2) | 与PC1垂直、次分散的方向 | 短轴 |
| 方差(Variance) | 数据在某个方向上的"分散程度" | 豆子沿某个方向拉开多远 |
3. 为什么"方差越大=信息越多"?(核心难点,重点讲)
想象你要用一张照片认人:
- 方差小的情况:照片里所有人挤在画面正中央的一小块区域。你很难分清谁是谁——这张照片的区分度低,对你来说信息量很少。
- 方差大的情况:照片里有人站在左边、有人站在右边、有人站在上面。你能更清楚地分辨每个人的位置——这张照片的区分度高,信息量更丰富。
PCA找的正是那个"最能拉开人与人距离"的方向——也就是方差最大的方向。
4. 降维的威力(三个字:快、省、清)
| 作用 | 解释 |
|---|---|
| 加速计算 | 100维降到2维,计算距离快几十倍 |
| 节省内存 | 数据体积缩小,训练更快 |
| 便于可视化 | 降到2维或3维,就能画散点图观察数据族群 |
5. ⚠️ 降维的代价(必须强调!)
降维不是免费的午餐。当你把"花瓣长度"和"花瓣宽度"合并成一个"主成分"后,这个新特征虽然能代表两者的综合信息,但你无法再说"它具体代表什么业务含义"。
- 物理意义丢失:主成分是原始特征的线性组合,不再是某个具体的、可命名的指标。
- 业务解释困难:在风控、医疗等需要解释性的场景中,使用PCA要格外慎重。
- 适用场景区分:
- ✅ 适合PCA:图像识别、推荐系统、信号处理(只关心预测结果)
- ❌ 不适合PCA:医疗诊断、金融风控、法律合规(需要解释"为什么")
- 👨🏫 教师活动:
- 在黑板上画一个椭圆形的点云图,用箭头画出长轴(第一主成分)和短轴(第二主成分)。
- 提问:“如果只保留一个数,你会选择把点投影到长轴上还是短轴上?”
- 引导学生回答:“长轴!因为豆子在长轴上分散得更开,区分度更高。”
- 在黑板另一侧画出"方差小"和"方差大"的对比示意图(同样是5个点,一组挤在一起,一组散得很开),让学生直观感受"分散→区分度高→信息量大"。
- 🧑🎓 学生活动:
- 在纸上画一个斜着的椭圆,尝试画出那条"能最大拉开差距"的直线。
- 讨论:“如果主成分失去了业务含义,在什么场景下我们还能放心使用PCA?”
彻底砍掉PCA的数学推导(协方差矩阵、特征向量),只保留"找方差最大的投影方向"这一个核心意象。通过"照片认人"的类比,将"方差=信息量"这一反直觉的概念转化为可感知的经验。同时明确告知降维的代价,帮助学生建立"工具选择取决于场景"的工程思维。
💻 三、 解决问题过程(二):代码实战——鸢尾花数据4维降2维(20分钟)
1. 经典案例:鸢尾花(Iris)数据集
- 原始特征:花萼长度、花萼宽度、花瓣长度、花瓣宽度(4维)。
- 目标:将其降维到2维,然后用散点图画出来,看看三种鸢尾花是否还能区分开。
- 定位:这是特征处理流水线的最后一站——压缩完就可以送进模型了!
2. ⚠️ 动手前的重要提醒——标准化
PCA找的是"方差最大的方向"。如果特征的量纲不同(比如一个特征范围是0
1,另一个是010000),范围大的特征会天然主导主成分的方向。本节课使用的鸢尾花数据四个特征量纲接近(都是厘米级),为了聚焦PCA本身,我们暂时省略标准化。
但在真实项目中,PCA前必接StandardScaler!这是铁律。后续课程的项目实战中我们会反复练习。
3. 完整代码(三步走)
4. 运行结果解读(重要!)
- 散点图上,三种花各自聚成一团,界限清晰——这说明降维没有破坏分类能力!
- 累计保留信息通常能达到95%+,说明2个新特征就能代表原来4个特征95%的信息。
- 这就是特征处理流水线的威力:数据瘦身后依然保持区分度,后续模型训练会快得多!
5. 自动确定维度(省心小技巧)
如果不想指定具体维度,想让程序自动选择能保留95%信息的维度数:
- 👨🏫 教师活动:
- 带学生逐行运行代码,重点观察
explained_variance_ratio_的输出。 - 指着输出的百分比解释:“第一主成分已经包含了92%的信息!这说明鸢尾花的4个特征之间高度冗余。”
- 修改
n_components=3,让学生观察图形从2D变3D(用mpl_toolkits.mplot3d展示)。 - 强调:“PCA是特征处理的最后一环。数据已经准备好了,下一节课我们就要开始建模了!”
- 带学生逐行运行代码,重点观察
- 🧑🎓 学生活动:
- 自己运行代码,观察三种颜色的点在二维平面上的分布。
- 尝试将
n_components改为1,观察散点图变成一条直线上的点,讨论:“1维还能分清三种花吗?”
鸢尾花是机器学习的"Hello World",用它做PCA可视化效果极佳。通过"标准化提醒",将本节课与"特征缩放"知识串联。通过explained_variance_ratio_的百分比输出,用数据说话,让学生直观感受"降维保信息"的威力。同时强化"特征处理流水线"的整体意识。
✍️ 四、 解决问题过程(三):课堂练习——手写数字压缩(20分钟)
📝 五、 课堂小结(5分钟)
flowchart LR
root["📉 特征处理(五):降维与PCA"]
subgraph C1["📖 特征处理流水线"]
direction TB
A1["清洗 → 缩放 → 编码 → 构造 → 降维"]
A2["本节课:特征工程的收官之战"]
end
subgraph C2["🧠 PCA核心思想"]
direction TB
B1["找方差最大的投影方向"]
B2["第一主成分 → 最分散"]
B3["第二主成分 → 次分散"]
end
subgraph C3["💻 代码实战"]
direction TB
C1_node["PCA(n_components=2)"]
C2_node["fit_transform(X)"]
C3_node["explained_variance_ratio_"]
end
subgraph C4["⚖️ 降维的代价"]
direction TB
D1["主成分失去业务含义"]
D2["适用场景:图像/推荐系统"]
D3["不适用:医疗/风控(需解释性)"]
end
root --> C1
root --> C2
root --> C3
root --> C4
style root fill:#4b6cb7,stroke:#253b6e,color:#fff
style C1 fill:#fff8e1,stroke:#ffb300
style C2 fill:#e3f2fd,stroke:#2196f3
style C3 fill:#e8f5e9,stroke:#4caf50
style C4 fill:#ffebee,stroke:#ef5350
✏️ 随堂检测与互动练习
📮 六、 课后作业与拓展
📋 七、 板书设计
本课用到的单词
| 单词 | 发音 | 专业英语解释(中文) |
|---|---|---|
| Dimensionality Reduction | /daɪˌmenʃəˈnæləti rɪˈdʌkʃən/ | 降维。减少数据集特征数量的过程。 |
| PCA (Principal Component Analysis) | /ˈprɪnsəpəl kəmˈpoʊnənt əˈnæləsɪs/ | 主成分分析。一种通过将数据投影到方差最大方向来实现降维的算法。 |
| Variance | /ˈveriəns/ | 方差。衡量数据分散程度的统计量,在PCA中代表"信息量"。 |
| Principal Component | /ˈprɪnsəpəl kəmˈpoʊnənt/ | 主成分。PCA降维后生成的新的综合特征。 |
| Explained Variance Ratio | /ɪkˈspleɪnd ˈveriəns ˈreɪʃioʊ/ | 解释方差比例。每个主成分所保留的原始数据信息百分比。 |
| Curse of Dimensionality | /kɜːrs əv daɪˌmenʃəˈnæləti/ | 维度灾难。高维数据带来的计算、存储和过拟合问题。 |
| Feature Extraction | /ˈfiːtʃər ɪkˈstrækʃən/ | 特征提取。从原始特征中生成新特征的过程,PCA属于此范畴。 |
| `` |