FM模型小结

FM是一个不得不提的算法,将部分笔记内容整理到博客,内容文字不甚成系统,只作为记录点拨之用。

从特征组合说起:

对逻辑回归最朴素的特征组合就是二阶笛卡尔积,但其中也有问题所在:

  1. 两两组合导致维度灾难
  2. 组合后特征并不见得都有效,通常大量无效特征
  3. 组合后特征样本非常稀疏,如果样本中不存在对应组合,则无法学习参数,该组合无意义

Y = ω0 + Σωixi + ΣΣωijxixj

如公式,若没有足够样本能够学习到所有特征组合的权重,那么在预测这样组合的新样本时,只能放弃,因为没有合适的权重

针对这个问题,提出了因子分解机模型FM(Factorization Machine)。

 

FM模型:

1. 原理

FM在2010年被提出,因为逻辑回归在特征组合时由于样本稀疏无法学习到很多组合的权重问题,因子分解机的提出者就想,能否对上面公式的ωij解耦,让每一个特征学习一个隐因子向量出来。

类似于之前提的LFM,为每个用户和每个物品各自学习一个隐因子向量一样,只是把用户与物品的组合变为特征与特征的组合。这样一来,任何两个特征在使用时需要组合,那么掏出各自携带的隐因子变量做一个向量点积,就是两者组合特征的权重了。

Y = ω0 + Σωixi + ΣΣ<Vi, Vj>xixj

这个公式和前面特征组合公式相比,不再是用原来的ωij权重,而是利用两个隐因子向量的点积代替

 

背后假设:其实是认为两个特征之间,即使没有共同出现在一条样本中,但也是有间接联系的。比如特征A和特征B曾在一些样本中一起出现过,A和C也一起出现过,那么特征A和特征C无论是否在样本中一起出现过,都应该有某些联系

 

在实际预测CTR时,特征A和特征C真的在一起出现了,如果用的是FM模型,这时预测程序便从数据库中调取特征A和特征C的隐因子向量,拿出来做一个点积运算,就得到了A和C的特征组合的权重

 

因子分解机先进之处就在此。也可以同样的,做三阶、四阶的组合,但组合越多,计算复杂度陡增,因此在实际使用中,FM通常表演到二阶特征组合就够了

 

2. 模型训练

因子分解机的参数学习无特别之处,看目标函数,对于二分类问题,输出需要经过sigmoid函数变换,依然可以用于LR同样的交叉熵损失。

对这个交叉熵损失求梯度下降或SGD就可以得到模型参数,没有区别。

注意损失函数还需要加正则项,控制偏差和方差

 

3. 预测阶段

在实际计算中,FM的二阶特征组合点积的计算复杂度有点高。如果隐因子维度是k,特征维度是n,那么复杂度就是O(kn^2)。其中n^2表示特征需要两两组合,k是每次组合需要计算k维向量的点积。因此需要稍微改造一下。

Loop1:循环k次,k是隐因子向量的维度,其中,循环到第f次时:

Loop2:循环n个特征,第i次循环时:

  1. 从第i个特征的隐因子向量中拿出第f维的值
  2. 计算两个值:A是特征是和f维的值相乘,B是A的平方

把n个A累加起来,并平方得到C,把n个B也累加起来,得到D

C - D得到E

 

最后把k次循环得到的k个E累加除以2

这就是因子分解机中,而结组合部分的实际计算方法,这样做的计算复杂度只是O(kn)

 

4. 一网打尽其他模型

这里说的一网打尽并不是打败,而是说FM可以变形成其他模型

1、若样本特征只保留用户id和电影id,FM模型变成:

Y = ω0 + ωu + ωi + <Vu, Vi>

在一条样本中,各自都只有一个维度为1,其他都是0,所以在一阶部分没有求和,二阶部分也只剩下一个1,其他为0。这就是带有偏置信息的SVD矩阵分解

2、继续若在样本特征加入用户历史评分过的电影id,再求隐因子向量,这就是SVD++

 

因此,因子分解机是把矩阵分解一网打尽了,顺便还干起逻辑回归的工作,也正因如此,因子分解机常常用来做模型融合,在推荐系统的排序阶段肩负起对召回结果重排序的任务

 

FFM

在FM的基础上进行一些改进,改机的思路是,不但认为特征和特征之间潜藏着一些关系,还认为特征和特征类型之间潜藏着关系。

这个特征类型,就是某些特征实际上是来自数据的同一个字段,比如用户ID,占据了很多维度,变成了很多特征,但他们都属于同一个类型,都叫用户ID。这个特征类型就是字段,Field。

之前的FM中,认为每个特征由一个隐因子向量,FFM改进的是二阶组合部分,改进的模型认为每个特征有f个隐因子向量,这里的f便是特征一共来自多少个field,二阶部分变为ΣΣ<Vi,fj,Vj,fi>xi xj

FFM模型也常用来做CTR预估,在FM和FFM实践中,需要对样本做归一化处理。

 

总结:

严格来说,因子分解机也算矩阵分解算法的一种,因为它的学习结果也是隐因子向量,也是用过隐因子向量的点积代替原来的单个权重参数。

猜你喜欢

转载自blog.csdn.net/lyx_yuxiong/article/details/81238855
FM