特征组合 (Feature Crosses):对非线性规律进行编码

在图 1 和图 2 中,我们做出如下假设:

  • 蓝点代表生病的树。
  • 橙点代表健康的树。

蓝点占据东北象限;橙点占据西南象限。

图 1. 这是线性问题吗?

您可以画一条线将生病的树与健康的树清晰地分开吗?当然可以。这是个线性问题。这条线并不完美。有一两棵生病的树可能位于“健康”一侧,但您画的这条线可以很好地做出预测。

现在,我们来看看下图:

蓝点占据东北和西南象限;橙点占据西北和东南象限。

图 2. 这是线性问题吗?

您可以画一条直线将生病的树与健康的树清晰地分开吗?不,您做不到。这是个非线性问题。您画的任何一条线都不能很好地预测树的健康状况。

除了一条水平线拆分了平面,其余与图 2 相同。蓝点和橙点位于线上方;蓝点和橙点位于线下方。

图 3. 一条线无法分开两类数据。

 

要解决图 2 所示的非线性问题,可以创建一个特征组合。特征组合是指通过将两个或多个输入特征相乘来对特征空间中的非线性规律进行编码的合成特征。“cross”(组合)这一术语来自 cross product(向量积)。我们通过将 \(x_1\) 与 \(x_2\) 组合来创建一个名为 \(x_3\) 的特征组合:

$$x_3 = x_1x_2$$

我们像处理任何其他特征一样来处理这个新建的 \(x_3\) 特征组合。线性公式变为:

$$y = b + w_1x_1 + w_2x_2 + w_3x_3$$

线性算法可以算出 \(w_3\) 的权重,就像算出 \(w_1\) 和 \(w_2\) 的权重一样。换言之,虽然 \(w_3\) 表示非线性信息,但您不需要改变线性模型的训练方式来确定 \(w_3\) 的值。

特征组合的种类

我们可以创建很多不同种类的特征组合。例如:

  • [A X B]:将两个特征的值相乘形成的特征组合。
  • [A x B x C x D x E]:将五个特征的值相乘形成的特征组合。
  • [A x A]:对单个特征的值求平方形成的特征组合。

通过采用随机梯度下降法,可以有效地训练线性模型。因此,在使用扩展的线性模型时辅以特征组合一直都是训练大规模数据集的有效方法。