ML ML Learning Lab
02 / 14
第 2 步 · 从直线到曲线

多项式回归Polynomial Regression

给模型"原材料"——不只是 x,还有 x², x³, x⁴...

8 分钟
阅读 + 实操
1 个
交互演示
初级
难度

多项式回归 · 交互演示

损失 MSE--
步数0
多项式次数
学习率 0.1
速度 20步/秒

为什么学这步?

多项式回归是线性回归的自然延伸——现实中的关系很少是直的,物价波动、疾病传播、物体轨迹都是曲线。我们不换算法,而是把 x 升级成 x²、x³…,让同一套梯度下降也能拟合曲线。这是从"线性思维"走向"非线性建模"的第一步,也埋下了特征工程的种子——后续神经网络正是用更强大的方式自动学习特征。

📌 发生了什么

  • 把输入 x 升级为 [x, x², x³, …],模型仍是线性回归。
  • 梯度下降更新每个 wᵢ,让曲线逐步贴合 sin 数据点。
  • 次数越高曲线越灵活,但也越容易"硬凑"训练点。

⚠️ 常见陷阱

  • 次数越高越好?错。过高时曲线在点之间剧烈震荡(过拟合)。
  • 多项式回归和线性回归是两套算法?不是,它本质仍是线性回归。
  • 特征必须手动构造?传统方法确实如此,这正是它的局限。

本章小结

  • 模型:y = w₁x + w₂x² + … + b,用高次项拟合曲线关系。
  • 特征工程:把 x 升级为 x²、x³,提升模型表达能力。
  • 次数权衡:太低欠拟合,太高过拟合,需取平衡。

📐 多项式回归的正规方程

多项式回归把输入 x 映射为高次特征 φ(x),再用线性回归求解。以下是从特征变换到闭式解的完整推导。

将所有样本的特征向量按行堆叠,得到设计矩阵 X(Vandermonde 矩阵),模型预测为 ŷ = Xw:

最小化均方误差 L = ‖Xw − y‖²,对 w 求导并令其为零:

得到正规方程(闭式解),无需迭代即可一步求出最优权重:

🎛 多项式阶数对比

阶数 d 决定模型复杂度。太低无法拟合曲线,太高则过拟合。用上方演示器实时验证。

阶数 d 表现 结果
d = 1 直线拟合,完全无法贴合 sin 曲线 欠拟合
d = 3 平滑贴合波形,泛化性最好 推荐
d = 6 开始追逐噪声,边缘出现波动 轻微过拟合
d = 10 曲线在点间剧烈震荡,硬凑每个点 严重过拟合

💡 这正是偏差-方差权衡的经典案例:d 小→偏差大方差小,d 大→偏差小方差大。

💻 实现要点

多项式特征生成 + 正规方程求解(Python,与演示器逻辑一致):

import numpy as np

# 1. 生成多项式特征矩阵 X (n × (d+1))
def poly_features(xs, d):
    return [[x ** k for k in range(d + 1)] for x in xs]

# 2. 正规方程: w = (XᵀX)⁻¹Xᵀy  (用 numpy 求解)
X = np.array(poly_features(xs, d))
w = np.linalg.inv(X.T @ X) @ X.T @ y

# 或用梯度下降迭代 (当 d 很大时更稳定)
for step in range(max_steps):
    pred = X @ w
    grad = X.T @ (pred - y)
    w = w - lr * grad / n  # 即 w -= lr * grad / n

📚 参考文献与延伸阅读

  • scikit-learn: PolynomialFeatures — 工业级多项式特征生成文档
  • Goodfellow, Bengio & Courville, Deep Learning (2016), §5.2 Capacity, Overfitting and Underfitting — 偏差-方差权衡的理论框架
  • Bishop, Pattern Recognition and Machine Learning (2006), §1.1 Polynomial Curve Fitting — 经典的多项式拟合示例
  • Wikipedia: Vandermonde matrix — 设计矩阵的数学性质

📝 课后练习

检验你的理解——答对为止