Introduction
在类似协同过滤的场景下,SVM的作用不如一些如PARAFA等直接进行矩阵因子分解的模型。
Why:
因为在含有大量稀疏数据的场景下,SVM不能从复杂的核空间中学到可靠的超平面。
FM的优点:
- 能在高维稀疏数据的场景下进行参数估计(SVM并不擅长)。
- 能关联变量间的相互作用。
- 线性的计算时间,线性的参数量
- 可以使用任意实数域的特征向量进行预测(其他因子分解模型对输入数据非常严格)
Prediction under sparsity
最普遍的CTR场景是通过训练集
D={(x(1),y(1)),(x(2),y(2)),...}
估计一个函数:
y:Rn→T
从
x∈Rn特征向量映射到目标域
T
Factorization Machine Model
定义
y^(x):=w0+i=1∑nwixi+w^i,jxixj
可转化为:
y^(x):=w0+i=1∑nwixi+i=1∑nj=i+1∑n<vi,vj>xixj
其中:
(1)
w0∈R,w∈Rn,V∈Rn×k
(2)<·,·> 为两个K维向量的点乘(K为超参数)
<vi,vj>:=f=1∑kvi,j⋅vj,f
因为实践中通常没有足够数据去预估
W^因此K值选择数值较小的值。
(3)
w^i,j:=<vi,vj>
代表第i个变量和第j个变量的相互关系(interaction),因为任意正定矩阵存在一个矩阵
V令
W=V⋅VT,因此使用因子分解后的
V进行转化。
推导
在数据非常稀疏的场景下,由于大部分特征
xi,xj的值为0,因此很难直接求解出
W^,因此通过引入辅助变量
Vi=(vi1,vi2,...,vik)。
V=⎝⎜⎜⎜⎛v11v21⋮vn1v12v22⋮vn2.........v1kv2k⋮vnk⎠⎟⎟⎟⎞n×k=⎝⎜⎜⎜⎛v1v2⋮vn⎠⎟⎟⎟⎞
因此:
W^=V⋅VT=⎝⎜⎜⎜⎛v1v2⋮vn⎠⎟⎟⎟⎞⋅(v1Tv2T...vnT)
求解
i=1∑nj=i+1∑n<vi,vj>xixj
由于
i=1∑nj=i+1∑n<vi,vj>xixj=⎝⎜⎜⎜⎛<v1,v1>x1x1<v2,v1>x2x1⋮<vn,v1>xnx1<v1,v2>x1x2<v2,v2>x2x2⋮<vn,v2>xnx2<v1,v3>x1x3<v2,v3>x2x3⋮<vn,v3>xnx3.........<v1,vk>x1xk<v2,vk>x2xk⋮<vn,vk>xnxk⎠⎟⎟⎟⎞n×k
即
∑i=1n∑j=i+1n<vi,vj>xixj为上述实对称矩阵去除主对角线的上三角(红色部分)。
设该上三角为
A=i=1∑nj=i+1∑n<vi,vj>xixj
2A+i=1∑n<vi,vj>xixi=i=1∑nj=1∑n<vi,vj>xixj
2A=i=1∑nj=1∑n<vi,vj>xixj−i=1∑n<vi,vj>xixi
A=21i=1∑nj=1∑n<vi,vj>xixj−21i=1∑n<vi,vj>xixi
因此
i=1∑nj=i+1∑n<vi,vj>xixj=21i=1∑nj=1∑n<vi,vj>xixj−21i=1∑n<vi,vj>xixi=21(i=1∑nj=1∑nf=1∑kvi,fvj,fxixj−i=1∑nf=1∑kvi,f,vj,fxixi=21f=1∑k((i=1∑nvi,fxi)(j=1∑nvj,fxj)−i=1∑nvi,f2xi2)=21f=1∑k((i=1∑nvi,fxi)2−i=1∑nvi,f2xi2)
使用SGD对模型进行训练,梯度如下:
∂θ∂y^(x)=⎩⎪⎨⎪⎧1xixi∑j=1nvj,fxj−vi,fxi2 if θ=w0 if θ=wi if θ=vi,f