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)

预测糖分 g 的麦片:

数据集里确实有一款 1 g 糖的麦片 Cheerios,它的真实评分是 50.765。于是:

模型高估了约 6.2 分

课堂上一个很好的问题:既然数据里已经有 的真实值 50.765,为什么不直接给这个值(误差就是 0)

老师的回答: 1. 那不是预测,只是查表——你根本没做回归。 2. 模型只用了 1 个特征,另外 13 个特征被完全忽略。另一款同样含 1 g 糖但其他成分完全不同的麦片,评分不可能一样。

所以即使 值在训练集里出现过,也必须给出模型的预测值


三、拟合优度:最小二乘法与三类误差

SSE 与最小二乘

能画的直线有无数条,哪条最好?答案是「离数据最近的那条」

为什么要平方(老师明确讲了两个理由):

  1. 消除符号——某个麦片误差 、另一个 ,直接相加会互相抵消,得不到真实的总误差
  2. 重罚大误差——误差 2 → 平方 4;误差 10 → 平方 100误差越大惩罚越不成比例地重

目标:找到使 SSE 最小的直线 → 最小二乘法(method of least squares),通过对 SSE 求导得到闭式解(推导见 Appendix 1,不考)。

三类误差(必须分清)

记号 定义 含义
SSE(residual) 模型未能解释的变异(实际 − 预测)
SST(total) 不用 X、直接拿均值当预测时的误差 = baseline(实际 − 均值)
SSR(regression) 回归所解释的变异(预测 − 均值)

核心恒等式

读法总变异 = 被回归解释的部分 + 残差

💡 SST 还有另一层含义 —— 它只衡量 自身的变异性,完全不看 ,所以是天然的对照基准。

决定系数

取值 含义
完美拟合(SSE = 0)
拟合很差 对预测 没有帮助(SSR = 0)

为什么需要 :最小二乘能找到最好的那条线,但不告诉你这条线到底好不好。「SSE = 12」——这算大还是小? 才能回答。

⚠️ 用训练数据算,不是测试数据。

解读示例营养评分 80% 的变异可由「与糖分的线性关系」解释,剩下 20% 本模型解释不了

课堂追问:那 20% 能提高吗? 可以——加入更多特征。只用了糖分一个特征,所以有 20% 无法解释;纳入更多特征后可能到 85%、90%。 ⚠️ 但这正是后半节课的伏笔:特征加得越多,过拟合的风险越高

与相关系数

含义
强正线性关系
强负线性关系
几乎没有线性关系

考点已知 只能算出 的大小,算不出符号——符号取决于关系的方向,必须另外知道。

💡 老师补充的直觉:若预测的是美元金额, 的量纲是「美元²」,而 是「美元」—— 更好解释

MAE / MSE / RMSE

怎么选: - 大误差代价特别高 → 用 RMSE / MSE(平方项放大离群误差) - 想要直观的平均误差、不希望被极端值主导 → 用 MAE

⚠️ 这三个指标训练集和测试集上都能算——下一节判断过拟合正是靠比较两者。


四、多元回归(Multiple Regression)

特征数 几何形状
Simple / bivariate 1 直线
Multiple >1 平面(2 特征)/ 超平面(>2 特征)

麦片例子扩展为: = sugars, = fiber, = rating —— 拟合出来的是一个平面 相应地称为 multiple coefficient of determination

老师在这里留了个问题:把模型复杂化,是好事还是坏事? —— 这正是下半节课的主题。


五、课堂判断题(考点密集)

# 题目 答案
1 回归线最小化残差之和 False —— 是残差平方和(SSE)
2 若所有残差为 0,则 SST = SSR True —— 残差为 0 ⇒ SSE = 0,由 SST = SSR + SSE 得
3 相关系数为负说明两变量负相关 True
4 已知 就能算出相关系数的值 False —— 只能算大小,算不出符号
5 SSR 是训练集上预测误差的总体度量 False —— 那是 SSE;预测误差的度量是 SSE、、MAE/MSE/RMSE

