背景
FM算法全称因子分解机,具有以下特点:
- 降低了参数量,参数从 n(n+1)2 降到 kn
- 表达了特征之间的交叉
- 模型复杂度可以从O(kn2) 优化到O(kn)
- 提升了泛化能力,即使训练样本中不存在的<a,b>交叉项,也可以通过学习出的隐向量来预估
具体公式
y=w0+∑ni=1wixi+∑ni=1∑nj=i+1<vi,vj>xixj
其中vi vj 是对应xi xj 的隐向量,<vi,vj>表示两个向量的内积(inner product)
优化过程:ab+bc+ca=12⟮(a+b+c)2−a2−b2−c2⟯
∑ni=1∑nj=i+1<vi,vj>xixj
=12∑ni=1∑nj=1<vi,vj>xixj−12∑ni=1<vi,vi>xixi
=12(∑ni=1∑nj=1∑kf=1vi,fvj,fxixj−∑ni=1∑kf=1vi,fvi,fxixi)
=12∑kf=1⟮(∑ni=1vi,fxi)(∑nj=1vj,fxj)−∑ni=1v2i,fx2i⟯
=12∑kf=1⟮(∑ni=1vi,fxi)2−∑ni=1v2i,fx2i⟯
梯度下降
loss=12(y−¯y)2
∂loss∂w0=1
∂loss∂wi=xi
∂loss∂vi,f=xi∑nj=1vj,fxj−vi,fx2i