城市要在山体公园里修一条健身步道,工程师在起伏的山坡上打下一个个勘测木桩,木桩的横向位置 \(x\) 对应着海拔高度 \(y\)。最省事的方案是用直尺画一条直线——路线笔直平坦,却时常悬在半空,离真实地形很远。聪明的工程师换了一种思路:允许道路“有限地弯曲”,用一段贴着木桩起伏的曲线取代直线。这,就是多项式回归的朴素直觉。 理解多项式回归,你只需把握三件事:把原始特征 \(x\) 复制成 \(x^2, x^3, \ldots\) 等高次项(特征展开);让模型自己去挑每个幂次该贡献多大力度(参数求解);以及小心次数过高时曲线会变成贴着每个木桩疯狂甩动的“蛇形过山车”(过拟合)。你会发现,它虽然能画出曲线,骨子里却仍是熟悉的线性回归——这正是它简单又强大的原因。

岗位关联

多项式回归是算法工程师进入非线性世界的“第一座桥”:它几乎不增加实现成本,却能瞬间提升模型对曲线趋势的刻画能力,是趋势预测、物理量拟合、房价建模等场景中的高频基础技能。

目录
  1. 可视化演示
  2. 概念与本质
  3. 特征展开
  4. 拟合流程
  5. 过拟合风险
  6. 正则化控制
  7. 实践应用
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

多项式特征展开、次数选择、龙格现象与正则化全流程。

本节配有交互动效(进入视口后自动加载,约 3KB)。

多项式曲线拟合 多项式特征展开将线性回归升级为曲线拟合 对参数仍为线性本质是线性回归加特征工程 y = w₀ + w₁x + w₂x² + ... + wₐxᵈ 通过高次项捕捉数据中的非线性关系

概念与本质

步道工程师最初只用一把直尺规划路线。他量好每个木桩的位置后,尽量画一条“离所有木桩都最近”的直线。这条路平坦好走,但遇到山谷或坡地时,直线悬在半空,和真实地形差得很远——这就是线性回归的局限:一条直线,只能描述“持续走高或走低”的单调趋势。

要描述“先下山再上山”这样的起伏,就得让路线方程里出现 \(x^2\)、\(x^3\) 这类弯曲项。多项式回归做的事非常朴素:把原始特征 \(x\) 复制成它的高次幂,再继续沿用熟悉的线性回归去求解。换句话说,路的“骨架”还是直线算法,只是图纸从一张变成了厚厚一摞。

它的完整模型写成如下形式,注意这里说的“线性”是指对参数 \(w\) 线性,而不是对特征 \(x\) 线性:

所以,多项式回归不是引入了一套全新的黑科技,而是给线性回归配了一组“可弯曲的模板”。模板上每条弧线都由 \(x\) 的幂次组合勾勒,参数仍然是在找那条“离木桩整体最近”的路线——只是它不再习惯性走直线。

y=w0+w1x+w2x2+⋯+wdxd\displaystyle y = w_0 + w_1 x + w_2 x^2 + \cdots + w_d x^d
这个式子就像给直尺配了一套可弯曲的曲线模板:每一项都是一种弯曲模式,参数则决定每种弯曲该用多大力度。
  1. 目标变量 \(y\)木桩处应达到的海拔高度,也就是我们要预测的值。
    yy
  2. 次数 \(d\)道路允许的最大弯曲次数,对应多项式的最高幂次,决定模型的表达能力。
    dd
  3. 权重 \(w_j\)第 \(j\) 张“弯曲图纸”的贡献力度,\(j\) 越大代表越细腻的弯曲。
    wjw_j
  4. 幂次项 \(x^j\)横坐标的 \(j\) 次方,把直线拓展成一组可叠加的曲线族。
    xjx^j

特征展开

工程师手里的原始图纸只有一张,记录着“横向位置 \(x \to\) 海拔 \(y\)”。要让道路能弯曲,他先复印出好几张新图纸,分别标注为 \(x^2\)、\(x^3\)……每张图纸代表一种弯曲幅度,最后按不同比例叠在一起,就能拼出千变万化的地形曲线。

