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算法:
wESPN⋅wNike+wESPN⋅wMale+wNike⋅wMale
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算法:
WESPN,A⋅WNike ,P+WESPN,G⋅WMale ,P+WNike ,G⋅WMale ,AϕFFM(w,x)=∑j1=1n∑j2=j1+1n(wj1,f2⋅wj2,f1)xj1xj2
\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
- 每个特征会有几个不同的隐向量,fjf_jfj 是第 j 个特征所属的field
===================================================
FM算法:
- 每个特征只有一列隐向量
- FM是FFM的特例
FFM算法 - 每个特征有多列隐向量
- 使用哪个,取决于和哪个向量进行点乘
FFM算法公式:
ϕFFM(w,x)=∑j1=1n∑j2=j1+1n(wj1,f2⋅wj2,f1)xj1xj2
\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∗n2)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的特征组合: