传统的线性模型如LR中,每个特征都是独立的,如果需要特征与特征直接的交互作用,需要人工对特征进行交叉组合,例如核方法。但是在特征高度稀疏的情况下,并不能很好地进行学习。
很多分解模型Factorization model如矩阵分解MF,SVD++等,这些模型可以学习到特征之间的交互隐藏关系,但是每个模型都只适用于特定的输入和场景。
因此,在高度稀疏的数据场景下推荐系统FM(Factorization Machine)出现了。
FM模型目标函数y(x)=w0+∑i=1nwixi+∑i=1n∑j=i+1n<vi,vj>xixjy(x)=w_{0}+\sum_{i=1}^{n}w_{i}x_{i}+\sum_{i=1}^{n}\sum_{j=i+1}^{n}<v_{i},v_{j}>x_{i}x_{j}y(x)=w0+i=1∑nwixi+i=1∑nj=i+1∑n<vi,vj>xixj<vi,vj><v_{i},v_{j}><vi,vj>是输入特征i,j之间的交叉参数,vi和vjv_{i}和v_{j}vi和vj都是k维向量。
模型的计算复杂度O(kn)∑i=1n∑j=i+1n<vi,vj>xixj\sum_{i=1}^{n}\sum_{j=i+1}^{n}<v_{i},v_{j}>x_{i}x_{j}i=1∑