知识点深化 · 线性回归
线性回归:最小二乘与梯度下降入门
你已经会解方程了——y=wx+b 就是一条直线。线性回归做的事:给一堆散点,找一条让残差平方和最小的直线。它是机器学习最基础的模型,也是理解后面所有模型的起点。这一页把最小二乘解析解(一步算出)和梯度下降数值解(慢慢下山)两条路都讲透。
① 小白第一课怎么学(4 步走,约 60 分钟)
别急着调库,先按这四步建立直觉:
1看图建立直觉(10 分钟)
读第②③部分:看散点图和那条"最贴合的直线",搞懂"残差=点到线的竖直距离"。
2记公式与推导(15 分钟)
读第④部分:损失函数 MSE、最小二乘解析解 θ=(XᵀX)⁻¹Xᵀy、梯度下降更新式。
3手算例题(20 分钟)
精读第⑤部分 3 道例题,跟着算一遍斜率和截距。
4刷题+纠错(15 分钟)
做第⑦⑩部分,错题回到第⑥部分高频错误里找原因。
本课小目标学完你要能:① 说出线性回归在"找什么";② 手算两个点的回归直线 w、b;③ 解释梯度下降每步在干嘛、学习率太大太小会怎样。
② 一图看懂:线性回归全地图
读法:中心是"线性回归",分四大块——模型长什么样、用什么损失、怎么求解(解析解 vs 数值解);下方是应用场景和易错点。
③ 本质直觉:给一堆散点配一条"最公平"的直线
想象你在黑板上撒了一把点(x=学习时长,y=考试分数),现在要拉一条直线从这些点中间穿过去。
每条直线都有偏差:每个点到直线有一段竖直距离(残差 e = 真实 y − 预测 y)。有的点在直线上方,有的在下方。
"最贴合"的标准是什么?不是让点都压在线上(做不到),而是让所有残差的平方加起来最小。平方是为了:① 正负残差不抵消;② 大偏差惩罚更重。
两条求解路线:① 最小二乘——把损失函数对 w、b 求导令其为 0,一步解出最优直线(公式法);② 梯度下降——先瞎猜一条线,再沿着"下坡方向"一点点挪,挪到最低点(迭代法)。
为什么是"平方"而不是绝对值绝对值在 0 点不可导;平方损失处处可导,求导后是二次函数有唯一最小值,解起来干净。这就是"最小二乘"名字的由来。
④ 完整体系与公式表
模型与假设
| 项目 | 内容 | 说明 |
| 模型 | hθ(x) = θ₀ + θ₁x₁ + θ₂x₂ + … | 线性组合,θ₀ 是偏置 b |
| 输出 | 连续实数 | 不是分类概率,是数值 |
| 假设 | y = h(x) + ε | 误差 ε 服从均值 0 的正态分布 |
| 向量形式 | h(x) = θᵀx(含 x₀=1) | 把偏置并入 θ |
损失函数(MSE)
均方误差损失
J(θ) = (1/2n) · Σi=1..n ( h(x(i)) − y(i) )²
前面乘 1/2 是为求导后系数约掉。
求解路线一:最小二乘解析解
正规方程(Normal Equation)
θ = (XᵀX)−1 Xᵀ y
一维情形(只有一个特征 x)手算公式:
单变量回归手算
w = Σ(xi−x̄)(yi−ȳ) / Σ(xi−x̄)² b = ȳ − w·x̄
求解路线二:梯度下降更新式
批量梯度下降(BGD)
θj ← θj − α · (1/n) · Σi(h(x(i))−y(i))·xj(i)
两种解法对照
| 对比项 | 最小二乘解析解 | 梯度下降数值解 |
| 是否迭代 | 一步算出 | 多轮迭代逼近 |
| 大数据量 | 慢(要算矩阵逆) | 快(可小批量) |
| 学习率 | 不需要 | 关键超参,需调 |
Python 代码片段
from sklearn.linear_model import LinearRegression
model = LinearRegression().fit(X_train, y_train) → 得 w、b
⑤ 用法场景与典型例题
例1(基础·两点回归)已知数据点 (1,2)、(2,4)、(3,5),求回归直线 y=wx+b
用单变量手算公式,先算均值。
① x̄=(1+2+3)/3=2,ȳ=(2+4+5)/3=11/3≈3.667。
② 分子 Σ(xi−x̄)(yi−ȳ) = (−1)(−1.667)+(0)(0.333)+(1)(1.333) = 1.667+0+1.333 = 3。
③ 分母 Σ(xi−x̄)² = (−1)²+0²+1² = 2。
④ w = 3/2 = 1.5;b = ȳ − w·x̄ = 3.667 − 1.5×2 = 0.667。
答案:y = 1.5x + 0.667。
例2(损失函数)接上题,计算 MSE
预测值减真实值,平方再平均。
① x=1:ŷ=1.5+0.667=2.167,残差=2−2.167=−0.167,平方=0.028。
② x=2:ŷ=3.667,残差=4−3.667=0.333,平方=0.111。
③ x=3:ŷ=5.167,残差=5−5.167=−0.167,平方=0.028。
④ MSE = (0.028+0.111+0.028)/3 = 0.167/3 ≈ 0.056。
答案:MSE ≈ 0.056,模型拟合得很好。
例3(梯度下降一步)设当前 w=0, b=0,学习率 α=0.1,数据 (x=2, y=4)。更新一次 w、b
用梯度下降更新式,先算当前预测和误差。
① 当前预测 h = w·x+b = 0。
② 误差 h−y = 0−4 = −4。
③ ∂J/∂w = (1/n)(h−y)·x = (−4)×2 = −8(单样本 n=1)。
④ ∂J/∂b = (h−y) = −4。
⑤ w ← w − α·∂J/∂w = 0 − 0.1×(−8) = 0.8;b ← 0 − 0.1×(−4) = 0.4。
答案:更新后 w=0.8, b=0.4,预测值从 0 往 4 的方向挪了一步。
梯度下降的直觉每次更新让预测往真实值方向走一步。误差为负(预测偏小),梯度为负,减去负梯度 = 加正数,w、b 往增大预测方向调。这就是"下山"。
⑥ 高频错误诊断(4 条)
错误 1:把线性回归当分类用线性回归输出连续数值(房价、温度),不是"是猫/不是猫"的概率。要分类用逻辑回归。
错误 2:特征不标准化就梯度下降x₁ 是面积(几千)、x₂ 是房间数(个位数),损失被 x₁ 主导,走得慢又歪。务必先标准化。
错误 3:学习率太大导致发散α 太大时每步跨过最低点,loss 越跳越大变 NaN。对策:α 从 0.01 试,不降就减半。
错误 4:用回归直线做远距离外推回归直线只在数据范围内可信。数据是 10~30 岁身高,预测 80 岁身高就是瞎扯——关系早非线性了。
⑦ 考点真题演练(4 题)
考点分布
| 考法 | 出题形式 | 应对 |
| 最小二乘手算 | 给 3~5 个点求 w、b | 套公式 w=Σ(x−x̄)(y−ȳ)/Σ(x−x̄)² |
| 损失函数含义 | 问 MSE 衡量什么 | 残差平方和的平均,越小拟合越好 |
| 梯度下降 | 给当前参数和 α,更新一步 | 先算预测和误差,再套更新式 |
| 解析解 vs 数值解 | 大数据选哪种 | 大数据选梯度下降,小数据可正规方程 |
真题基础1. 线性回归最小二乘法优化的目标是最小化什么?
真题中档2. 用梯度下降训练线性回归时,学习率 α 设置过大,最可能出现什么现象?
真题中档3. 正规方程 θ=(XᵀX)⁻¹Xᵀy 的主要缺点是?
真题拔高4. 数据点 (0,1)、(1,3)、(2,5),回归直线 y=wx+b 中的 w 最接近?
⑧ 必背公式卡
模型:h(x) = wx + b 一条直线
损失:J = (1/2n)Σ(h(xi)−yi)² 残差平方和
解析解:θ = (XᵀX)⁻¹Xᵀy 一步到位
手算斜率:w = Σ(xi−x̄)(yi−ȳ) / Σ(xi−x̄)² 协方差除以方差
截距:b = ȳ − w·x̄ 直线必过 (x̄, ȳ)
梯度下降:θj ← θj − α·(1/n)Σ(h−y)·xj 沿下坡走一步
铁律:特征先标准化,α 从小往大试 不标准化必翻车
⑨ 应用输出:用线性回归建模房价
建模场景:根据房屋面积预测房价
已知某小区成交数据:面积 x(㎡)和房价 y(万元)。我们想建模型:给面积,预测房价。
① 选模型:房价随面积大致呈线性增长,用 h(x)=wx+b。
② 准备数据:收集 50 条成交记录,划分训练集 40 条、测试集 10 条。
③ 训练:调用 LinearRegression().fit(X_train, y_train),得到 w≈0.8(每平米涨 0.8 万)、b≈10(基础价 10 万)。
④ 预测:一套 90㎡ 的房子,预测价 = 0.8×90+10 = 82 万。
⑤ 评估:测试集 MSE=25(万元²),预测误差约 ±5 万,可接受。
口述训练思路合上课本说一遍:"先假设房价是面积的线性函数,用最小二乘让残差平方和最小,解出 w 和 b;新面积代进去就出预测值;只在数据范围内用。"
⑩ 分层练习 18 题(基础 6 + 中档 6 + 拔高 6)
▍基础 6 题
基础1线性回归的输出是连续值还是离散类别?
连续值。回归预测数值(房价、温度),分类预测类别。
基础2损失函数 MSE 衡量的是什么?
预测值与真实值的平均平方偏差,越小拟合越好。
基础3线性回归模型 h(x)=wx+b 中,b 叫什么?
偏置/截距,直线在 y 轴上的截距。
基础4最小二乘让什么最小?
残差平方和(预测减真实,平方后求和)。
基础5梯度下降中 α 叫什么?
学习率,每一步走多大。
基础6正规方程的公式是?
θ=(XᵀX)⁻¹Xᵀy。
▍中档 6 题
中档7数据 (1,3)、(2,5),求 w。
x̄=1.5, ȳ=4;分子=(−0.5)(−1)+(0.5)(1)=1;分母=0.25+0.25=0.5;w=2。
中档8上题求 b。
b=ȳ−w·x̄=4−2×1.5=1。直线 y=2x+1。
中档9为什么特征要先标准化?
不同量纲会让损失函数"扁长",梯度下降走得慢且震荡;标准化后各特征尺度一致,收敛快。
中档10批量梯度下降每更新一次用多少数据?
全部训练数据(Batch GD)。计算准但慢。
中档11预测值 ŷ=8,真实值 y=10,残差和平方残差各是多少?
残差=ŷ−y=−2;平方残差=4。
中档12解析解和梯度下降,哪个不需要迭代?
最小二乘解析解一步算出;梯度下降要多轮。
▍拔高 6 题
拔高13当前 w=1, b=1,样本 (x=3, y=10),α=0.1,更新一次 w。
h=1×3+1=4;误差 h−y=−6;∂J/∂w=(−6)×3=−18;w←1−0.1×(−18)=2.8。
拔高14上题更新后 b。
∂J/∂b=−6;b←1−0.1×(−6)=1.6。
拔高15XᵀX 不可逆时(特征线性相关),正规方程会怎样?
矩阵不可逆,无法求逆,正规方程失效。此时应去掉冗余特征或改用梯度下降。
拔高16训练误差很低但测试误差很高,是什么问题?怎么缓解?
过拟合。对策:增加数据、减少特征、加正则(L1/L2)。
拔高17R²=0.85 说明什么?
模型解释了 85% 的方差,拟合很好;R² 越接近 1 越好。
拔高18为什么线性回归对异常点敏感?
损失是平方,远离群体的点平方后被极度放大,会把直线拉偏。
⑪ 记忆口诀 + 7 天复习计划
三句口诀
① 回归就是配直线,残差平方和最小。
② 解析一步 θ 等于 XᵀX 逆乘 Xᵀy,梯度下山慢慢挪。
③ 特征先标准化,学习率从小试,外推别太远。
| 天 | 任务 | 自检 |
| 第 1 天 | 读②③④,手推一遍 w 公式 | 能说出残差为什么平方 |
| 第 2 天 | 背公式卡 + 做基础 1-6 | 基础全对 |
| 第 3 天 | 做中档 7-12,手算 3 个点回归 | w、b 算对 |
| 第 4 天 | 做拔高 13-18,手推一次梯度更新 | 梯度方向没算反 |
| 第 5 天 | 做⑦真题 4 题 | 限时每题 2 分钟 |
| 第 6-7 天 | 合上书口述三句口诀,写正规方程和更新式 | 不看资料全默对 |
← 返回算法与AI总览