机器学习 · 第三章 线性回归 · 交互实验台

共享单车租车量 线性回归 实验台

730 天的日租车记录。亲手拖一条直线、调一个学习率、加一层正则化——把课件里的 y = wx + b、最小二乘、梯度下降和过拟合,都变成能看见、能上手的东西。

730 天 · 2011-01 → 2012-12 6 个特征 一元 / 多元 / 正则化 数据按时间顺序切分
模型
—
训练集 R²
—
测试集 R²
—
测试集 RMSE
—辆
测试集 MAE
—辆
样本 训练/测试
—

温度 → 日租车量:散点与假设函数 h(x)

h(x) = a·x + b

蓝色是训练集,灰色是测试集。橙线就是你的假设,竖线是残差 y − h(x)。拖端点试试。

代价函数 J(a,b) 的等高线

log 色阶

颜色越深代价越小,中心是最优解。这个狭长的椭圆说明 a 与 b 的尺度差得很远,梯度下降只能小步挪。

代价随迭代下降

log 纵轴

合适的学习率单调下降并趋于平缓;过大则震荡甚至往上飞。

各特征权重 w

标准化空间

正值(橙)= 该特征越大租车越多;负值(绿)= 越大租车越少。

预测值 vs 真实值

R² —

每个点是一天。越贴近虚线 y = x 说明预测越准。彩色是训练集,空心是测试集。

学习率对收敛的影响

BGD · 7 组 α

同一条路,不同的步长:α 太小走得慢,α 太大直接跨过谷底飞出去。这就是"学习率是超参数"的意思。

训练集 / 测试集指标

测试集指标才是"真本事"。两者差太多 = 过拟合。

误差的分布(残差)

—

残差随机散布在 0 附近 = 线性模型基本够用;如果呈弓形,说明漏了非线性项。

权重被正则化"压缩"的过程

λ = 1

灰条是没有正则化时的权重,橙/绿条是当前 λ 下的权重。L1 会把某些条直接压成 0——这就是"自动选特征"。

R² 随 λ 的变化

留出验证

横轴是 λ(对数),纵轴是 R²。两条线的缝隙就是泛化差距。

指标对比

λ 太小时测试集 R² 反而下降(过拟合),λ 太大时两边都下降(欠拟合)。

三种正则化的几何直觉

w₁ w₂
L1 · Lasso约束区域是菱形,顶点落在坐标轴上 → 最优解常落在轴上,某些权重变成 0,产生稀疏模型。
w₁ w₂
L2 · Ridge约束区域是圆,切点一般不在坐标轴上 → 权重整体变小、更平滑,但很少恰好为 0。
图上灰色椭圆是没有正则化时损失函数的等高线,中心点是它的最优解;彩色轮廓是正则化给出的"预算范围"。
真正的解 = 等高线与预算边界的切点。菱形有尖角,所以 L1 更容易切在轴上。

课件知识卡第三章 · 线性回归

上面每个开关背后的理论。点开对照着调,比看公式快得多。

01回归是什么:标签连续 vs 标签离散

监督学习分两类:回归(标签连续)与分类(标签离散)。预测明天租车 3821 辆是回归,判断明天"涨/跌"是分类。

"回归"这个词的来历:英国统计学家高尔顿研究父子身高时发现,高个子父母的孩子也高,但平均身高会往中间靠;矮个子父母的孩子也矮,但平均身高会往中间抬。这种"向中间值靠拢、避免两极分化"的趋势,被他称为回归现象。后来人们借用它,把研究自变量 X 与因变量 Y 之间统计关系的量化方法统称为回归分析。

常见回归任务:房价预测、股价预测、气温预测、销售量(租车量)预测、财务报表预测、人口增长预测。

02线性回归的定义与假设函数

线性回归是用属性的线性组合来预测标签的线性模型,目标是找到一条直线 / 一个平面 / 更高维的超平面,让预测值与真实值之间的误差最小化。

h(x) = w₀ + w₁x₁ + w₂x₂ + … + wₙxₙ = wᵀx

只含一个自变量时叫一元线性回归(直线 y = ax + b);把 x 从标量换成向量,就是多元线性回归。注意:"线性"指的是对参数 w 线性,不是"图像一定是直线"。

03损失函数 / 代价函数 / 目标函数
损失函数
度量单个样本预测的错误程度。有 0-1 损失、平方损失、绝对损失、对数损失等。
代价函数
度量全部样本的平均误差。常用 MSE、RMSE、MAE。
目标函数
代价函数 + 正则化项,最终要优化的那个函数。

线性回归用的是平方损失,代价函数写作:

J(w) = 1/(2m) · Σᵢ (h(x⁽ⁱ⁾) − y⁽ⁱ⁾)²

乘 1/2 只是为了让求导时把平方的 2 约掉,不影响最优点位置。左边那个"残差平方和"就是你在图 1 里看着它跳来跳去的数。

04最小二乘法(LSM):一步到位

要让残差平方和最小,直接对 w 求偏导并令其为 0,得到正规方程:

w = (XᵀX)⁻¹ Xᵀy

X 是 m×(n+1) 的设计矩阵(m 个样本、n 个特征,另加一列全 1 对应截距),y 是 m×1 的标签向量。一元情形有闭式解:

a = (mΣxᵢyᵢ − ΣxᵢΣyᵢ) / (mΣxᵢ² − (Σxᵢ)²)
b = (ΣyᵢΣxᵢ² − ΣxᵢΣxᵢyᵢ) / (mΣxᵢ² − (Σxᵢ)²)

点"求最小二乘解"就是在算这个。代价是要求矩阵逆,时间复杂度 O(n³)——特征数上万时就不合适了。

