- 构建企业级推荐系统:算法、工程实现与案例分析
- 刘强
- 426字
- 2021-08-06 15:00:06
7.5.2 FFM
在FM的基础上,FFM(Field-aware Factorization Machine)提出field的概念。一般来说,同一个ID类特征(如推荐中的用户和标的物特征)进行one-hot而产生的所有特征都可以归为同一个field。在FFM中,对每一个特征xi、每一个field fj,学习一个隐向量vi,fj,不同的特征跟同一个field进行关联时使用不同的隐向量。假设总共有n个特征,属于f个field,那么每个特征都用f个隐向量来描述,所以总共有n×f个隐向量。而FM中,一个特征只有一个隐向量,所以FM可以看成FFM中所有特征都属于同一个field的特例。相对FM来说,FFM有更多的二阶交叉参数(FFM有n×k×f个参数,而FM只有n×k个),训练时间会更长,但是在很多情况下效果会更好,具体的模型公式如下。
其中,内积表示让特征i与特征j的field关联,同时让特征j与i的field关联,由此可见,FM的交叉是针对特征之间的,而FFM是针对特征与field之间的交叉。
感兴趣的读者可以阅读本章参考文献[22]来了解更多细节,并且论文作者也提供了一个基于C++的FFM的开源实现https://github.com/ycjuan/libffm。另外一个基于Python的实现请参考https://github.com/aksnzhy/xlearn,它包含LR、FM、FFM等常用机器学习模型。