专栏首页机器学习与推荐算法推荐系统之FM与MF傻傻分不清楚

推荐系统之FM与MF傻傻分不清楚

目录

  • 前言
  • FM模型简介
  • MF模型简介
  • FM vs MF

前言

之前分享过一篇关于围绕LR周边模型展开的文章,主要前向回顾了它与Linear Regression的关系,后向介绍了它与Softmax Regression以及Linear SVM的关系,同时延伸了它与Factorization Machine的联系以及它与Multiple Layer Perceptron的关联。记得有朋友在底下评论说MF和FM到底有啥区别和联系,希望能够真正把他们搞懂,因此文本的目的就在于此。概括一句话就是:FM是MF的全能版本,MF是FM的一种简单存在形式。

FM模型简介

因子分解机(Factorization Machine, FM)是由Steffen Rendle提出的一种基于矩阵分解思想的机器学习算法,FM的提出是为了解决大规模稀疏数据中的特征组合问题。

1.1 FM模型

最常见的预测任务是估计一个函数:,将实值特征映射到目标域中(其中对回归任务,对分类任务)。在监督模型中,已知训练数据。另外在排序任务中,可以通过成对的训练数据来训练得到打分函数,其中特征元组,排名高于。

假设我们从电影评论系统中获取了这么一组交互数据(见下图),其中用户集合,物品(这里为电影)集合。根据以上数据构造了如图1所示的实值特征向量,蓝色框框内代表用户的one-hot编码,橙色框框内代表电影的one-hot编码,黄色框框内代表用户评论过的其他物品,并做了归一化,绿色框框内表示评论的时间,紫色框框内表示最近评论过的物品,最后一列Target y表示用户对该物品的一个评分(以为例,即用户A对电影TI的评分为5)。

图1

1.2 FM模型公式

(1)二阶FM

FM是在逻辑回归(LR)的基础上扩展的,因此在特征线性组合的前提下增加了特征交叉项,公式如下:

二阶FM公式

其中,内积表达式 。

从上述公式中可以看出时间复杂度为,但通过化解公式之后可以得到线性的时间复杂度。

二阶FM捕捉了所有变量的单个特征和变量之间的成对交互联系。

(二)高阶FM

高阶FM公式

相比二阶FM,高阶FM考虑了更多特征之间的联系。

MF模型简介

推荐系统核心技术是协同过滤技术 其中协同过滤技术中最常用的便是矩阵分解技术,矩阵分解将用户与物品嵌入到一个共享的低维隐空间内。

我们将用户和物品构造成一个二维矩阵(后称U-I矩阵),其中每一行代表一个用户,每一列代表一个物品,由于U-I矩阵的稀疏性,许多用户对物品没有过相应的评分,那么预测某一个用户对某一个物品的喜爱程度便成了推荐系统的主要任务。矩阵分解的思想是将U-I矩阵分解为两个低秩稠密的矩阵P和Q,其中P为用户的隐因子矩阵,Q为物品的隐因子矩阵,通过这两个矩阵来预测用户对物品的评分,也即:

但是考虑一些额外因素:1、一些用户给分偏高,一些用户给分较低,2、一些物品本就比较受欢迎,一些物品不被大众所喜爱,3、评分系统的固有属性,与用户物品都无关。因此,考虑到这些因素,将用户对物品的预测函数升级为:

其中为全局偏置,为用户偏置,为物品偏置。

FM vs MF

分解机的思想是从线性模型中通过增加二阶交叉项来拟合特征之间的交叉,为了拓展到数据稀疏场景并便于计算,吸收了矩阵分解的思想。这一节中主要简单了解一下FM与MF之间的关系。

  • MF是FM的特例

本质上,MF模型是FM模型的特例,MF可以被认为是只有User ID 和Item ID这两个特征信息时的FM模型。接下来,举个栗子方便大家理解FM是如何在仅有User ID 和Item ID时退化成MF模型的。假设用户集合为,物品集合为,我们以图1中的为例,在仅包含用户ID和物品ID信息时,特征维度,则特征向量,即为用户ID和物品ID的one-hot表示的拼接,由于特征向量中第一位和第四位为非零元素,因此二阶FM公式便如下所示:

