因子分解机模型简介

  Steffen Rendle于2010年提出Factorization Machines(下面简称FM),并发布开源工具libFM。

一、与其他模型的对比

  与SVM相比,FM对特征之间的依赖关系用factorized parameters来表示。对于输入数据是非常稀疏(比如自动推荐系统),FM搞的定,而SVM搞不定,因为训出的SVM模型会面临较高的bias。还有一点,通常对带非线性核函数的SVM,需要在对偶问题上进行求解;而FM可以不用转为对偶问题,直接进行优化。

  目前还有很多不同的factorization models,比如matrix factorization和一些特殊的模型SVD++, PITF, FPMC。这些模型的一个缺点是它们只适用于某些特定的输入数据,优化算法也需要根据问题专门设计。而经过一些变换,可以看出FM囊括了这些方法。

二、模型简介

  2-way FM(degree = 2)是FM中具有代表性,且比较简单的一种。就以其为例展开介绍。其对输出值是如下建模:

   公式说明:

  (1) 模型的参数包括:

  (2) n是特征维度;

  (3) k是定义factorization维度的超参数,是正整数。

  (4) 在FM中,如何对特征之间的依赖关系建模?首先用k维向量去描述每个维度,然后对2个维度所对应的vi和vj求点积,以此来刻画2个特征之间的特征关系。如果需要刻画x(x>2)个特征之间的关系,可以用x-way FM模型。

  (5) 表面上看式子的第3项的计算复杂度为O(kn2),但其实可以经过简单的数学处理,计算复杂度降为O(kn)。

三、模型分析

  他的思想应该是从推荐系统中经典的SVD模型(因子分解模型)得到的,经典的SVD模型当中相当于只有两种类型的feature,一类feature是user,一类feature是item,而libFM是把这个模型推广到了多类feature的情况。为简单起见,考虑因子维数为1的情况,SVD模型用a∗ba∗b来作为对打分的预测。而libFM要面对的是多类feature,假设是3类,那么就用a∗b+b∗c+c∗aa∗b+b∗c+c∗a来作为对结果的预测。这时候就要问了,如果feature很多,这不就有平方量级的乘法次数了么?当然不是,libFM的文章中提到,他利用((a+b+c)2−a2−b2−c2)/2((a+b+c)2−a2−b2−c2)/2来计算刚才的式子,但是你可以看到,他们其实是相等的,不同的是,这样的计算量只是线性复杂度的。当然libFM也同时支持bias项,这和经典SVD模型类似。
  以上就是libFM的创新之处,其实如果很了解SVD模型,那这个改进并不难理解。
论文中还提到,经典的SVD++模型等对于SVD模型的改进,也只是libFM的一个子集而已。只要合适的去添加feature即可。比如SVD++模型就相当于对每个item增加一个feature,来描述用户是否也给这个item打过分即可。所以有了libFM以后,最需要人工解决的问题就是添加合适的feature了。
另外再说明一下推荐系统的数据如何转化成libFM接受的形式。假设User ID范围是[0,99],Item ID范围是[0,199],则定义feature 0到feature 99对应于User,feature 100到feature 299对应于Item,假设第一条打分记录是User 4对Item 9的打分,则feature 4和feature 109的取值为1,其余feature取值都是0。由于数据文件是稀疏格式的,所以取值为0的feature都不用写,这样文件不会太大。其余对经典SVD模型的改进就需要增加一些对应feature。他的代码中,每条记录是使用map存储feature的,可以随机存取任意一个feature的值(但是可能用链表就可以了?因为一般都是顺序访问的)。

  FM可以用于多种预测问题,包括回归、分类和排序。对不同的预测问题,可以选择合适的loss term和regularization term。另外,FM的梯度也很容易求。

时间: 2024-08-04 09:27:53

因子分解机模型简介的相关文章

WCF中的Binding模型之一: Binding模型简介

一. 信道层与服务模型层(Channel Layer and Service Mode Layer) 对于一个分布式应用的开发与设计来说,通信问题是不得不考虑,同时也是最为复杂.最难实现的问题.在过去的若干年中, 微软先后推出了一系列广受欢迎的通信技术, 比如DCOM.Enterprise Service..NET Remoting.XML Web Service.MSMQ等等.这些技术提供了各自的编程模型,是开发人员从繁琐的完全基于通信的编程中解脱出来,使之仅仅需要关注具体的业务逻辑.WCF是

《深入理解Hadoop(原书第2版)》——2.2MapReduce编程模型简介

