特征交叉是特征工程中的重要环节,在以表格型(或结构化)数据为输入的建模中起到了很关键的作用。
特征交互的作用,一是尽可能挖掘对目标有效的模式、特征,二是具有较好的可解释性,三是能够将对数据的洞见引入建模中。搜广推算是一个典型的以表格型数据为输入的场景了,长久以来都对特征的构建很重视。学界和业界针对特征交叉也是做了很多工作,各种特征交叉方案层出不穷,如GBDT+LR、FM、Wide&Deep、DeepFM、DCN、xDeepFM等,可见特征交叉之重。当然,现在深度学习的推广,场景数据来源也更多样化和复杂化,特征工程的作用势微、成本增大。这里主要对Addictive和Multiplicative两种类型的交叉做一个回顾和介绍。当然,并不局限于推荐系统中。
对于两个特征 x 1 , x 2 x_1, x_2 x1,x2,它们的加性操作为: a x 1 + b x 2 + c a x_1 + b x_2 + c ax1+bx2+c,可以看出这很类似于逻辑回归中的操作,乘性操作为: a x 1 x 2 + c a x_1 x_2 + c ax1x2+c。从这两种操作的次数来看,加性操作是一阶的,乘性操作是二阶的。因此,FM在LR地基础上引入了不同特征相乘后的交叉特征,即包含了更高阶的特征。
更广泛地来看,脱离了推荐场景后,如果我们有两个输入
x
,
z
x, z
x,z,输入可以是标量或者向量,两个输入的特征交叉(此时或许可以给一个更泛化的名字,融合?)可以描述为:
y
=
ϕ
(
x
,
z
)
y = \phi(x, z)
y=ϕ(x,z)
在论文On Multiplicative Integration with
Recurrent Neural Networks中,加性操作为:
y
=
W
x
+
U
z
+
b
y = W x + U z + b
y=Wx+Uz+b,乘性操作为:
y
=
W
x
⊙
U
z
+
b
y = W x \odot U z + b
y=Wx⊙Uz+b,其中
⊙
\odot
⊙为Hardmard product。在乘性操作中,
W
x
W x
Wx和
U
z
U z
Uz可以互相约束(控制),这一操作在LSTM和GRU中都很常见。除了融合方式上的不同,加性和乘性还有什么不同呢?这篇文章还从梯度的角度进行了分析,简单来说就是在循环神经网络中乘性操作能缓解梯度消失和爆炸问题。
偶然发现一篇从统计视角介绍变量间交互作用的博文:交互作用: 相加交互,相乘交互。在这篇博文里,从统计的角度讨论了两个变量间的交互,即相互影响,讨论了相加交互和相乘交互。插一嘴,如果沿着这个讨论下去,或许和因果推断更接近了。