推荐系统之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.2 FM模型公式
(1)二阶FM
FM是在逻辑回归(LR)的基础上扩展的,因此在特征线性组合的前提下增加了特征交叉项,公式如下:
其中
,内积表达式 。
从上述公式中可以看出时间复杂度为
,但通过化解公式之后可以得到线性的时间复杂度。二阶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也可以方便快捷的融合各种附加信息。
推荐阅读
[0].利用对抗技术来权衡推荐精度与用户隐私
[1].推荐系统之矩阵分解家族
[2].社会化推荐浅谈
[3].当推荐系统邂逅深度学习
喜欢的话点个在看吧????
推荐系统之FM与MF傻傻分不清楚相关推荐
- 云计算、大数据、人工智能傻傻分不清楚?本文详解这三者的关系
云计算.大数据.人工智能傻傻分不清楚?本文详解这三者的关系 提示: 今天跟大家讲讲云计算.大数据和人工智能.这三个词现在非常火,并且它们之间好像互相有关系. 一般谈云计算的时候会提到大数据.谈人工智能 ...
- (转)CPU/GPU/TPU/NPU傻傻分不清楚
刚开始接触深度学习概念时,基本大多数时候也就提到GPU,也基本是用GPU来进行深度学习算法训练或部署人脸识别系统的. 近几年,随着人工智能(尤其是人脸识别)的爆炸式发展,诞生了许多新的东西,其中这芯片 ...
- JS魔法堂:属性、特性,傻傻分不清楚
一.前言 或许你和我一样都曾经被下面的代码所困扰 var el = document.getElementById('dummy'); el.hello = "test"; con ...
- ASP.NET MVC涉及到的5个同步与异步,你是否傻傻分不清楚?[下篇]
关于ASP.NET MVC对请求的处理方式(同步或者异步)涉及到的五个组件,在<上篇>中我们谈了三个(MvcHandler.Controller和ActionInvoker),现在我们来谈 ...
- 科普 | Shell中傻傻分不清楚的TOP3
近来小姐姐又犯憨憨错误,问组内小伙伴export命令不会持久化环境变量吗?反正我是问出口了..然后小伙伴就甩给了我一个<The Linux Command Line>PDF链接.感谢老大不 ...
- 国家电网和南方电网还傻傻分不清?
参看:都2020年了,国家电网和南方电网还傻傻分不清? 一.名称不同 一个叫南方电网,一个叫国家电力电网,虽然都是电网,但是区别还是很大的 而且成立时间不一样:国家电力电网有限公司成立于2002年12 ...
- cdn厂商 同兴万点_同兴万点:TXNetworks和CDNetworks让我们傻傻分不清
原标题:同兴万点:TXNetworks和CDNetworks让我们傻傻分不清 在2008年2月25日成立的同兴万点,公司全称为同兴万点(北京)网络技术有限公司(TXNetworks),一直专注于CDN ...
- 2021年了,`IEnumerator`、`IEnumerable`接口还傻傻分不清楚?
IEnumerator.IEnumerable这两个接口单词相近.含义相关,傻傻分不清楚. 入行多年,一直没有系统性梳理这对李逵李鬼. 最近本人在怼着why神的<其实吧,LRU也就那么回事> ...
- 动态ram依靠什么存储信息_ROM、RAM、DRAM、SRAM和FLASH傻傻分不清
ROM.RAM.DRAM.SRAM和FLASH各类储存器在电脑.手机.电子设备.嵌入式设备及相应的开发中普遍应用的,但是很多还是傻傻分不清楚.下面就简单介绍下这几个吧! ROM和RAM ROM:只读存 ...
最新文章
- 超有趣!LSTM之父团队最新力作:将强化学习“颠倒”过来
- 吉林大学计算机维护与维修,吉林大学汽车维修工程考试知识点.doc
- windows便签快捷键_win10电脑有哪些常用的快捷键?
- Python 读取json文件
- 用Python爬取Bilibili视频,难吗?
- 扫地机器人水箱背景_你真的懂扫地机器人吗?这些不为人知的小细节值得一看...
- 巧用gmail转发邮件
- kaios好用吗_如何评价Kai Os?
- 软考数据库工程师2020下午题@故障恢复解析
- 设置指定ip访问mysql数据库
- 实现贪吃蛇程序的整个代码:
- usb大容量存储设备 被禁用 无法启动,彻底卸载大势至 【手贱,安装大势至USB接口软件后无法使用U盘】
- matplotlib报错Line2D‘ object has no property ‘linestyle‘或‘linewidth‘
- 计算机桌面无法解锁,win10锁屏后解锁却无法进入桌面怎么办?解决方案
- 通向终极自由之路的圣多纳释放法
- 哔哩哔哩2020校园招聘前端笔试题(卷一)
- CPU、内存、磁盘的性能瓶颈及理解
- JavaEE笔记——设计模式
- 数据库总结:--有道笔记整理
- 使用elastic job管理调度定时任务
热门文章
- 彻悟人生,句句肺腑90句
- 读书笔记-MongoDb-简介
- C++描述 LeetCode 485. 最大连续1的个数
- 为什么说php是个玩具,买玩具的目的是什么
- 斑马条码打印机断电重启后无法打印问题
- 第五次网页前端培训(JS基础)
- 中国算力水平全球第二,数据中心发挥巨大作用
- MySQL查询不同年份母亲节_历年母亲节谷歌doodle有什么不同 google母亲节logo变化史...
- 致远a8 java,致远A8协同办公系统poc/seeyon 0day
- java获得windows系统当前时间与时间不符合