周五下午吧,翻开那本推荐系统的书,看到了MF和FM在一块,单从字面来看两个是完全对称的字母,但是却是不同的东西,今天把它们放在一起又是有关联的存在。
MF — Matrix Factorization — 矩阵分解
FM— Factorization Machine —因子分解机
从中文的翻译来看,都是有分解的字面在里面,其实这里面的确都会涉及到这些知识。
在学习MF的时候经常举例的就是那个movie数据集了,这里我简单的用excel表示了一下,图中就5个用户,4个物料,1表示用户喜欢这个物料,0表示不喜欢。MF的思想就是将上图这个矩阵拆分成两个小矩阵:
R=U*I
U表示用户,I表示物料,两者都存在同一个向量空间,那么可以直接基于embedding 查询的方式来找用户喜欢的物料。
但是考虑一些额外因素:1、一些用户给分偏高,一些用户给分较低,2、一些物品本就比较受欢迎,一些物品不被大众所喜爱,3、评分系统的固有属性,与用户物品都无关。因此,考虑到这些因素,将用户对物品的预测函数升级为:
R_{u,i}=bias_{init}+bias_u+bias_i+U*I
升级成这样也是为了后续对比MF的时候更加的方便对比说明。
因子分解机我就直接贴公示了,相比其原理就不在此赘述,
R_{u,i}=bias+\sum_{i=1}^{n}w_i*x_i+\sum_{i=1}^{n}\sum_{j=i+1}^{n}<v_i,v_j> *x_i *x_j
现在说明FM和MF之间的关系,我们假设只用了用户id和物料id的one-hot编码,那么从之前的图来看,特征向量的长度是9,用户5物料4,我们看下第4行即第四个用户,那么现在的向量就是[0,0,0,1,0,0,1,0,0]
将这个向量带入到FM的计算公式可以得到
R=bias+w_4+w_7+<v4,v7>
因为只有4和7位置才有对应的数据,所以这个结果的形式对比MF的结果基本上都是一模一样。那么在回头看,我们只用了id类特征,殊不知其实用户和物料本身还有很多其他的特征,比如电影的时长,导演等等。
所以到这里得到的结论就是MF是FM的精简版本。