FM
FM算法的提出旨在解决稀疏数据下的特征组合问题。
y=w0+i=1∑nwixi+i=1∑n−1j=i+1∑nwijxixj,(w0,wi,wij∈R)
分解wij=<vi,vj>=k=1∑Kvikvjk
i=1∑n−1j=i+1∑nwijxixj=21(i=1∑nj=1∑nwijxixj−i=1∑nwiixi2)=21(i=1∑nj=1∑nk=1∑Kvikvjkxixj−i=1∑nk=1∑Kvik2xi2)
=21k=1∑K((i=1∑nvikxi)(j=1∑nvjkxj)−i=1∑n(vikxi)2)=21k=1∑K((i=1∑nvikxi)2−i=1∑n(vikxi)2)
其中vi=(vi1,vi2,⋯,viK)是第i维特征的隐向量。【1】隐向量的长度为k(k<<n),包含k个描述特征的因子。由上可见,二次项的参数数量减少为kn个,远少于多项式模型的参数数量。即通过矩阵分解,二次项可以化简,复杂度可以从O(kn2)优化到O(kn)。【2】参数因子化使得xhxi的参数和xixj的参数不再是相互独立的,因此可以在样本稀疏的情况下相对合理地估计FM的二次项参数。具体来说,xhxi和xixj的系数分别为<vh,vi>和<vi,vj>,它们之间有共同项vi。也就是说,所有包含“xi的非零组合特征”(存在某个j̸=i,使得xixj̸=0)的样本都可以用来学习隐向量vi,这很大程度上避免了数据稀疏性造成的影响。而在多项式模型中,whi和wij是相互独立的。【3】以上包含二阶项的拟合函数,可以采用不同的损失函数用于解决回归、二分类等问题,比如可以采用MSE(Mean Square Error)损失函数来求解回归问题,也可以采用Hinge/Cross-Entropy损失来求解分类问题。当然,在进行二元分类时,FM的输出需要经过sigmoid变换,这与Logistic回归是一样的。
回归问题(MSE)
记样本的真实的标签为y^,FM模型预测的标签为y,训练集大小为N,则
loss(y^,y)=21l=1∑N(y^(l)−y(l))2=21l=1∑N{y^(l)−[w0(l)+i=1∑nwi(l)xi+21k=1∑K((i=1∑nvik(l)xi)2−i=1∑n(vik(l)xi)2)]}
求导:∂θ∂loss(y^,y)=l=1∑N(y^(l)−y(l))∂θ∂y(l)
利用SGD训练模型,各参数梯度:∂θ∂y(l)=⎩⎪⎪⎪⎨⎪⎪⎪⎧1,xi,xij=1∑nvj,kxj−vi,kxi2,θ=w0θ=wiθ=vi,k
分类问题(logloss)
记样本的真实的标签为y^,FM模型预测的标签为y,训练集大小为N;当正负样本的标签分别为+1和−1时,交叉熵损失可以表示为
loss(y^,y)=l=1∑N−lnσ(y^(l)y(l))=l=1∑N−ln1+e−y^(l)y(l)1=l=1∑N−ln1+e−y^(l)[w0(l)+i=1∑nwi(l)xi+21k=1∑K((i=1∑nvik(l)xi)2−i=1∑n(vik(l)xi)2)]1
求导:∂θ∂loss(y^,y)=l=1∑N−σ(y^(l)y(l))1⋅∂y(l)∂σ(y^(l)y(l))⋅∂θ∂y(l)
同样,利用SGD训练模型,各参数梯度:∂θ∂y(l)=⎩⎪⎪⎪⎨⎪⎪⎪⎧1,xi,xij=1∑nvj,kxj−vi,kxi2,θ=w0θ=wiθ=vi,k
FFM
通过引入field的概念,FFM把相同性质的特征/归于同一个field。FM可以看作FFM的特例,是把所有特征/都归属到一个field时的FFM模型。
y=w0+i=1∑nwixi+i=1∑n−1j=i+1∑n<vi,fj,vj,fi>xixj
注意,这里i是特征,属于fieldfi;vi,fj表示特征fi对fieldfj的隐向量。
基于field的FFM和FM的区别:(1)FM特征xi、xj、xk交叉时,对应的隐向量vi、vj、vk是可以无区别得互相交叉的,即“xixj的系数为vivj”,“xixk的系数为vivk”,很显然:xi无论与特征xj、还是特征xk做交叉时,组合系数都是同一个vi,并没有区别开。(2)FFM也是对特征进行交叉(5个feature两两交叉C52),但是FFM的特征xi、xj、xk交叉时,对应的隐向量vi、vj、vk不能不考虑field互相交叉;即xi与特征xj、xi与特征xk做交叉时,组合系数不能使用同一个vi,应该根据field信息区别为vi,fj和vi,fk。只有feature xj和xk属于同一field时,有vi,fj=vi,fk。
结合上图表格:(1)feature1-User分别与feature2-Movie和feature5-Price做交叉时,由于feature2-Movies属于field2、feature5-Price属于field4,所以feature1-User和feature2-Movie组合的系数为<v1,2,v2,1>,feature1-User和feature5-Price组合的系数为<v1,4,v5,1>,即v1,2和v1,4是不同的两项。(2)feature1-User分别与feature3-Genre和feature4-Genre做交叉时,由于feature3-Genre和feature4-Genre都属于field3,所以feature1-User和feature3-Genre组合的系数为<v1,3,v3,1>,feature1-User和feature4-Genre组合的系数为<v1,3,v4,1>,即v1,3和v1,3是相同的项。
FM背景及相关算法对比
(1)FM(factorization machine)是在LR(logistic regression)基础上,加入了特征的二阶组合项;
(2)SVM和FM的主要区别在于,SVM的二元特征交叉参数是独立的,如wij,而FM的二元特征交叉参数是两个k维的向量vi、vj,即<vi,vj>和<vj,vm>是相互影响的。
Q:为什么线性SVM在和多项式SVM在稀疏条件下效果会比较差呢?A:线性SVM只有一维特征,不能挖掘深层次的组合特征在实际预测中并没有很好的表现;而多项式SVM正如前面提到的,交叉的多个特征需要在训练集上共现才能被学习到,否则该对应的参数就为0,对测试集上的case而言这样的特征就失去了意义,因此在稀疏条件下,SVM表现并不能让人满意。而FM不一样,通过向量化的交叉,可以学习到不同特征之间的交互,进行提取到更深层次的抽象意义。
参考文献
https://tech.meituan.com/2016/03/03/deep-understanding-of-ffm-principles-and-practices.html