由此,将上述公式和矩阵分解公式联系起来,可看作是MF中的全局偏置,为MF中的用户偏置,则为MF中的物品偏置。因此,MF是FM在仅有用户ID和物品ID信息下的特殊形式。

  • FM与MF的不同
  • 「输入数据的形式不同」 一般来说,FM的输入数据是一个实值特征向量(如图1的每一行),相当于是对多个one-hot特征的拼接;MF的输入数据是一个二元组,为用户ID,为物品ID。往往对于FM和MF理解的难点在于此,一个数据形式为one-hot,一个数据形式为标号ID。只不过MF中的数据只有user和item,因此可以通过标号ID直接查询对应的隐向量,而FM则需要通过one-hot的形式与隐向量矩阵做乘得到对应的隐向量。
  • 「参数矩阵的不同」 往往我们在FM模型中只初始化一个参数矩阵,其中为特征的数目;MF模型由于只涉及user和item的隐特征,因此可以分别学得一个用户矩阵和物品矩阵。如果FM中只有user和item的特征时,。因此,只不过MF为了方便,把user和item分开进行初始化,其实类似于FM只初始化一个矩阵未尝不可,只不过需要注意user和item的下标不要重复,比如user从1开始,那么item很可能需要从开始。
  • 「融合附加信息的方式不同」 他们输入数据的形式决定了他们融合附加信息的形式不同。直观来讲,FM融合附加信息的方式更直接。比如FM融合边信息直接在列的维度拼接特征即可,比如增加性别、年龄等信息;而MF融合边信息不能直接在输入数据上拼接,而是需要通过增加正则项约束,或者在预测函数上做文章。更具体的融合方式可参考之前的博文推荐系统之矩阵分解家族,可见MF也可以方便快捷的融合各种附加信息。

本文分享自微信公众号 - 机器学习与推荐算法(ML_RSer),作者:罗小媛

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-06-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 深度总结 | 知识蒸馏在推荐系统中的应用

    链接 | https://zhuanlan.zhihu.com/p/143155437

    张小磊
  • 知乎推荐算法工程师面经

    曾三次迈进知乎的大门,面试算法工程师岗位。特整理了一些相关问题供大家研究,并附上了一些大佬的建议供大家参考。更多关于算法工程师职位介绍以及面试准备等问题...

    张小磊
  • GBDT与XGBOOST串讲

    最近,一直被GBDT和XGBOOST烦恼,产生了如下的问题,由此产生了这篇文章。

    张小磊
  • Python操作SQLite/MySQL/LMDB/LevelDB

    1. 概述 1.1 前言 最近用Caffe跑自己的数据集,需要学习LMDB和LevelDB,趁此机会复习了SQLite和MySQL的使用,一起整理在此。 代码...

    小小科
  • Flink1.7.2 local WordCount源码分析

    thinktothings
  • Druid Segment Balance 及其代价计算函数分析

    Druid 的查询需要有实时和历史部分的 Segment,历史部分的 Segment 由 Historical 节点加载,所以加载的效率直接影响了查询的 RT(...

    Fayson
  • Spring Boot从入门到精通-集成mybatis

    我的小熊不见了丶
  • Pwn基础:PLT&GOT表以及延迟绑定机制

    关于动态链接与静态链接,可以打个比方就是:如果我的文章引用了别人的一部分文字,在我发布文章的时候把别人的段落复制到我的文章里面就属于静态连接,而给链接让你们自己...

    yichen
  • 2058 括号序列

    2058 括号序列  时间限制: 2 s  空间限制: 128000 KB  题目等级 : 白银 Silver 题解  查看运行结果 题目描述 Descript...

    attack
  • 下一个GAN?OpenAI提出可逆生成模型Glow

    该研究一经发表,立刻引起了机器学习社区的注意,有人对此表示:终于,我们有了 GAN 以外的优秀生成模型!

    机器之心

扫码关注云+社区

领取腾讯云代金券