05梯度下降:三种形式

既然不能一步解出来(或不想算逆矩阵),那就沿着梯度的反方向一小步一小步走:

wⱼ := wⱼ − α · ∂J/∂wⱼ (所有 j 同步更新)
BGD 批量
每步用全部训练样本算梯度。稳、方向准,但一步很贵。
SGD 随机
每步只用一个样本,算完立刻更新。快、但抖得厉害。
MBGD 小批量
每步用一小批(常见 32 / 64 / 128)。工业界的默认选择。

batch_size = 1 就是 SGD,= m 就是 BGD。

06学习率 α:步子迈多大

α 过小:每一步挪一点点,收敛慢,可能迭代几百次还在半山腰。

α 过大:一步跨过最优点,落到对面的坡上,下一步跨回来更远——震荡;再大一点就直接发散,代价变成负无穷或 NaN。

初始点离最优点太远也会让收敛变慢;参数尺度不一致会让等高线变成狭长椭圆,同一个 α 在一个方向上刚好、在另一个方向上要么太慢要么发散。

经验顺序:先标准化,再从 0.01 ~ 0.1 开始试,看代价曲线单调下降再加。

07梯度下降 vs 最小二乘
梯度下降
需要选学习率、需要多次迭代;特征数量大时仍能工作;适用于各种类型模型(线性回归、逻辑回归、神经网络…)。
最小二乘
不需要学习率、一次计算得出;但要算 (XᵀX)⁻¹,复杂度 O(n³);只适用于线性模型。特征数小于一万左右还能接受。

两个方法在凸的平方损失上会收敛到同一个解——你可以在上面两个 Tab 里分别求一次,对比 R²。

08回归的评价指标
MSE = 1/m Σ(yᵢ − ŷᵢ)²  RMSE = √MSE  MAE = 1/m Σ|yᵢ − ŷᵢ| R² = 1 − Σ(yᵢ − ŷᵢ)² / Σ(yᵢ − ȳ)²

R² 越接近 1 说明拟合越好;等于 0 相当于"永远猜平均值";可以是负数——说明模型比直接猜平均值还差(预测崩了的时候你会看到)。

MSE / RMSE 的量纲是"辆",MAE 对异常值更宽容,RMSE 会因为平方而放大离群点的影响。

09归一化 / 标准化:为什么必须做

归一化(Min-Max):x' = (x − min)/(max − min),映射到 [0,1]。

Z-Score 标准化:x' = (x − μ)/σ,处理后均值 0、方差 1。

区别:归一化改变了特征的数据分布形状;标准化保留了分布形状,只是换了尺子(为了不同特征之间可比)。

为什么要做:

  • 提升精度:A 课程 10 分制、B 课程 100 分制,直接加权综合,B 会完全压过 A。标准化后才有可比性。
  • 加速收敛:不做标准化时等高线是极扁的椭圆,梯度下降在"陡"的方向震荡、在"缓"的方向爬行。

需要做的:KNN、K-means、感知机、SVM 这类基于距离的模型,以及线性回归类模型。不需要的:决策树、随机森林、XGBoost、LightGBM 等树模型和朴素贝叶斯。

10过拟合、欠拟合与正则化

欠拟合:模型太简单,训练集都学不好。处理:加新特征、提高模型复杂度(加高次项、加层)、减小正则化系数。

过拟合:把噪声也背下来了,训练集很好、测试集稀烂。处理:更多数据、降维、正则化、集成学习。

L1:J + λΣ|wⱼ|  L2:J + λΣwⱼ²  ElasticNet:λ(ρΣ|wⱼ| + (1−ρ)Σwⱼ²)

L1 制造稀疏(不重要的权重直接归 0,等价于自动选特征,叫 Lasso);L2 制造平滑(权重整体变小,叫 Ridge);ElasticNet 把两者按比例 ρ 混合。

λ 是超参数——不是模型自己学出来的,要人在验证集上试。

11超参数与数据集划分
训练集
用来训练模型、拟合参数 w。
验证集
用多组超参数训练多个模型,在验证集上挑最好的那组。
测试集
只用一次,报告最终性能。绝不能拿来调参。

参数(w、b)由算法学出来;超参数(学习率 α、k 值、λ、batch_size)由人指定。判断超参数好不好,靠验证集。

本实验台是按时间顺序切分:前 70% 日期训练、后 30% 测试,模拟"用过去预测未来"。

实验任务 动手

01
在一元回归里把直线拖到水平(a≈0),看 R² 变成多少。这相当于"永远预测平均值",R² 应该接近 0。
02
把学习率从 0.0005 一路调到 0.0095,每档跑一次。记录:哪一档开始代价往上飞?(提示:0.007 是这道题的临界点。)再把 α 调回 0.004、迭代拉到 1200,看曲线还在缓慢下降——因为 a 和 b 尺度差太远,谷底很窄。
03
去多元回归,把标准化改成"不做",再选梯度下降、α=0.1。看它炸不炸。然后切回 Z-Score 再看一次——这就是知识卡 09 说的"加速收敛"。
04
把温度和体感温度同时勾上。它俩几乎线性相关,观察权重怎么"互相抢功"变成一正一负——这就是多重共线性。
05
去正则化,选 L1,把 λ 从 0.01 一路拉到 10,盯住权重条:λ 到哪一档时,哪几个特征被压成 0 了?顺序说明了什么?

随堂小测 点选项

Q1线性回归中"线性"指的是什么?
Q2学习率 α 取得过大,最可能发生什么?
Q3L1 与 L2 正则化最核心的区别是?
Q4某模型训练集 R² = 0.96,测试集 R² = 0.42。最可能是?