六、逻辑回归(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 时把 推向 1,实际为 0 时把 推向 0

算例(要会算)

拟合结果:。求 age = 50 的患病概率:

26% 患病,74% 不患病。

转成类别:阈值取 0.5 ⇒ 预测类别 0

阈值不一定是 0.5——要根据领域知识定。老师举例:金融风控可能会说「超过 0.3 就已经很危险了,我们承受不起这个损失」。

💡 课后练习(PPT 留的题,答案自己算):age = 45 → 20.4%,仍预测类别 0。

Log-odds:为什么它「还是线性模型」

可推出:

其中 称为类别 1 的 odds ratio(几率比),且

模型 等式
线性回归
逻辑回归

关键理解:逻辑回归仍然是输入特征的线性组合,只不过这个线性组合决定的是 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。预测公式与普通线性回归完全相同,但系数 的选取要额外满足一个约束:系数的绝对大小尽可能小(接近 0)

= 训练样本数, = 回归系数个数)

系数小意味着:每个特征对结果的影响都很小、回归线的斜率很小。 理由更受限(更不复杂)的模型更不容易过拟合。

关于那个加号(老师专门解释了):它是为了在两项之间做权衡(trade-off)——优化器把预测误差和模型复杂度都当作成本,两者都要压小。

超参数 的作用

效果
增大 系数被压得更小 → 训练集表现通常下降,但测试集表现可能提升
减小 系数约束更松; 极小时 Ridge 退化为普通线性回归

课堂上的一个关键问答——当 很大(如 )时,回归线几乎变成一条斜率为 0 的水平线,正好在均值处这意味着什么? 无论你给什么输入,模型都返回同一个值(均值)——不管麦片多健康、成分多好,预测都一样。 所以 过大是危险的,必须权衡。

Lasso Regression(L1)

LASSO = Least Absolute Shrinkage and Selection Operator

用 L1 范数的后果:某些 会变成恰好 0 ⇒ 这些特征被模型完全忽略这是一种自动特征选择(automatic feature selection)

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 是自动发现的
验证阶段调完参数后,需要重新训练吗? 需要。因为你改了模型,必须重新训练,然后再测试
调参调的是什么? 超参数 + 模型复杂度 + 有时还有特征
既然选误差最小的,能不能选第二、第三小的? 那样反而更可能过拟合

九、考点重点

  1. X/Y 的判断法:「我用什么信息预测?」= X;「我想预测什么?」= Y。从问题出发,不从数据出发。
  2. 即使 在训练集里出现过,也要给预测值而非查表值——因为模型忽略了其余特征。
  3. SST = SSR + SSE;三者的定义要能默写:SSE(实际−预测)、SST(实际−均值)、SSR(预测−均值)。
  4. ,取值 0~1,在训练集上算 SSE=0
  5. —— 已知 只能得到 的大小,得不到符号。
  6. SSE 用平方的两个理由:消符号 + 重罚大误差。
  7. MAE / MSE / RMSE 的选择:大误差代价高 → RMSE/MSE;要直观、抗离群 → MAE。
  8. 五道判断题全部记住(尤其 1、4、5 都是 False)。
  9. 逻辑回归,会代入算(,age=50 → 26%);阈值 0.5 转类别。
  10. log-odds 形式 —— 逻辑回归仍是线性模型,只是线性的是 log-odds。
  11. 线性回归最小化平方误差;逻辑回归最大化似然。
  12. 过拟合 = 训练误差小 + 测试误差大;判据是 RMSE_train 与 RMSE_test 差距大
  13. sweet spot 不是训练准确率最高处,而是验证/测试表现最好处。
  14. Ridge = L2 = ,系数趋近 0 但不为 0;Lasso = L1 = ,系数可恰好为 0 = 自动特征选择。
  15. 越大模型越受限 极大 → 斜率趋 0 → 模型退化成「永远输出均值」。

十、课务提醒

  • 作业(assignment) 将在第 3 周末或第 4 周发布 —— 老师建议提前组队3~4 人最合适(1~2 人不建议)。
  • 幻灯片会一直改到上课前课后下载的才是最终版
  • 考试形式(学生提问):老师说会围绕基本概念给场景让你判断该用什么方法不要求背公式,若需要用到公式会考虑给 cheat sheet。逻辑回归系数的推导(Appendix 2)不考。

十一、本讲与前后的衔接

Week 内容 关键词
1–2 数据预处理、kNN 相似度、特征选择
3 线性回归 / 逻辑回归 / 正则化 最小二乘、最大似然、L1/L2
4 朴素贝叶斯、模型评估 概率分类、交叉验证

老师在开场提到:回归也可以当作特征选择的预处理手段——当没有领域专家可以咨询时,先跑一次回归,用系数大小(尤其 Lasso 的零系数)来判断哪些特征值得保留