8-1 线性回归(Linear Regression)
📌 一、 课程导入:我们如何做预测?(10 分钟)
在现实生活中,我们经常需要对未来的事物做出预测:
- 场景 A:根据今天的邮件标题和正文,判断它是不是“垃圾邮件”。
- 场景 B:根据房屋的面积(平方米),预测它的“二手售价”(万元)。
这两个问题的预测结果有什么本质不同?
💡 核心概念:分类 vs 回归
| 对比维度 | 回归(Regression) | 分类(Classification) |
|---|---|---|
| 预测目标 | 连续数值(Continuous Value) | 离散标签(Discrete Label) |
| 回答问题 | “是多少?”(如:房价、温度、销量) | “是什么?”(如:垃圾/正常、猫/狗) |
| 核心逻辑 | 寻找数据之间的数量关系规律线 | 划出区分不同类别的分类边界线 |
- 👨🏫 教师活动:
- 抛出现实生活中的两个预测场景,引导学生对比思考。
- 板书并对比“分类”与“回归”的核心区别。
- 🧑🎓 学生活动:
- 思考并回答两个场景输出结果的区别(一个是类别,一个是数字)。
- 举出生活中其他属于“回归任务”的例子(如股票价格、明日气温预测)。
通过贴近生活的实际问题切入,消除机器学习算法的抽象感;通过对比强化理解,帮助学生迅速建立对“回归任务”的本质认知[cite: 2]。
📖 二、 解决问题过程(一):线性回归模型原理(25 分钟)
1. 什么是线性回归?
线性回归就是通过已知的数据,画一条“最拟合”的线,来表达变量之间的趋势。
初中数学中预测房价(假设只有“面积”一个特征):
$$y = kx + b$$在机器学习领域,我们换了一套“符号马甲”:
$$y = wx + b$$- $w$(Weight / 权重):表示特征对结果的影响权重(斜率)。
- $b$(Bias / 偏置):模型的基准线(截距)。
2. 多特征场景(多元线性回归)
- 单特征:$y = wx + b$ (一维空间里的一条直线)
- 双特征:$y = w_1x_1 + w_2x_2 + b$ (三维空间里的一个平整平面)
- 多特征:$y = w_1x_1 + w_2x_2 + ... + w_nx_n + b$ (高维空间里的超平面)
3. 计算机是如何“寻找”最优直线的?
计算机刚开始并不知道 $w$ 和 $b$ 的真实值,它会随机假设一组参数,然后通过以下步骤迭代学习:
步骤一:衡量误差——均方误差(MSE)
$$MSE = \frac{1}{n}\sum_{i=1}^{n}(y_i - \hat{y}_i)^2$$- $y_i$:实际真实值 | $\hat{y}_i$:模型预测值
- 为什么要取平方?
- 消除正负抵消。
- 放大较大误差(误差越大,平方后惩罚越重)。
- 函数平滑,处处可导,利于数学优化。
步骤二:调整参数——梯度下降法(Gradient Descent)
好比一个人被蒙上双眼停在半山腰,他用脚感受脚下坡度最陡的方向(计算梯度),然后向山谷(误差最小点)迈出一步(更新参数),一步步走到山谷底部。
- 👨🏫 教师活动:
- 将初中 $y=kx+b$ 迁移讲解为机器学习的 $y=wx+b$,降低心理门槛。
- 用“蒙眼下山”的比喻形象化讲解梯度下降法与 MSE 损失函数。
- 🧑🎓 学生活动:
- 理解并记录 $w$(权重)与 $b$(偏置)的定义。
- 思考为什么 MSE 要用平方而不是绝对值。
将复杂的优化算法与损失函数转化为直观的几何画面与生活比喻,突破数学推导上的难点,建立算法直觉[cite: 2]。
💻 三、 解决问题过程(二):代码实践与工业实现(25 分钟)
1. 算法底层机制(Python 原生梯度下降模拟)
2. 工业级开发:使用 scikit-learn 快速拟合
在实际开发中,我们使用封装好的标准库:
- 👨🏫 教师活动:
- 在 Jupyter Notebook 中实时演示代码运行与参数“进化”过程。
- 重点强调
sklearn框架中数据矩阵格式X(必须是二维[n_samples, n_features])的常见踩坑点。
- 🧑🎓 学生活动:
- 在本地开发环境同步敲写并运行
sklearn代码。 - 尝试修改输入数据 $X, y$,观察输出的权重 $w$ 与偏置 $b$ 的变化。
通过“原生代码理解原理 + 标准库掌握工程应用”的双轨教学,既确保理论落地,又提升学生的实际代码动手能力。
✍️ 四、 解决问题过程(三):课堂实践与任务驱动(20 分钟)
📝 五、 课堂小结(5 分钟)
mindmap
root(("8-1 线性回归"))
核心概念
分类任务
"预测离散标签"
"回答:是什么"
回归任务
"预测连续数值"
"回答:是多少"
核心原理
数学模型
"一维:y = wx + b"
"多维:y = w1x1 + w2x2 + ... + b"
损失函数 MSE
"衡量预测误差"
"平方放大较大误差"
优化算法
"梯度下降法"
"沿着最陡方向更新 w 与 b"
工程实现
工具包
"scikit-learn"
标准三步法
"步骤 1:实例化 model = LinearRegression"
"步骤 2:训练 fit - X, y"
"步骤 3:预测 predict - X_new"
注意事项
"特征 X 必须是二维矩阵"