2.2MapReduce编程模型简介 Hadoop系统支持MapReduce编程模型,这个编程模型由谷歌公司发明,该模型可以利用由大量商用服务器构成的大规模集群来解决处理千兆级数据量的问题.MapReduce模型有两个彼此独立的步骤,这两个步骤都是可以配置并需要用户在程序中自定义: Map:数据初始读取和转换步骤,在这个步骤中,每个独立的输入数据记录都进行并行处理. Reduce:一个数据整合或者加和的步骤.在这个步骤中,相关联的所有数据记录要放在一个计算节点来处理. Hadoop系统中的Map

《数据库技术原理与应用教程》一3.5.2关系模型简介

3.5.2关系模型简介 关系模型(relational model)的基本数据结构是二维表,简称表(table).大家知道,表格方式在日常生活中应用很广,特别是在商业系统中,如金融.财务处理经常使用表格形式表示数据框架,这给了我们一个启发,用表格作为一种数据结构有着广泛的应用基础,关系模型即是以此思想为基础建立起来的. 关系模型中的操纵与约束也是建立在二维表上的,它包括对一张表及多张表的查询.删除.插入及修改操作,以及相应于表的约束. 关系模型的思想是IBM公司的EFCodd于1970年在一

《Power Designer系统分析与建模实战》——2.1 需求模型简介

2.1 需求模型简介 IEEE的软件工程标准术语表将"需求"定义如下:1)用户所需的解决某个问题或达到某个目标所要具备的条件或能力.2)系统或系统组件为符合合同.标准.规范或其他正式文档,而必须满足的条件或必须具备的能力.3)上述第一项或第二项中定义的条件和能力的文档表述.RUP将"需求"定义为:需求描述了系统必须满足的情况或提供的能力,它可以直接来自客户需要,也可以来自合同.标准.规范或其他有正规约束力的文档.两者对于需求的定义大同小异,简单来说,需求就是&quo

艾伟:[WCF中的Binding模型]之一: Binding模型简介

1. 信道层与服务模型层(Channel Layer and Service Mode Layer) 对于一个分布式应用的开发与设计来说,通信问题是不得不考虑,同时也是最为复杂.最难实现的问题.在过去的若干年中, 微软先后推出了一系列广受欢迎的通信技术, 比如DCOM.Enterprise Service..NET Remoting.XML Web Service.MSMQ等等.这些技术提供了各自的编程模型,是开发人员从繁琐的完全基于通信的编程中解脱出来,使之仅仅需要关注具体的业务逻辑.WCF是

TCP/IP四层模型和OSI七层模型简介

表1-1是 TCP/IP四层模型和OSI七层模型对应表.我们把OSI七层网络模型和Linux TCP/IP四层概念模型对应,然后将各种网络协议归类. 表1-1  TCP/IP四层模型和OSI七层模型对应表 OSI七层网络模型 Linux TCP/IP四层概念模型 对应网络协议 应用层(Application) 应用层 TFTP, FTP, NFS, WAIS 表示层(Presentation) Telnet, Rlogin, SNMP, Gopher 会话层(Session) SMTP, DNS

SSAS:在SQL Server 2012下查看SSAS分析服务的模型及模型简介

在SSDT中部署一个 SSAS 项目到本地服务器上出现错误 You cannot deploy the model because the localhost deployment server is not running in multidimensional mode. 错误原因是因为我在本地安装 SQL Server 2012 的时候只选择安装了 Tabular Mode, 而这个Demo项 目是多维数据集项目, 在 SQL Server 2012 中被称之为 Multidimensio

CSS box-flex属性,然后弹性盒子模型简介

张鑫旭博客的一篇css3盒模型文章,对我而言,实用价值挺大的,多次重复打开该文章学习,这一次决定转载到我的博客! 一.淡淡的开头语 昨天趁着不想工作的时间间隙闲逛24ways,在My CSS Wish List一文中,见到了个新鲜的CSS属性,就是题目中的box-flex,以前没有见过,顿生疑惑,不知是骡子还是马,于是习惯性谷歌之,真是不谷不知道,一谷吓一跳.倒不是该属性本身,而是此属性作为导火索,让我了解了下CSS3中新的盒子模型--弹性盒子模型(Flexible Box Model).对于我

CSS魔法堂:盒子模型简介

本文讨论的是块级盒子(Block-level box)的盒子模型(Box Model)   一.W3C标准的盒子模型       二.IE盒子模型   三.两种模型的区别 W3C标准盒子模型:   外盒模型        元素空间宽度 = content width + padding + border + margin的宽度        元素空间高度 = content width + padding + border + margin的高度   内盒模型 元素宽度 = content he