1、FM模型理论和实践
FM(Factorization Machine)主要是为了解决数据稀疏的情况下,特征怎样组合的问题
数据的稀疏性,是实际应用场景中面临的一个非常常见的挑战与问题。与线性模型相比,FM的模型就多了后面特征组合的部分。
在数据很稀疏的情况下,满足xi,xj都不为0的情况非常少.对每一个特征分量xi引入辅助向量Vi=(vi1,vi2,?,vik),当交叉项参数全为0时退化为普通的LR模型。
FM求解:https://www.jianshu.com/p/152ae633fb00
2、FFM模型
FFM把相同性质的特征归于同一个field。在FFM中,每一维特征,针对每一种field ,都会学习到一个隐向量,因此,隐向量不仅与特征相关,也与field相关。
FM每个特征只有一个共享的embedding向量,
而对于FFM的一个特征,则有(F-1)个特征embedding向量,用于和不同的特征域特征组合时使用。
FFMgithub举例:
https://github.com/princewen/tensorflow_practice/tree/master/recommendation-FFM-Demo
3、DEEPFM
类似于FFM中的思想,将特征分为不同的field,以免全部onehot导致网络参数太多,再加两层的全链接层,让Dense Vector进行组合得到高阶特征。低阶特征组合单独建模,然后融合高阶特征组合。
FM和深度网络DNN的结合也就成为了CTR预估问题中主流的方法
https://www.jianshu.com/p/e7b2d53ec42b 《【通俗易懂】手把手带你实现DeepFM!》
4、NFM模型和AFM模型
NFM模型将FM与神经网络结合以提升FM捕捉特征间多阶交互信息的能力。根据论文中实验结果,NFM的预测准确度相较FM有明显提升,并且与现有的并行神经网络模型相比,复杂度更低。
NFM本质上还是基于FM,FM会让一个特征固定一个特定的向量,当这个特征与其他特征做交叉时,都是用同样的向量去做计算。这个是很不合理的,因为不同的特征之间的交叉,重要程度是不一样的。因此,学者们提出了AFM模型(Attentional factorization machines),将attention机制加入到我们的模型中,关于AFM的知识,我们下一篇来一探究竟。
模型总结
推荐系统的EE问题
Bandit算法、 LinUCB算法