返回首页

Roadmap
更新于 2026年10月21日 全文 1270 字未阅读

数值型数据:多项式变换#

尽管线性模型看起来省时省力,但一旦数据样本的分布更像一条曲线而不是一条直线,再好的线性方程也描不出它的形状。这一节我们就来聊一条被反复验证的小路:多项式变换(polynomial transform)。

MLWM: 例如下图所示的案例,样本的分布并没有在一条直线而是一条曲线上。

非线性回归拟合
非线性回归拟合

相关内容可以参见文章 「特征标准化:归一化与标准化的原理及实现」 第4.2.4节中的内容。

有时候,领域知识会提示你「这个变量其实是另一个变量的平方、立方或别的幂」。这种情况下,从现有的数值特征里再造一个合成特征(synthetic feature),常常能帮模型多长出一只手。

引子:「直线划不开」的一组样本#

先看一张典型的二分类(但分布沿曲线展开)样本的散点图——粉色圆点代表 A 类(比如一种树的样本),绿色三角代表 B 类(另一种树的样本):

图 17. 一片按 y=x² 曲线分布的散点。曲线下是一簇绿色三角,曲线及其上方是一簇粉色圆点。无论怎么画直线,都没法把这两簇干净分开。
图 17. 两类样本无法被一条直线分开

可以发现,不管我们怎么画直线,都没法把这两簇干净分到两侧。但曲线就办得到:

图 18. 与图 17 一样的散点,但图上叠加了一条 y=x² 抛物线。曲线清晰地把下方的绿色三角与上方的粉色圆点切到了不同侧。
图 18. 用 y = x² 把两类分开

看到这里,一个自然的疑问会冒出来——模型怎么学出这种曲线?

线性公式先回顾#

按 线性回归模块 的讲法,只有一个特征 $x_1$ 的线性模型是这样:

$$y = b + w_1x_1$$

要加更多特征,就再添几项 $w_2 x_2$、$w_3 x_3$,依此类推。梯度下降(Gradient descent)负责找出能让损失最小的那组权重(Weight)(单特征时是 $w_1$,多特征就是 $w_1, w_2, w_3, \ldots$)。

但是,你或许会问,图 17 的那批数据怎么调,都只能产生一条直线呀,怎么也描不出图 18 那条 $y = x^2$ 的形状。

合成特征登场#

办法是:保住那条线性方程,但偷偷塞进一个非线性项——也就是额外定义一个新特征 $x_2$,让它等于 $x_1$ 的平方:

$$x_2 = x_1^2$$

这个 $x_2$ 就是一个合成特征(synthetic feature),业内俗称「多项式变换(polynomial transform)」。把它也丢进特征向量,模型对待它的方式与对待任何其他特征完全一致——上面的线性公式顺势变成:

$$y = b + w_1x_1 + w_2x_2$$

别被这里的「平方」字样吓到:从权重学习的角度看,它仍然是一个标准的线性回归问题——$w_1$、$w_2$ 照旧由梯度下降找出,全程没人需要懂「平方」「非线性」。

也就是说,训练方式一行没改,但模型能学的曲线已经升级为 $y = b + w_1 x + w_2 x^2$ 形态——能描出图 18 那样的弧线。

关于多项式回归的理解,也可以参见文章 多项式回归:线性回归扩展与非线性拟合 中的引例。我们通过对“梯形面积”的预测,来深刻展示了多项式回归。

该取几阶幂:留给领域知识#

经验上,用得最多的多项式变换是把数值特征自我乘上若干次——也就是取某个幂。「该取几阶幂」这种判断,往往不能从数据本身看出来,需要领域知识来点拨。

举个例子——物理世界的一大批关系本身就带平方:

  • 重力加速度

  • 光 / 声随距离的衰减

  • 弹性势能

遇到这一类关系时,先猜平方、跑一版模型试试通常是个不错的起点。

别忘了归一化#

如果你对特征做了会改变尺度的变换(平方就是个典型——一大一小两个值平方后都会变大),之后最好顺手做一次归一化。把变换后的特征拉回同一尺度,常常能让模型表现更稳。具体做法可回看 数值数据:归一化 中的内容。

相关概念: 类别型数据里的「特征交叉(feature cross)」也算一类合成特征,但它更多是把两个不同的特征合到一起,而不是像这里把一个特征自我乘幂。

关键术语:

  • 类别型数据(Categorical data)
  • 特征(Feature)
  • 特征交叉(Feature cross)
  • 梯度下降(Gradient descent)
  • 线性回归(Linear regression)
  • 合成特征(Synthetic feature)
  • 权重(Weight)
阅读 --