第 2 步 · 从直线到曲线
多项式回归Polynomial Regression
给模型"原材料"——不只是 x,还有 x², x³, x⁴...
8 分钟
阅读 + 实操
1 个
交互演示
初级
难度
多项式回归 · 交互演示
损失 MSE--
步数0
为什么学这步?
多项式回归是线性回归的自然延伸——现实中的关系很少是直的,物价波动、疾病传播、物体轨迹都是曲线。我们不换算法,而是把 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 — 设计矩阵的数学性质
📝 课后练习
检验你的理解——答对为止