COMP5318 Week 03 线性回归与逻辑回归讲课总结
COMP5318 Week 03 讲课总结:线性回归与逻辑回归
课程:COMP5318/COMP4318 — Machine Learning and Data Mining,Semester 2 2026 讲师:Imdad Ullah(部分幻灯片由 Irena Koprinska 准备) 参考:Witten ch.4: 128–131;Müller & Guido ch.2: 28–31, 47–63;Geron ch.4: 132–137, 149–161
本讲的三条主线: 线性回归(预测连续值)→ 逻辑回归(预测类别概率)→ 过拟合与正则化(怎么让模型别学过头)。
一、线性回归基础
定位
| 任务类型 | 预测变量 | 方法 | |
|---|---|---|---|
| Linear Regression | 回归(regression) | 数值型 | 拟合一条直线 |
| Logistic Regression | 分类(classification) | 名义型(类别) | 拟合一条 sigmoid 曲线 |
逻辑回归是线性回归在分类任务上的扩展。两者在统计学里都非常常用。 老师举的例子:用经济指标预测澳元汇率、用广告支出预测公司销售额(回归);用体检指标预测两三年后的疾病风险(分类)。
自变量 vs 因变量:怎么分
| 变量 | 别名 | 判断问题 |
|---|---|---|
| 自变量 X(independent) | feature / predictor / input / explanatory | 「我用什么信息来做预测?」 |
| 因变量 Y(dependent) | target / predicted variable | 「我想预测什么?」 |
老师强调的方法论:从你要回答的问题出发去判断,而不是从数据本身。 课堂练习(答案):
| 问题 | X | Y |
|---|---|---|
| 房屋面积与房价的关系 | 房屋面积 | 房价 |
| 学习时长与考试成绩 | 学习时长 | 考试成绩 |
| 工作经验与薪水 | 工作经验 | 薪水 |
| 用电量随温度如何变化 | 温度 | 用电量 |
💡 有同学问「面积是不是导致了房价」,老师明确说:回归只看关系(relationship),不做因果讨论——有些情况有关系但并不存在因果。
二、麦片(cereals)例子——贯穿全讲
数据集:77 种早餐麦片,14 个特征(厂商、类型、卡路里、蛋白质、脂肪、钠、纤维、碳水、糖分、钾、维生素、每份重量、每份杯数、货架位置)。 类变量(数值):nutritional rating。 任务:用糖分预测营养评分。→ X = sugars,Y = rating。
直线方程与回归线
= 截距(intercept): 时 的值,即直线穿过 y 轴的位置 = 斜率(slope): 每增加 1 个单位, 变化多少 合称 regression coefficients,由数据学出来
麦片数据拟合结果:
斜率为负说明:糖分越高,营养评分越低。「负相关」正是回归想回答的三个问题之一(有没有关系 / 正还是负 / 有多强)。
预测与残差(residual)
预测糖分
数据集里确实有一款 1 g 糖的麦片 Cheerios,它的真实评分是 50.765。于是:
模型高估了约 6.2 分。
课堂上一个很好的问题:既然数据里已经有
的真实值 50.765,为什么不直接给这个值(误差就是 0)? 老师的回答: 1. 那不是预测,只是查表——你根本没做回归。 2. 模型只用了 1 个特征,另外 13 个特征被完全忽略。另一款同样含 1 g 糖但其他成分完全不同的麦片,评分不可能一样。
所以即使
值在训练集里出现过,也必须给出模型的预测值。
三、拟合优度:最小二乘法与三类误差
SSE 与最小二乘
能画的直线有无数条,哪条最好?答案是「离数据最近的那条」。
为什么要平方(老师明确讲了两个理由):
- 消除符号——某个麦片误差
、另一个 ,直接相加会互相抵消,得不到真实的总误差 - 重罚大误差——误差 2 → 平方 4;误差 10 → 平方 100。误差越大惩罚越不成比例地重
目标:找到使 SSE 最小的直线 → 最小二乘法(method of least squares),通过对 SSE 求导得到闭式解(推导见 Appendix 1,不考)。
三类误差(必须分清)
| 记号 | 定义 | 含义 |
|---|---|---|
| SSE(residual) | 模型未能解释的变异(实际 − 预测) | |
| SST(total) | 不用 X、直接拿均值当预测时的误差 = baseline(实际 − 均值) | |
| SSR(regression) | 回归所解释的变异(预测 − 均值) |
核心恒等式:
读法:总变异 = 被回归解释的部分 + 残差。
💡 SST 还有另一层含义:
—— 它只衡量 自身的变异性,完全不看 ,所以是天然的对照基准。
决定系数
| 取值 | 含义 |
|---|---|
| 完美拟合(SSE = 0) | |
| 拟合很差, |
为什么需要
:最小二乘能找到最好的那条线,但不告诉你这条线到底好不好。「SSE = 12」——这算大还是小? 才能回答。 ⚠️
用训练数据算,不是测试数据。
解读示例:
课堂追问:那 20% 能提高吗? 可以——加入更多特征。只用了糖分一个特征,所以有 20% 无法解释;纳入更多特征后可能到 85%、90%。 ⚠️ 但这正是后半节课的伏笔:特征加得越多,过拟合的风险越高。
与相关系数
| 含义 | |
|---|---|
| 强正线性关系 | |
| 强负线性关系 | |
| 几乎没有线性关系 |
考点:已知
只能算出 的大小,算不出符号——符号取决于关系的方向,必须另外知道。 💡 老师补充的直觉:若预测的是美元金额,
的量纲是「美元²」,而 是「美元」—— 更好解释。
MAE / MSE / RMSE
怎么选: - 大误差代价特别高 → 用 RMSE / MSE(平方项放大离群误差) - 想要直观的平均误差、不希望被极端值主导 → 用 MAE
⚠️ 这三个指标训练集和测试集上都能算——下一节判断过拟合正是靠比较两者。
四、多元回归(Multiple Regression)
| 特征数 | 几何形状 | |
|---|---|---|
| Simple / bivariate | 1 | 直线 |
| Multiple | >1 | 平面(2 特征)/ 超平面(>2 特征) |
麦片例子扩展为:
老师在这里留了个问题:把模型复杂化,是好事还是坏事? —— 这正是下半节课的主题。
五、课堂判断题(考点密集)
| # | 题目 | 答案 |
|---|---|---|
| 1 | 回归线最小化残差之和 | False —— 是残差平方和(SSE) |
| 2 | 若所有残差为 0,则 SST = SSR | True —— 残差为 0 ⇒ SSE = 0,由 SST = SSR + SSE 得 |
| 3 | 相关系数为负说明两变量负相关 | True |
| 4 | 已知 |
False ——
只能算大小,算不出符号( |
| 5 | SSR 是训练集上预测误差的总体度量 | False —— 那是
SSE;预测误差的度量是 SSE、 |
六、逻辑回归(Logistic Regression)
定位
- 用于分类任务,两个类别 0 和 1(有多分类的扩展)
- 拟合的是 logistic(sigmoid)曲线,假设特征与类变量之间的关系是非线性的
例子:按年龄预测疾病
20 位病人的 (age, disease) 数据。S 形曲线的解读:
| 年龄 | 患病概率 |
|---|---|
| 30 | 很低 |
| 50 | ≈ 0.2 |
| 55 | ≈ 0.5 |
| 70 | ≈ 0.9 |
注意 50 → 55 这一段:只差 5 岁,概率却从 0.2 跳到 0.5——这正是 sigmoid 曲线中段陡峭的特点。
💡 数据里的有趣现象:age=59 患病,age=60 却没患病。正因为数据本身不是确定性的,逻辑回归才不给「是/否」的断言,而是给概率。
线性 vs 逻辑:为什么选后者
对训练样本 11(age = 50,实际 disease = 0):
| 量 | 值 | 含义 |
|---|---|---|
| 实际值 | 0 | 该病人没有患病 |
| 线性回归输出 | ~0.35 | 只是一个数值拟合值,不是可靠的概率 |
| 逻辑回归输出 | ~0.15 | 患病概率的估计 = 15% |
老师的要点:线性回归给的是「预测值」,逻辑回归给的是「概率」——这是两种不同性质的东西。 逻辑回归同时给出两条信息:概率(15%)+ 类别(若需分类,则为 0)。
实际应用(老师讲的真实故事):澳洲的全套血检报告配合这类模型,可以告诉你「若保持当前生活方式,两三年后肾脏 / 心脏可能出现什么问题」——给的是概率,你据此可以提前干预。
⚠️ PPT 内部的一处不一致(自己算的时候会撞上): p31/32 从曲线上读出 age=50 → ~0.15,但 p34 用真正的系数算出来是 26%。二者对不上。 以公式计算的 26% 为准——p31/32 是对着图目测读数,只是示意。
Logistic 曲线方程
- 输出恒在 0 到 1 之间,解释为属于类别 1 的概率
= 类别 1 的概率, = 类别 0 的概率 - 用 maximum likelihood(最大似然) 求
必背对比: 线性回归 → 最小化平方误差 逻辑回归 → 最大化似然
什么叫「似然大」:
| 实际类别 | 预测 |
好坏 |
|---|---|---|
| 1 | 0.95 | 很好 |
| 1 | 0.10 | 差 |
| 0 | 0.05 | 很好 |
| 0 | 0.90 | 差 |
即:实际为 1 时把
算例(要会算)
拟合结果:
26% 患病,74% 不患病。
转成类别:阈值取 0.5 ⇒
阈值不一定是 0.5——要根据领域知识定。老师举例:金融风控可能会说「超过 0.3 就已经很危险了,我们承受不起这个损失」。
💡 课后练习(PPT 留的题,答案自己算):age = 45 →
, ≈ 20.4%,仍预测类别 0。
Log-odds:为什么它「还是线性模型」
由
其中
| 模型 | 等式 |
|---|---|
| 线性回归 | |
| 逻辑回归 |
关键理解:逻辑回归仍然是输入特征的线性组合,只不过这个线性组合决定的是 log-odds(对数几率),而不是直接的预测值。这就是它被叫作「回归」的原因。 (推导见 Appendix 2,不考。)
七、过拟合与欠拟合
Overfitting(过拟合)
定义:训练集误差很小,但测试集(新样本)误差很大。 分类器把训练样本「背下来」了,却没学会泛化。
数值信号:
两者差距巨大 → 过拟合的有力证据。
规则形式的例子:
| 规则 | 判断 |
|---|---|
if age>45, income>100K, children=3, divorced=no, postcode=2006 → buy_boat |
过拟合——太具体 |
if age>45, income>100K → buy_boat |
✅ 可能刚好——抓住了有用模式 |
if owns_house=yes → buy_boat |
欠拟合——太笼统 |
💡 老师补了一句公允的话:第一条规则不是「自动就更差」——现实中确实可能存在「有孩子且离婚才买船」的真实模式。关键是看它能不能泛化,而不是看它复杂。
过拟合的原因
数据方面:
- 训练数据有噪声
- 训练数据代表性不足——太少
- 训练数据与测试数据分布差异大
算法方面:不同算法易感程度不同,应对手段也不同——决策树 → 剪枝(pruning);神经网络 → 早停(early stopping)。
Underfitting(欠拟合)
模型太简单,抓不住数据的重要特征 ⇒ 训练集和测试集上表现都差。
模型复杂度与泛化的权衡
generalization performance = 测试集上的准确率
- 模型越复杂,在训练数据上通常预测越好
- 但过于复杂时,它会过度关注每一个单独的数据点,在新数据上泛化不了
- 中间存在一个 sweet spot(甜点),给出最好的测试准确率——这才是我们要找的模型
老师问:为什么复杂度上升时训练准确率升高、泛化能力反而下降? 答案(从模型设计角度):你纳入了越来越多的特征,模型只对那个特定数据集有效;面对新样本时找不到训练集里那种精确的组合,于是泛化失败。
必须记住的一句: sweet spot 不是训练准确率最高的模型,而是在验证/测试集上表现最好的模型。
三分数据集
| 集合 | 典型比例 | 用途 |
|---|---|---|
| Training | 70% | 建模 |
| Validation | 10~15% | 调超参数、选模型复杂度、选特征 |
| Test | 20~30% | 最终评估 |
为什么需要验证集:如果只有训练/测试两分,你在测试集上调完参数,测得的准确率就不再是对新数据的诚实估计。
八、正则化(Regularisation)
定义:显式地限制模型,以避免过拟合。
动机(老师的场景):医生可能要求「所有特征我都要看」。你不能删特征,但你能削弱某些特征的影响强度——这就是正则化。
麦片例子:用很多特征预测评分,原本的系数是 8、15、20、0.1、12……
- Ridge 之后:8 → 3.5,15 → 4.2 …… 变小但不为 0
- Lasso 之后:某些系数被压成恰好 0 ⇒ 该特征被彻底忽略
验证集在这里的作用:正则化的强度是在验证阶段调出来的,用来选择超参数、模型复杂度,有时还包括保留哪些特征。
Ridge Regression(L2)
也叫 Tikhonov
regularisation。预测公式与普通线性回归完全相同,但系数
(
系数小意味着:每个特征对结果的影响都很小、回归线的斜率很小。 理由:更受限(更不复杂)的模型更不容易过拟合。
关于那个加号(老师专门解释了):它是为了在两项之间做权衡(trade-off)——优化器把预测误差和模型复杂度都当作成本,两者都要压小。
超参数 的作用
| 效果 | |
|---|---|
| 增大 | 系数被压得更小 → 训练集表现通常下降,但测试集表现可能提升 |
| 减小 | 系数约束更松; |
课堂上的一个关键问答——当
很大(如 )时,回归线几乎变成一条斜率为 0 的水平线,正好在均值处。 这意味着什么? 无论你给什么输入,模型都返回同一个值(均值)——不管麦片多健康、成分多好,预测都一样。 所以 过大是危险的,必须权衡。
Lasso Regression(L1)
LASSO = Least Absolute Shrinkage and Selection Operator
用 L1 范数的后果:某些
Lasso 同时做两件事:正则化 + 自动特征选择。 特征更少 → 模型更简单 → 更易解释 → 泛化往往更好。
Ridge vs Lasso 对比
| Ridge | Lasso | |
|---|---|---|
| 范数 | L2(平方) | L1(绝对值) |
| 正则项 | ||
| 系数能否为 0 | 不能(只能趋近 0) | 能,恰好为 0 |
| 附加能力 | — | 自动特征选择 |
⚠️ 有同学问「为什么 L1 能到 0 而 L2 不能」,老师的回答是 "it's just mathematical variations"(只是数学形式不同),没有展开几何解释。 💡 想深究可以查 L1 的菱形约束域顶点落在坐标轴上,而 L2 的圆形约束域没有顶点——这是标准解释,但本课没讲,不是考点。
💡 老师的另一个直觉:L2 用平方,所以「误差 2 → 4,误差 10 → 100」,它告诉你某个系数的影响有多强;L1 只取绝对值。
💡 课堂问答精华
| 问题 | 老师的回答 |
|---|---|
| 既然 Lasso 会把系数压成 0,为什么不直接删掉这个特征? | 「一开始你并不知道该删哪个,是在验证阶段才知道的」——Lasso 是自动发现的 |
| 验证阶段调完参数后,需要重新训练吗? | 需要。因为你改了模型,必须重新训练,然后再测试 |
| 调参调的是什么? | 超参数 + 模型复杂度 + 有时还有特征 |
| 既然选误差最小的,能不能选第二、第三小的? | 那样反而更可能过拟合 |
九、考点重点
- X/Y 的判断法:「我用什么信息预测?」= X;「我想预测什么?」= Y。从问题出发,不从数据出发。
- 即使
在训练集里出现过,也要给预测值而非查表值——因为模型忽略了其余特征。 - SST = SSR + SSE;三者的定义要能默写:SSE(实际−预测)、SST(实际−均值)、SSR(预测−均值)。
,取值 0~1,在训练集上算。 SSE=0。 —— 已知 只能得到 的大小,得不到符号。- SSE 用平方的两个理由:消符号 + 重罚大误差。
- MAE / MSE / RMSE 的选择:大误差代价高 → RMSE/MSE;要直观、抗离群 → MAE。
- 五道判断题全部记住(尤其 1、4、5 都是 False)。
- 逻辑回归:
,会代入算( , ,age=50 → 26%);阈值 0.5 转类别。 - log-odds 形式
—— 逻辑回归仍是线性模型,只是线性的是 log-odds。 - 线性回归最小化平方误差;逻辑回归最大化似然。
- 过拟合 = 训练误差小 + 测试误差大;判据是 RMSE_train 与 RMSE_test 差距大。
- sweet spot 不是训练准确率最高处,而是验证/测试表现最好处。
- Ridge = L2 =
,系数趋近 0 但不为 0;Lasso = L1 = ,系数可恰好为 0 = 自动特征选择。 越大模型越受限; 极大 → 斜率趋 0 → 模型退化成「永远输出均值」。
十、课务提醒
- 作业(assignment) 将在第 3 周末或第 4 周发布 —— 老师建议提前组队,3~4 人最合适(1~2 人不建议)。
- 幻灯片会一直改到上课前,课后下载的才是最终版。
- 考试形式(学生提问):老师说会围绕基本概念,给场景让你判断该用什么方法;不要求背公式,若需要用到公式会考虑给 cheat sheet。逻辑回归系数的推导(Appendix 2)不考。
十一、本讲与前后的衔接
| Week | 内容 | 关键词 |
|---|---|---|
| 1–2 | 数据预处理、kNN | 相似度、特征选择 |
| 3 | 线性回归 / 逻辑回归 / 正则化 | 最小二乘、最大似然、L1/L2 |
| 4 | 朴素贝叶斯、模型评估 | 概率分类、交叉验证 |
老师在开场提到:回归也可以当作特征选择的预处理手段——当没有领域专家可以咨询时,先跑一次回归,用系数大小(尤其 Lasso 的零系数)来判断哪些特征值得保留。