Skip to main content

[paper阅读] 因子分解机(一)

摘要

在本文中,作者提出了一个新的模型类——FMFactorization Model,因子机),结合了SVMSupport Vector Machine,支持向量机)和因子分解模型的优势。

SVMs一样,FMs是一个可以使用任意实值特征向量的通用预测工具;而和SVMs不同的地方在于:FMs会使用因子分解的参数对变量之间的所有交互进行建模。

另一方面,其它因子分解方法(例如:矩阵分解,并行因子分析以及特定的模型,例如SVD++PITF以及FPMC等),有以下缺点:
– 不适用与通用的预测任务,只能处理特殊的输入数据
– 模型等数和优化算法针对每个任务单独推导

FMs的优势在于:

  • SVMs不适用的、极度稀疏的情况下(例如,推荐系统),FMs仍然可以对交互进行预测
  • FMs的模型等式可以在线性时间内进行计算,因此可以直接优化FMs;与非线性的SVMs不同,FMs不需要进行双向的转换,可以直接估计模型参数而不需要任何支持向量
  • FMs可以通过只指定输入数据(例如,特征向量)来模拟因子模型;因此,即使是不了解因子模型的用户也可以直接使用FMs

简介

在类似于协同过滤的背景下,SVMs不适用的唯一原因在于:在非常稀疏的数据上,SVMs无法在复杂的(非线性的)内核空间中学习到可靠的参数(超平面)。

而比较适用于协同过滤场景的方法(张量因子分解模型、甚至是更多专门的因子分解模型),则有以下缺点:

  • 它们不适用于标准的预测数据(例如,R^n中的实值特征向量)
  • 专门的模型针对一个特定的任务单独推导,需要在学习算法的建模和设计上花费时间

在这样的背景下,作者提出了一个新的预测工具——FMFactorization Machine,因子分解机),和SVMs一样,它是一个通用的预测工具,但可以在非常稀疏的情况下估计可靠的参数。因子分解机对所有嵌套的变量交互(类似于SVM中的多项式内核)进行建模,但是其使用的是因子化的参数而不是SVMs中紧密的参数化。

FMs的模型等式可以在线性时间内进行计算,并且只依赖于线性数目的参数。这样就可以在不存储任何训练数据(例如,支持向量)对模型的参数进行直接的优化和存储,用于预测。相反,非线性的SVMs通常得双向优化,并且依赖于部分训练数据(支持向量)计算一个预测值(模型等式)。

总的说来,FM的优势在于:

  • 在非常稀疏的数据下,在SVMs失效的情况下,FMs 可以学习到有效的参数估计
  • FMs拥有线性的复杂度,可以最开始的时候进行优化,而不用像SVMs一样依赖于支持向量
  • FMs是一个可以应用任意实值特征向量的通用预测工具。与之相反,其它先进的因子分解模型只能依赖于严格的输入数据。通过定于输入数据的特征向量,FMs可以模拟先进的模型,例如:偏好MFSVD++PITF或者FPMC

稀疏背景下的预测

任务:学习一个函数y:R^n \to T,将一个实值向量x \in R^n映射到目标领域T(例如,回归时T=R,分类时T=\{+,-\})。

在监督式背景中,给定目标函数y后,有训练数据集D=\{(x^{(1)}, y^{(1)}), (x^{(2)}, y^{(2)}),…\}

针对排序任务,目标T=R的函数y可以被用于对特征向量x进行评分,并且按照评分高低对其进行排序。评分函数可以基于成对的训练数据学习得到,其中, (x^{(A)}, x^{(B)})\in D表示x^{(A)}应该排在x^{(B)}的前面。由于成对的排序关系是非对称的,只是用正向的训练示例就已经足够了。

在本文中,作者们解决的问题是x非常稀疏的情况,例如:向量x的大部分元素x_i都是0。假设m(x)表示特征向量x中非0元素的数目,\bar{m}_D为所有向量x\in D中非0元素m(x)的平均值。在大多数真实世界的类似于交易事件(例如,推荐系统中的购买)或者文本分析(例如,词袋模型)的数据集中,会呈现极高的稀疏性(\bar{m}_D \ll n)。高度稀疏的原因之一在于:根本问题是大量绝对值变量领域。

示例1: 假设现在有一个电影评论系统的事物数据。系统记录包含如下信息:

用户u \in U对某个电影(条目)i\in I在某个时间t \in R进行了评分r\in \{1,2,3,4,5\}。假设用户U和物品I为:

  • U=\{Alice(A), Bob(B), Charlie(C), …\}
  • I=\{Titanic(TI), Notting Hill(NH), Star Wars(SW), Star Trek(ST), …\}

得到的评分数据为:

S=\{(A, TI, 2010-1,5), (A, NH, 2010-2,3), (A, SW, 2010-4,1),
(B,SW,2009-5,4),(B,ST,2009-8,5),
(C,TI,2009-9,1),(C,SW,2009-12,5)\}

使用这些数据的一个预测任务示例是:估计一个函数\hat{y},对用户在某个特定时间点对某个物品的行为进行评分预测。


图1 从示例1的事务中创建的一个稀疏的实值特征向量x示例。每一行表示一个特征向量x^{(i)}和它对应的目标y^{(i)}。前4列(蓝色)表示活跃用户的标识向量;接着4列(红色)表示活跃物品的标识变量;接着5列(黄色)表示额外的隐式标识)例如,用户评过分的其它电影;1个特征(绿色)表示这个月中的时间;最后的5列(棕色)表示在活跃的电影之前用户评过分的最后一个电影;最后1列是目标——在这里是评分。

图1中展示了在该任务中,如何从S中创建特征向量的示例。在这里,有|U|个二级制标识变量(蓝色)表示一个事件的活跃用户——通常在每个事件中一般只有一个活跃用户,(u,i,t,r)\in S例如,第一条记录中的用户Alicex_A^{(1)}=1)。接下来|I|个二进制标识变量(红色)表示活跃物品,同样地,通常在每个事件中一般只有一个活跃物品,例如x_{TI}^{(1)}=1。图1中的特征向量也包含标识标量(黄色)表示该用户之前评过分的其它电影。对于每个用户,变量值被归一化和为1。例如,AliceTitanicNotting HillStar Wars评过分。此外,该示例还包含了一个绿色的变量,标识2009年开始的一月初的时间。最后,该向量包含了用户在对该活跃电影之前评过分的最后一个电影信息(棕色)——例如,对x^{(2)}Alice在对Notting Hill评分之前对Titanic评过分。

在接下来的部分中,作者们将继续使用这个示例进行介绍。但是,请注意:FMs是和SVMs一样的通用预测工具,因此可以适用于任何实值特征向量,并不限制于推荐系统。

打赏
微信扫一扫支付
微信logo微信扫一扫, 打赏作者吧~

mickey

记录生活,写给几十年后的自己。