FM / FFM / Wide&Deep / DeepFFM
FM
LR + 特征交叉项:进行特征组合增强模型泛化能力。
$$ y=w_{0}+\sum_{i=1}^{n}{w_{i}x_{i}}+\sum_{i=1}^{n}{\sum_{i+1}^{n}{<v_{i},v_{j}>x_{i}x_{j}}} $$
式中$v_i$为特征的embedding向量
FFM
FM + Field:将特征按照事先规则分多个场。每个特征将被映射为多个隐向量,每个隐向量对应一个场。当两个特征组合时,用对方对应的场对应的隐向量做内积。FM可看做只有一个场的FFM。
$$ y=w_{0}+\sum_{i=1}^{n}{w_{i}x_{i}}+\sum_{i=1}^{n}{\sum_{i+1}^{n}{<v_{i,f_j}, v_{j,f_i}>x_{i}x_{j}}} $$
Wide & Deep
Wide + Deep:由浅层(或单层)的Wide部分神经网络和深层的Deep部分多层神经网络组成,输出层采用softmax或logistics regression综合Wide和Deep部分的输出。Wide部分有利于增强模型的“记忆能力”,Deep部分有利于增强模型的“泛化能力”。
$$ P(Y=1|x)=\sigma(W^T_{wide}[x, \phi (x)] + W^T_{deep}a^{l_f} + b) $$
DeepFM
Deep + FM:用FM做特征间低阶组合,用Deep NN部分做特征间高阶组合,并行方式组合。DeepFM不需要预训练和人工特征工程。
$$\hat y=sigmoid(y_{FM}+y_{DNN})$$
tf.nn.embedding_lookup_sparse()
多值离散特征的embedding处理
DCN
Deep + Cross: 深度神经网络+应用显式特征交叉。特征交叉部分公式为:
$$x_{l+1}=x_0x^T_lw_l+b_l+x_l=f(x_l, w_l, b_l)+x_l$$
面试问题
- DeepFM和Wide&Deep的deep部分有什么不同?
原生的wide&deep里面的deep输入是onehot,数值特征和标签特征都有;DeepFM中的deep是连续数值的embedding输入,且与FM的embedding共享,训练更快更准确。