返回首页

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

类别型数据:特征交叉#

线性模型有个众所周知的短板:它只会画直线。这一节我们给它补上一块短板——特征交叉(Feature crosses)的做法,即把数据集中两个或更多类别型 / 分箱特征交叉起来(即取笛卡尔积)。

和多项式变换一样,特征交叉能让线性模型处理非线性情况。除此之外,它还额外编码了特征之间的交互关系。

推导一遍:叶片数据集#

来看一个叶片数据集,它有两个类别型特征:

  • edges(叶缘),取值有 smooth、toothed、lobed

  • arrangement(叶序),取值有 opposite 和 alternate

假设上面这个顺序,就是独热表示中特征列的顺序。那么一片叶缘为 smooth、叶序为 opposite 的叶子,表示出来就是 {(1, 0, 0), (1, 0)}。

这两个特征的交叉(也就是笛卡尔积)结果是:

{Smooth_Opposite, Smooth_Alternate, Toothed_Opposite, Toothed_Alternate, Lobed_Opposite, Lobed_Alternate}

每一项的值,都是两个基特征对应值的乘积,也就是:

  • Smooth_Opposite = edges[0] arrangement[0]

  • Smooth_Alternate = edges[0] arrangement[1]

  • Toothed_Opposite = edges[1] arrangement[0]

  • Toothed_Alternate = edges[1] arrangement[1]

  • Lobed_Opposite = edges[2] arrangement[0]

  • Lobed_Alternate = edges[2] arrangement[1]

举个例子。如果一片叶子叶缘是 lobed、叶序是 alternate,那么它的特征交叉向量在 Lobed_Alternate 这个项上取值为 1,其余各项全是 0:

{0, 0, 0, 0, 0, 1}

因为叶缘和叶序这些特征在同一树种内部是不变的,所以这份数据集可以用来按树种对叶片做分类。

与多项式变换的对比#

特征交叉与多项式变换多少有些相似:两者都是把多个特征合并成一个新的合成特征,让模型在它之上训练,从而学到非线性。区别在于——多项式变换处理的通常是数值型数据,而特征交叉处理的是类别型数据。

什么时候用特征交叉#

领域知识往往能帮你提示出一个有用的特征组合。但如果没有这类领域知识,光靠手工去判断哪些特征交叉、哪些多项式变换有效,是相当困难的。当然,也可以用神经网络在训练过程中自动去发现并应用有效的特征组合——只不过这样做的计算代价很高。

有一点必须小心:两个稀疏特征交叉之后,得到的那个新特征会比原来两个还要更稀疏。 比如,特征 A 是一个 100 元素的稀疏特征,特征 B 是一个 200 元素的稀疏特征,那么 A 与 B 的特征交叉会得到一个 20,000 元素的稀疏特征。

关键术语:

  • 特征交叉(Feature cross)
  • 神经网络(Neural network)
阅读 --