FM
2022-11-11

 

 

背景知识

实对称矩阵分解

如果矩阵W为实对称矩阵,那么该矩阵可按如下公式进行分解:

(1)Wn×n=Vn×kVk×nT

 

FM模型

FM简介

FM(Factor Machine)又称为因子分解机,主要用于电商推荐场景。

问题提出

假设特征的维度为d,特征数据为x=(x1,x2,,xd),那么,对于线性模型定义如下:

(2)y^(x)=u0+i=1duixiu0u={u1,u2,,ud}

该模型较为简单,没有考虑特征交叉的情况。为了提高模型的预测能力,现加入两两特征交叉:

(3)y^(x)=u0+i=1duixi+i=1dj=i+1dwijxixjW=|w11w1dwd1wdd|d×d

由上式可知,特征交叉后的模型其复杂度为o(d2),复杂度较高。

 

模型优化

考虑到W=VVT,可以对模型进行如下优化:

(4)y^(x)=u0+i=1duixi+i=1dj=i+1dwijxixj=u0+i=1duixi+i=1dj=i+1dvi,vjxixj=u0+i=1duixi+12i=1dj=1dvi,vjxixj12i=1dvi,vixixi=u0+i=1duixi+12(i=1dj=1dq=1kviqvjqxixji=1dq=1kviqviqxixi)=u0+i=1duixi+12q=1k(i=1dj=1dviqvjqxixji=1dviq2xi2)=u0+i=1duixi+12q=1k[(i=1dviqxi)(j=1dvjqxj)i=1dviq2xi2]=u0+i=1duixi+12q=1k[(i=1dviqxi)2i=1dviq2xi2)]vi,vjV

可以看到,模型优化后的复杂度为o(kd)

损失函数求导

回归问题

一般使用MSE:

(5)loss(y^,y)=12i=1m(y^(i)y(i))2my^(i)iy(i)i

对参数求导为:

(6)Loss(y^,y)θ=i=1m(y^(i)y(i))y^(i)θθ

 

分类问题

一般使用交叉熵损失函数:

(7)Loss(y^,y)=[i=1my(i)logσ(y^(i))+(1y(i))log(1σ(y^(i))]σSigmoid

对参数求导为:

(8)Loss(y^,y)θ=[i=1my(i)1σ(y^(i))σ(y^(i))y^(i)y^(i)θ+(1y(i))1(1σ(y^(i))σ(y^(i))y^(i)y^(i)θ]=[i=1my(i)1σ(y^(i))σ(y^(i))(1σ(y^(i)))y^(i)θ+(y(i)1)1(1σ(y^(i))σ(y^(i))(1σ(y^(i)))y^(i)θ]=[i=1my(i)(1σ(y^(i)))y^(i)θ+(y(i)1)σ(y^(i))y^(i)θ]=[i=1my^(i)θ(y(i)σ(y^(i)))]

y^对参数求导

可以看到,回归或分类问题最终都需要求y^对参数的偏导数,如下:

(9)y^θ={1, if θ=u0xi, if θ=ui(xij=1dvjqxj)viqxi2, if θ=viq

 

参考文档

  1. 17.9. Factorization Machines — Dive into Deep Learning 1.0.0-alpha1.post0 documentation (d2l.ai)
  2. 万字长文,详解推荐系统领域经典模型FM因子分解机 - 知乎 (zhihu.com)