注: 本地学习参考杨海力的PPT ,在附件中可查
FM最早是在2010年提出的,旨在解决稀疏数据下的特征组合问题,是CTR预估中最常用的算法之一。
存在问题:
稀疏矩阵,占用存储和计算计算
稀疏矩阵中,某些特征维度经过关联存在某种关系,且这种关系普遍存在。LR模型,没有组合特征关系的功能。
一般线性模型为:
为了标书特征间的相关性,我们用多项式模型,在多项式模型中,Xi、Xj的组合用XiXj表示,只有两个特征都非零时,组合特征才有意义,这里采用二阶多项式模型:
其中,n代表样本的特征数量,Xi是第i个特征的值,W0、Wi、Wij是要训练的参数。
从模型中可以看到,二次项部分是对称的,组合特征的参数一共有n(n-1)/2,因为只有Xi,Xj都为非零时,组合特征才有意义,对于的参数才能通过样本训练得到,但是,大部分情况下,数据非常稀疏,Xi,Xj都为非零的量非常少,就导致没有足够的样本来训练Wij,那么有没有办法可以以在样本不足的情况下也能训练出相对准确的参数呢?
如果W是n维实对称矩阵,并且对角元都是非负的,那么W可以分解为两个矩阵的乘机:
这里k<<n,V的第j列表示j个特征的隐向量,每个参数Wi,j = <Vi, Vj>,这便是FM模型的核心思想。
因此FM模型如下:
其中,Vi代表第i维特征的隐向量, <...,...>表示向量点积,k表示隐向量的长度,包含k个特征描述的因子。
矩阵分解后:
二次项参数减少为kn个。
参数因子化使得XhXi 和 XiXj的参数不再相互独立
优化后计算复杂度为O(kn)
目前,FM的优化算法主要包括以下三种:
1、随机梯度下降法(SGD)
2、交替最小二乘法(ALS)
3、马尔科夫链蒙特卡洛方法(MCMC)