#Paper Reading# Field-aware factorization machines for CTR prediction

论文题目: Field-aware factorization machines for CTR prediction
论文地址: https://dl.acm.org/citation.cfm?id=2959134
论文发表于: RecSys 2016(CORE B类会议)

论文大体内容:
本文主要介绍了FM模型的变种——FFM(Field-aware Factorization Machines)模型,该模型在各项比赛、应用中,都能取得比FM更好的结果;

1. 本文主要工作包括:
①第一次将FFM模型用于解决CTR问题;
②FFM=Poly2+FMs,并取得比单模型更好的效果;
③训练FFM的方式和trick;
④开源代码;

2. 每个vector是k维度,所以FM参数个数是 nk ,复杂度 O(nn)优化到O(nk);而FFM参数个数是 nfk,复杂度是O(nnk);但是FFM的k比FM的k小;
#Paper Reading# Field-aware factorization machines for CTR prediction

3. FFM方程如下,本质是在FM的基础上,再划分一个维度Field,所以参数个数提升了f倍(Field的数量),计算复杂度也提升了;
#Paper Reading# Field-aware factorization machines for CTR prediction

4. FFM伪代码如下,里面采用了Adagrad的算子,因为Adagrad算子在MF上比较有效;
#Paper Reading# Field-aware factorization machines for CTR prediction

5. FFM模型对参数比较敏感,并且由于参数较多,所以很容易overfitting,这时候需要使用Early stopping来避免overfitting:
①使用验证集来计算loss;
②观察到loss增加,就记录下当前的epoch;
③用记录下的epoch来retrain整个trainset(包括验证集);

6. 结合自己经验来看,FFM确实能够提升模型的效果,但是无论是离线训练,还是在线serving,对资源的耗费都是巨大的,好不容易训练出一个特别好的FFM模型,但是因为资源问题导致RT过高,上线不了,这也是特别郁闷的;


参考资料: 
[1] https://zhuanlan.zhihu.com/p/59528983
[2] https://tech.meituan.com/2016/03/03/deep-understanding-of-ffm-principles-and-practices.html


以上均为个人见解,因本人水平有限,如发现有所错漏,敬请指出,谢谢!