这就是特征展开(polynomial features):把一维特征变换成一个包含多个幂次分量的特征向量。原来只用一张图纸说话,现在用一摞图纸共同发言,模型的“词汇量”一下子丰富了。

ϕ(x)=[ 1,  x,  x2,  …,  xd ]\displaystyle \phi(x) = \big[\, 1,\; x,\; x^2,\; \ldots,\; x^d \,\big]

1. 特征向量 \(\phi(x)\):把单个横坐标展开成一组幂次读数,是模型真正拿去计算的输入。

ϕ(x)\phi(x)

2. 常数项 1:对应截距 \(w_0\),负责路线整体抬高或压低,不参与任何弯曲。

11

3. 幂次分量 \(x^j\):第 \(j\) 张图纸的内容,\(j\) 越大,能勾勒的弯折越细碎。

xjx^j

图纸摞得越高,能摆出的形状越复杂。但稍微提醒一句:\(x\) 以“米”为单位时,\(x^2\) 就是“平方米”,不同幂次的数值量级可能相差巨大。所以展开特征之前,通常先把 \(x\) 做标准化,否则后面求解参数时会把数值大的项“带偏”。

拟合流程

图纸都摆好了,接下来要回答:每张图纸该配多重的权重?工程师把“每个木桩处,步道海拔与木桩真实海拔的偏差”全部平方后加起来,作为这条路线总的不合格程度——这就是均方误差损失。路线越贴合木桩,这个值越小。

关键在于:这个总偏差关于参数 \(w\) 是一个开口向上的碗形曲面,有且仅有一个最低点。既然碗底唯一,就不需要碰运气,可以用最小二乘法直接算出最优参数。把每个样本展开后的特征向量按行叠成设计矩阵 \(\Phi\),最优权重一步到位:

小数据量时用这个闭式解非常方便,一锤定音;数据量很大时,设计矩阵求逆代价过高,工程师们会改用梯度下降逐步逼近碗底。计算出权重后,把新位置的 \(x\) 展开成同样格式,代入模型即可预测——但这只是“图上作业”,路线究竟好不好走,还要到新地段上检验。

w∗=(ΦTΦ)−1ΦTy\displaystyle \mathbf{w}^* = \left(\Phi^\mathsf{T}\Phi\right)^{-1}\Phi^\mathsf{T}\mathbf{y}
就像把木桩坐标输入测绘软件,软件直接输出一组“最均衡”的权重,省去了来回试探的麻烦。
  1. 设计矩阵 \(\Phi\)把每个木桩展开后的特征按行排成一张大表,行数是木桩数,列数是特征数。
    Φ\Phi
  2. 格拉姆矩阵 \(\Phi^\mathsf{T}\Phi\)各幂次特征两两之间的“相关程度”汇总,相当于图纸之间的耦合关系。
    ΦTΦ\Phi^\mathsf{T}\Phi
  3. 求逆运算对相关矩阵求逆,消除各张图纸之间的相互干扰。
    (ΦTΦ)−1\left(\Phi^\mathsf{T}\Phi\right)^{-1}
  4. 响应投影 \(\Phi^\mathsf{T}\mathbf{y}\)把木桩海拔投影到特征空间,得到最优权重方向上的“总指引”。
    ΦTy\Phi^\mathsf{T}\mathbf{y}

过拟合风险

如果工程师一味追求“穿过每个木桩”,把次数调到十几,会发生什么?步道在木桩处确实严丝合缝,训练误差几乎为零,但它为了迁就个别木桩的偶然起伏,被迫在中间波浪翻滚,在两端剧烈甩动——一条好好的健身步道,变成了蛇形过山车。

这就是过拟合:在已经勘测的木桩上表现完美,一到新地段就严重跑偏。尤其是数据范围边缘,高次曲线像失控的尾巴一样甩出山体。理解这种现象,要借助偏差-方差分解:模型的总误差由三部分构成。

如何判断过拟合?把木桩分成训练段和测试段,观察两段的误差:训练误差持续下降、测试误差开始回升的那个拐点,就是“步子别迈太大”的警告线。记住,步道追求的不是穿过每一个木桩,而是留出平顺的余量,让路线对没走过的地形同样友好。

