论文链接:
https://www.csie.ntu.edu.tw/~cjlin/papers/ffm.pdf
主要内容
Field-aware Factorization Machines(FFM)场感知分解机是FM的变种,FM的变体称为成对相互作用张量因子化(PITF)被提出用于个性化标签推荐。在2012年KDD杯中,PITF被称为“因子模型”的概括由Team Opera提出。因为这个术语太笼统,很容易与分解机器混淆,我们称之为“现场感知分解机器”(FFM)PITF和FFM之间的区别在于PITF考虑了三个特殊字段,包括“用户”,“项目”和“标记”,而FFM则更为通用。
VS Poly2&FM
Poly2:
ϕ
P
o
l
y
2
(
w
,
x
)
=
∑
j
1
=
1
n
∑
j
2
=
j
1
+
1
n
w
h
(
j
1
,
j
2
)
x
j
1
x
j
2
\phi_{\mathrm{Poly} 2}(\boldsymbol{w}, \boldsymbol{x})=\sum_{j_{1}=1}^{n} \sum_{j_{2}=j_{1}+1}^{n} w_{h\left(j_{1}, j_{2}\right)} x_{j_{1}} x_{j_{2}}
ϕPoly2(w,x)=j1=1∑nj2=j1+1∑nwh(j1,j2)xj1xj2
FM:
ϕ
F
M
(
w
,
x
)
=
∑
j
1
=
1
n
∑
j
2
=
j
1
+
1
n
(
w
j
1
⋅
w
j
2
)
x
j
1
x
j
2
\phi_{\mathrm{FM}}(\boldsymbol{w}, \boldsymbol{x})=\sum_{j_{1}=1}^{n} \sum_{j_{2}=j_{1}+1}^{n}\left(\boldsymbol{w}_{j_{1}} \cdot \boldsymbol{w}_{j_{2}}\right) x_{j_{1}} x_{j 2}
ϕFM(w,x)=j1=1∑nj2=j1+1∑n(wj1⋅wj2)xj1xj2
在稀疏数据集上,FMs模型要比poly2模型好一些,比如对于上述例子中,对于pair(ESPN,Adidas)只有一个唯一的负样本,通过poly2模型会学习到一个大的负向权重对于这个pair,然而对于FMs来说,因为它是学习ESPN和Adidas的隐向量表示,所有包含ESPN的样本和所有Adidas的样本都会被分别用来学习这2个隐向量,所以它的预测会更准确一些。
FFM模型
原文挺清楚的,这边排版不好的话推荐看原文
In our example, φFFM(w,x) is wESPN,A · wNike,P + wESPN,G · wMale,P + wNike,G · wMale,A. We see that to learn the latent effect of (ESPN, NIKE),wESPN,A is used because Nike belongs to the field Adver- tiser, and wNike,P is used because ESPN belongs to the field Publisher. Again, to learn the latent effect of (EPSN, Male), wESPN,G is used because Male belongs to the field Gender, and wMale,P is used because ESPN belongs to the field Pub- lisher. Mathematically,
ϕ
F
F
M
(
w
,
x
)
=
∑
j
1
=
1
n
∑
j
2
=
j
1
+
1
n
(
w
j
1
,
f
2
⋅
w
j
2
,
f
1
)
x
j
1
x
j
2
\phi_{\mathrm{FFM}}(\boldsymbol{w}, \boldsymbol{x})=\sum_{j_{1}=1}^{n} \sum_{j_{2}=j_{1}+1}^{n}\left(\boldsymbol{w}_{j_{1}, f_{2}} \cdot \boldsymbol{w}_{j_{2}, f_{1}}\right) x_{j_{1}} x_{j_{2}}
ϕFFM(w,x)=j1=1∑nj2=j1+1∑n(wj1,f2⋅wj2,f1)xj1xj2
f2表示j2的field,f1表示j1的field。
具体代码实现见:
https://github.com/DrWelles/CTR_Prediction
结论
FFM还支持并行化处理,所以速度比较快。FFM在稀疏数据的处理上比LM,poly2,FM效果要好很多,它把field的概念融入了FM中,很值得学习。实际在运用的时候要根据具体的问题来调参才会达到比较好的效果。
参考:
https://www.zuanbi8.com/talk/16476.html
https://blog.youkuaiyun.com/john_xyz/article/details/78933253