FM算法
公式:
其中
其中
利用上三角矩阵=(对称矩阵-对角矩阵)/2的思想,将其化简为
再利用梯度下降法求出V,即得到每个特征的隐含向量(能反映交叉信息),同时训练即可得到分类或回归模型。
注:V的维度为
,
的维度为
,
为超参,表示向量维度。
FFM算法
在FM的基础上引入了类别(field)的概念,n个特征(已one-hot编码)属于f个field。
此时相对于FM中的
,FFM中的
维度为
,
中有f个向量是不相同的,同一fiield下的向量是相同的。
DeepFM算法
对高阶特征组合进行建模
FM算法中
FM layer中的+的输入为onehot编码,x的输入为词向量
,ANN的输入也是词向量
。
最后的
DCN算法(Deep & cross network)
其中
是连续变量和分类变量embedding向量的组合向量
通过不断地叠加,实现了高阶的交叉cross。
参考大佬文章:https://zhuanlan.zhihu.com/p/55234968
xDeepFM算法
DCN中没有考虑field概念,xDeepFM考虑了filed概念,核心是CIN的理解:
中的m行表示有m个特征(field),每个field的向量维度为D,
一开始是初始化的向量矩阵,由embedding vector组成。
后续再通过如下算式进行特征的高阶交叉:
首先理解
:
中有
个field,
中有m个field,进行点乘的维度效果为:
z1 = x1*y1;z2 = x2*y1,z3 = x3*y3;z4 = x1*y4
最后得到一个维度为
的矩阵,可以理解为有D个样本(每个样本是一个embedding维度),每个样本有
个特征和m个特征的交叉,即有
个值。
再理解
:
其中向量
为权重向量,最后得到维度为
的矩阵
,最后对每个filed的向量进行加总求和实现sum pooling。
在用代码实现过程中,可将维度为
的矩阵的矩阵进行压缩,得到维度为
的矩阵,然后用维度为
的filter进行conv1d的卷积操作,再进行sum_pooling操作。
参考大佬文章:https://zhuanlan.zhihu.com/p/57162373