E[Err]=σ2+Bias2+Var\displaystyle \mathbb{E}\big[\mathrm{Err}\big] = \sigma^2 + \mathrm{Bias}^2 + \mathrm{Var}
噪声是木桩测量本身的误差,谁都躲不掉;偏差来自“路线不够弯”,方差来自“路线弯得太野”——过拟合的本质就是方差过大。
  1. 期望误差模型在无数个新地段上表现的平均水平,也就是“泛化能力”的反面。
    E[Err]\mathbb{E}[\mathrm{Err}]
  2. 噪声 \(\sigma^2\)木桩自身的测量波动,任何模型都无法消除的“地板”。
    σ2\sigma^2
  3. 偏差平方路线系统性地偏离木桩,通常是因为次数不足、表达能力不够。
    Bias2\mathrm{Bias}^2
  4. 方差路线在不同数据集下抖动的剧烈程度,高次多项式会把这一项急剧放大。
    Var\mathrm{Var}

正则化控制

怎么阻止道路变成蛇形?工程师想出一个办法:施工规范里加一条“扭曲罚款”——权重越大,弯曲越剧烈,就收越高的罚金。总成本等于“贴合木桩的偏差”加上“弯曲程度对应的罚金”。于是模型不再只盯着木桩,还得掂量掂量自己的动作幅度。

最常见的惩罚是岭回归,它在损失函数里追加所有权重平方之和的 \(\lambda\) 倍。平方惩罚会让很大的权重被重点打击,从而使曲线变得柔和;另一种 Lasso 则追加权重绝对值之和,会让一部分权重直接归零,相当于自动把不重要的“图纸”扔进废纸篓。

这就像给步道设定“最小转弯半径”规范:不能为了精确而胡乱扭动。平顺、可走、对新的地形稳定,才算一条好路。正则化正是那个在“贴地”和“平顺”之间反复较劲的监理工程师。

J(w)=12m∑i=1m(Φw−y)i2+λ∑j=1dwj2\displaystyle J(\mathbf{w}) = \frac{1}{2m}\sum_{i=1}^{m}\left(\Phi\mathbf{w} - \mathbf{y}\right)_i^2 + \lambda\sum_{j=1}^{d} w_j^2
系数 \(\lambda\) 就是“施工规范”的严格程度:\(\lambda\) 越大,路越平直,甚至退化成直线;\(\lambda\) 越小,越接近裸奔的高次拟合。
  1. 拟合误差项木桩处步道海拔与真实海拔的总偏差,度量贴合程度。
    12m∑i=1m(Φw−y)i2\frac{1}{2m}\sum_{i=1}^{m}(\Phi\mathbf{w}-\mathbf{y})_i^2
  2. 权重平方惩罚项对大幅度弯曲收“施工费”,防止蛇形路线出现。
    λ∑j=1dwj2\lambda\sum_{j=1}^{d}w_j^2
  3. 正则化系数 \(\lambda\)超标程度,控制贴合与平滑之间的天平。
    λ\lambda

实践应用

现实世界的规律很少是笔直的:气温随季节起伏、发电量随温度先增后减、房价随面积增长但增幅逐步放缓。多项式回归是理解这类平滑非线性关系最朴素、最可靠的工具之一,因为它只需要做特征展开,剩下的活全部交给成熟的线性回归流水线。

常见的落地场景包括:趋势预测——用历史数据拟合销量或客流随时间的曲线走势;物理量拟合——用二次多项式描述自由落体的位移-时间关系,用高次多项式做传感器标定;房价建模——捕捉面积对总价的减速增长效应。无论哪种场景,动手前都建议先把特征标准化,让不同幂次站在同一起跑线上:

工程上还要牢记:先用交叉验证挑选合适次数,再配合正则化控制复杂度,并且绝不轻易用多项式做训练范围之外的外推。只有同时管好“次数”和“平滑度”,这条步道才能既贴合眼前的木桩,又经得起新地段的考验——这也是所有算法工程师在真实工地上反复打磨的功课。

x′=x−μσ\displaystyle x' = \frac{x - \mu}{\sigma}
标准化把原始读数转成“偏离平均水平多少个标准差”,避免 \(x^2\) 这类大数值项在求解时喧宾夺主。
  1. 均值 \(\mu\)所有勘测点横坐标的平均位置,作为基准点。
    μ\mu
  2. 标准差 \(\sigma\)勘测点横向分布的离散程度,衡量数据有多“散”。
    σ\sigma
  3. 标准化值 \(x'\)变换后的特征,均值为 0、方差为 1,便于各幂次公平参与拟合。
    x′x'

AI 应用场景

新能源电站发电量预测

阶段:特征工程与建模阶段

解决的问题:光伏发电量随环境温度呈“倒 U 形”——温度过低时出力低,过高时组件效率反而下降。传统的线性模型只能画一条单调直线,完全无法描述这种先升后降的关系,导致预测偏差大。

具体案例:某光伏电站收集两年逐小时数据,把温度、辐照度展开成二次项和交互项,用次数为 3 的多项式回归拟合发电量曲线,并叠加岭回归抑制边缘抖动。改造后预测误差下降约 18%,且高温极端天气下的预测不再离谱。

房价与面积的非线性关系建模

阶段:特征变换与模型训练阶段

解决的问题:房龄和面积驱动的房价关系不是直线:面积小户型单价高,面积越大总价越高但增幅越缓。线性模型会系统性高估小户型、低估大平层。

具体案例:某房产估值平台抽取 10 万条成交记录,将面积标准化后构造 2~3 次多项式特征,用多项式回归拟合单价曲线,交叉验证后 \(R^2\) 从 0.72 提升到 0.81,且新楼盘的估价稳定性明显改善。

工业传感器标定

阶段:数据拟合与离线建模阶段

解决的问题:热电偶等传感器的电压-温度关系高度非线性,传统做法是维护一张巨大的查找表,既占内存又难维护。多项式回归能用一条低次曲线替换整张表。

具体案例:某设备厂商用标定实验获取 15 个温度点的电压样本,用次数为 4 的多项式回归拟合标定曲线,残差控制在 0.15℃ 以内,固件里的查表环节被 5 个系数的计算取代,内存占用下降 90%。

Python 演示

python48 行
import numpy as np  def poly_features(x, degree):    """把一维特征 x 展开成 [1, x, x^2, ..., x^degree] 的多项式特征矩阵"""    x = np.asarray(x, dtype=float).reshape(-1, 1)    return np.hstack([x ** j for j in range(degree + 1)])  def fit_polynomial(x, y, degree, lambd=0.0):    """用正规方程求解多项式回归系数,lambd > 0 时为岭回归"""    Phi = poly_features(x, degree)    n = Phi.shape[1]    I = np.eye(n)    I[0, 0] = 0  # 截距项不参与惩罚    w = np.linalg.solve(Phi.T @ Phi + lambd * I, Phi.T @ y)    return w  def predict(x, w):    Phi = poly_features(x, len(w) - 1)    return Phi @ w  def mse(y_true, y_pred):    return float(np.mean((y_true - y_pred) ** 2))  def main():    rng = np.random.default_rng(42)    x = np.linspace(-3, 3, 30)    y = 1.5 + 0.6 * x - 0.45 * x ** 2 + 0.12 * x ** 3 + rng.normal(0, 0.5, size=x.size)     x_train, y_train = x[::2], y[::2]    x_test, y_test = x[1::2], y[1::2]     for degree in [1, 3, 9]:        w = fit_polynomial(x_train, y_train, degree)        print(f"次数={degree} 训练MSE={mse(y_train, predict(x_train, w)):.3f} "              f"测试MSE={mse(y_test, predict(x_test, w)):.3f}")     for lambd in [0.0, 1e-3, 1e-1]:        w = fit_polynomial(x_train, y_train, 9, lambd=lambd)        print(f"次数=9 lambda={lambd:.3f} 测试MSE={mse(y_test, predict(x_test, w)):.3f}")  if __name__ == "__main__":    main()
目的:用 30 个带噪声的数据点,对比不同次数多项式回归的过拟合程度,并展示岭回归如何拯救高次模型。
  1. np.hstack([x ** j for j in range(degree + 1)])批量生成从 0 到 degree 的幂次特征,完成特征展开。
  2. Phi.T @ Phi + lambd * I构造正规方程的系数矩阵,加上惩罚项实现岭回归。
  3. I[0, 0] = 0把截距对应的惩罚置零,避免对整体抬升“罚款”。
  4. np.linalg.solve(...)直接解线性方程组求得闭式解,比求逆更数值稳定。
  5. x[::2]` / `x[1::2]用隔点采样切分训练集和测试集,保证两边都覆盖整个区间。
  6. for degree in [1, 3, 9]同一份数据跑三档次数,直观暴露过拟合。
  7. for lambd in [0.0, 1e-3, 1e-1]固定次数为 9,观察正则化力度变化。

常见误区

误区“多项式回归画出来是弯弯的曲线,神经网络那种能画复杂曲面的才叫非线性,它应该属于非线性模型吧?”

正解判断是不是线性模型,看的是“预测值与参数的关系”,而不是“预测值与特征的关系”。\(\hat{y} = w_0 + w_1x + w_2x^2\) 对权重 \(w\) 是完全线性的,损失函数仍是开口向上的碗形凸函数,闭式解依然成立。曲线只是特征被幂次展开后的视觉效果,参数空间的“作业流程”和线性回归一模一样。

为何常见:把“数据空间的弯曲”和“参数空间的线性”混为一谈,是初学者最容易踩的第一个坑。

误区“训练误差一路下降,那我把次数调到最大,模型不就最完美了吗?”

正解训练误差低只代表“记住了试卷答案”,不代表“会做新题”。高次多项式会连噪声和个别点的偶然波动一起记住,在数据范围边缘剧烈震荡,测试误差反而暴涨。正确做法是盯住“训练误差下降、测试误差开始回升”的拐点,或直接用交叉验证选次数。

为何常见:人眼天然喜欢“拟合得更贴合”的曲线,却看不见新数据上的惨败,因为那需要专门做测试集评估才暴露得出来。

误区“反正有岭回归兜底,次数开到 20 也没关系,惩罚会把权重压小。”

正解正则化只能抑制权重的幅度,却无法根治高次幂特征之间极度相关带来的数值病态。次数过高时,展开后的特征值差异悬殊,必须先标准化再配合适当的 \(\lambda\),而且 \(\lambda\) 过大同样会欠拟合。工程上的稳妥配方是:适度次数 + 标准化 + 交叉验证调 \(\lambda\)。

为何常见:高估了单一手段的“兜底”能力,低估了病态矩阵和数据尺度对求解过程的真实影响。

误区“曲线既然能完美拟合历史走势,那顺藤摸瓜预测明年后年,应该也没问题吧?”

正解多项式在训练数据范围之外的走势完全不受约束,高次项会迅速发散——步道修到勘测区外,曲线早已是“失控段”。外推必须依赖领域先验,或者换用带物理约束、平稳性假设的模型。曲线内部的完美表现,掩盖不了区间外的不可控。

为何常见:模型在可见区间内表现太好,形成“看起来很可靠”的错觉,让人忽略了区间外行为根本没有数据背书。

面试题

Q1. 多项式回归虽能绘制曲线,但从参数角度看它本质属于:

单选题 · easy

  • A.线性模型家族← 正确答案
  • B.非线性模型家族
  • C.集成树模型家族
  • D.支持向量机家族

答案:A。多项式回归的输出是权重与幂次特征的线性组合,参数空间是线性的,损失为碗形凸函数,因此属于线性模型。能画曲线只是特征被幂次展开后的视觉结果,不影响其“参数线性”的本质。

Q2. 将原始特征 x 变成 1, x, x², …, xᵈ 的过程称为:

单选题 · easy

  • A.特征多项式展开← 正确答案
  • B.特征主成分压缩
  • C.特征直方图均衡
  • D.特征归一化降维

答案:A。把一维特征扩展成多个幂次特征,让线性模型获得弯曲能力,这正是多项式特征展开。主成分压缩和直方图均衡属于另一类数据变换,与幂次展开无关。

Q3. 均方误差损失在参数空间中呈现的形状是:

单选题 · mid

  • A.向上开口的碗形曲面← 正确答案
  • B.向下开口的火山口形
  • C.高低起伏的多峰地形
  • D.完全平坦的等高线面

答案:A。均方误差是参数的二次函数且二次项系数为正,呈开口向上的碗形凸曲面,有唯一全局最小值。正因为这个好性质,正规方程和梯度下降都能稳定收敛到最优解。

Q4. 用正规方程求解多项式回归系数时,核心运算是:

单选题 · mid

  • A.对特征矩阵做求逆等矩阵运算← 正确答案
  • B.对损失函数做随机游走采样
  • C.对每条样本做逐条比对匹配
  • D.对梯度做贪心方向试探

答案:A。闭式解 \(w^*=(\Phi^\mathsf{T}\Phi)^{-1}\Phi^\mathsf{T}y\) 需要计算特征矩阵的格拉姆矩阵并求逆。随机游走、逐条比对、贪心试探都不是解析求解,且效率与稳定性都更差。

Q5. 多项式次数过高时,曲线在训练数据范围边缘容易:

单选题 · mid

  • A.出现剧烈的上下甩动震荡← 正确答案
  • B.平滑收敛到均值附近
  • C.严格保持线性上升趋势
  • D.自动退化为低次曲线

答案:A。高次多项式为了迁就边缘样本会剧烈弯曲,在端点处摆动放大,即边缘震荡。这是高次数模型在区间端点附近的系统性不稳定现象,并非随机噪声。

Q6. 岭回归在损失函数中额外加入的惩罚项是:

单选题 · mid

  • A.权重平方和的 λ 倍← 正确答案
  • B.权重绝对值和的 λ 倍
  • C.权重符号翻转的 λ 倍
  • D.损失函数倒数的 λ 倍

答案:A。岭回归采用 L2 惩罚 \(\lambda\sum w_j^2\),让权重整体收缩但通常不为零;权重绝对值求和是 Lasso(L1)惩罚,二者同为正则化手段但效果不同。

Q7. 边缘震荡现象给多项式外推带来的启示是:

单选题 · hard

  • A.训练范围外的预测极不可靠← 正确答案
  • B.训练范围外的预测必然精确
  • C.训练范围外会自动走平收敛
  • D.外推只受训练误差影响

答案:A。高次多项式在数据范围外会迅速发散,所谓“预测趋势”可能完全失真。这与训练误差无关,因此外推必须结合领域先验或改用带约束的模型,不能直接依赖多项式。

Q8. 下列哪些做法能有效缓解多项式回归的过拟合?

多选题 · mid

  • A.用交叉验证挑选合适次数← 正确答案
  • B.引入岭回归惩罚大权重← 正确答案
  • C.增加训练样本的数量← 正确答案
  • D.把次数调到最高并硬拟合

答案:ABC。交叉验证选次数、正则化抑制权重幅度、扩充数据都能减小方差、提升泛化能力。盲目提高次数只会加剧过拟合,因此 D 错误。

Q9. 关于偏差-方差权衡,下列说法正确的是:

多选题 · hard

  • A.高次多项式通常带来高方差← 正确答案
  • B.高次多项式通常带来高偏差
  • C.正则化增强时方差下降偏差上升← 正确答案
  • D.正则化增强时偏差下降方差上升

答案:AC。高次多项式对数据敏感、抖动剧烈,因此方差高;次数不足则系统性偏离,偏差高。正则化压缩权重使曲线变平,降低方差的同时必然增加偏差,故 C 对 D 错。

Q10. 下列哪些场景适合用多项式回归进行建模?

多选题 · easy

  • A.房价随面积的增速放缓关系← 正确答案
  • B.位移随时间变化的二次关系← 正确答案
  • C.发电量随温度的倒U形关系← 正确答案
  • D.图像中物体边界像素的标注

答案:ABC。多项式擅长拟合平滑且已知幂次的非线性关系,如二次位移、倒U形温度效应、减速增长曲线。像素级边界标注属于图像分割任务,远远超出多项式回归的适用范围。