FFM算法
FFM算法是在FM算法上引入了field的概念,FFM把相同性质的特征归于同一个field。比如下图中“Day=26/11/15”、“Day=1/7/14”、“Day=19/2/15”这三个特征代表日期,放到同一个field中。
当“Day=26/11/15”与Country特征,Ad_type特征进行特征组合时,使用不同的隐向量(Field-aware),这是因为Country特征和Ad_type特征,本身的field不同
FM算法 VS FFM算法
对于FM算法:
w
E
S
P
N
⋅
w
N
i
k
e
+
w
E
S
P
N
⋅
w
M
a
l
e
+
w
N
i
k
e
⋅
w
M
a
l
e
w_{E S P N} \cdot w_{N i k e}+w_{E S P N} \cdot w_{M a l e}+w_{N i k e} \cdot w_{M a l e}
wESPN⋅wNike+wESPN⋅wMale+wNike⋅wMale
- 每个特征有唯一的一个隐向量表示,这个隐向量被用来学习与其他任何特征之间的影响。
- w(ESPN)用来学习与Nike的隐性影响w(ESPN)*w(Nike),同时也用来学习与Male的影响w(ESPN)*w(Male)。但是Nike和Male属于不同的领域,它们的隐性影响(latent effects)应该是不一样的。
对于FFM算法:
W
E
S
P
N
,
A
⋅
W
Nike
,
P
+
W
E
S
P
N
,
G
⋅
W
Male
,
P
+
W
Nike
,
G
⋅
W
Male
,
A
ϕ
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
\begin{aligned} &\mathcal{W}_{E S P N, A} \cdot \mathcal{W}_{\text {Nike }, P}+\mathcal{W}_{E S P N, G} \cdot \mathcal{W}_{\text {Male }, P}+\mathcal{W}_{\text {Nike }, G} \cdot \mathcal{W}_{\text {Male }, A} \\ &\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}} \end{aligned}
WESPN,A⋅WNike ,P+WESPN,G⋅WMale ,P+WNike ,G⋅WMale ,AϕFFM(w,x)=j1=1∑nj2=j1+1∑n(wj1,f2⋅wj2,f1)xj1xj2
- 每个特征会有几个不同的隐向量, f j f_j fj 是第 j 个特征所属的field
===================================================
FM算法:
- 每个特征只有一列隐向量
- FM是FFM的特例
FFM算法 - 每个特征有多列隐向量
- 使用哪个,取决于和哪个向量进行点乘
FFM算法公式:
ϕ
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
- 隐向量的长度为 k,FFM的二次参数有 nfk 个,多于FM模型的 nk 个
- 由于隐向量与field相关,FFM二次项并不能够化简,计算复杂度是 O ( k ∗ n 2 ) O\left(k^{*} n^{2}\right) O(k∗n2),FFM的k值一般远小于FM的k值
- 特征格式:field_id:feat_id:value
- field_id代表field编号,feat_id代表特征编号,value是特征值。
- 如果特征为数值型,只需分配单独的field编号,比如评分,item的历史CTR/CVR等。
- 如果特征为分类(categorical)特征,需要经过One-Hot编码成数值型,编码产生的所有特征同属于一个field。特征值是0或1,比如性别、商品的品类id等
- 输入格式如下图:
- FFM的特征组合: