暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

[广告机制]-模型篇:适用于稀疏数据场景的MF和FM算法

老刘聊广告 2021-08-19
955

0.前言

前面文章中有提到,类似GBDT和XGBoost这种树模型是不适合处理稀疏数据的。那么有没有其它算法能够很好地处理稀疏数据呢?答案是有的。其实现在新的模型大多都能够处理高维稀疏的数据,但这些模型都或多或少借鉴了MF或FM算法的思想。因此,本文将会详细介绍MF和FM的算法思想

1. MF(Matrix Factorization)算法

矩阵分解是运用最广泛的协同过滤模型,指将一个矩阵分解为两个或多个矩阵,使得分解的矩阵能够通过相乘得到原始矩阵。比如,在推荐系统中,经常根据用户对物品的评分得到用户-物品的评分矩阵,如下面的表格所示:


D1D2D3D4
U154-1
U24--1
U311-5
U41--4
U5-154

其中,行代表用户等,列代表物品等。实际情况是这个矩阵通常是非常稀疏的。矩阵分解的目标是希望通过现有的稀疏评分矩阵来预测用户对未评分物品的评分行为,常用的分解方法是SVD(Singular Value Decomposition)奇异值分解。传统的SVD方法主要是对稠密矩阵进行分解,对稀疏矩阵来说,进行分解的前提是需要对矩阵进行填充,而这么做会造成两个问题:
  • 稀疏矩阵变成稠密矩阵后,存储空间和算法复杂度都会增加
  • 简单粗暴的填充会导致数据失真

上面两个问题导致SVD矩阵分解效果不是很好。针对这个问题,Simon Funk提出了Funk-SVD分解,其基本思想是:既然评价指标是均方根误差,那么可以直接通过最小化RMSE的方式学习用户特征矩阵P和物品特征矩阵Q。通过这种方法用户和物品可以被映射到一个K维的潜在特征空间,分别记作P和Q,即:


基于上述公式,可以计算出用户对物品的估计得分:


其中,表示用户的K维潜在特征,表达的是用户内部特性;表示物品的K维潜在特征,表达的是物品的内部特征

我们的期望是使均方误差尽可能的小,考虑到所有用户和物品组合,目标函数如下:


可以使用类似梯度下降的优化方法估计上述参数,从而得到预估模型

2.FM(Factorization Machine)算法

这里我们举一个例子。假设我们现在有电影评论系统的交易数据,该系统记录了用户在特定时间对电影的评分。如下所示:


因此,我们的数据集长这个样子:


使用上述数据的预估任务的一个示例是,估计一个函数,该函数能够预估用户在某一特定时间点对某项商品的评分行为


图(1)展示了在这个任务中如何从数据集S中构造特征向量。首先,用二值变量表示交易中的活跃用户,在每次交易中都只有一个活跃用户;二值变量表示活跃物品(电影),每次交易都只有一个活跃物品;图(1)中的特征向量还包括该用户给其它所有电影的评分,对于每个用户,这些评分被正则化为和为1的变量;此外,还有一个绿色变量,用于表示从2009年1月开始的月份;最后,向量还包含用户给与评分的最后一部电影信息

下面我们进入正题,开始介绍FM算法:

A.因子分解模型
1)模型方程:度为2的FM的模型方程定义如下:


下面是模型需要估计的参数:


另外,是向量之间的点乘:


中的第个因子描述第个变量,是一个超参数,它定义了因子分解的维度

一个二维的FM能够捕捉所有变量的单一和成对交互的信息:

  • 是全局偏置系数
  • 是对第i个变量的影响力进行建模
  • 对第个变量和第个变量之间的交互进行建模。不同于使用来表示变量之间的交互,FM选择通过分解来对交互进行建模。我们将在后面看到,在稀疏数据场景下,这是能够对维度大于等于2的交互进行高质量的参数估计的关键

2)表达能力。对于任意的正定矩阵,当足够大时,总存在一个矩阵,使得。这意味着当足够大时,FM能够表达任意的交互矩阵。然而,在稀疏数据环境下,通常应该选择一个较小的,因为没有足够的数据来估计复杂的交互矩阵。限制能够使得FM的表达更具泛化性

3)稀疏环境下的参数估计。在稀疏环境中,通常没有足够的数据来直接估计变量之间的交互作用。因子分解机可以在稀疏环境下很好地估计变量之间的交互作用,因为它通过因式分解打破了交互参数的独立性,这意味一次交互数据也能够帮助估计交互参数。我们将通过图(1)中的数据更清楚地说明这一点。假设我们想要估计Alice (A)和Star Trek (ST)之间的相互作用来预估目标y(这里是评分)。显然,在训练数据中没有对应向量的情况下,无法直接估计出它们之间的交互情况。但是通过分解后的交互参数,我们可以估计这种情况下的交互信息。首先,Bob和Charlie有着相似的因子向量,因为它们都与Star Wars有着相似的交互,即是相似的。Alice与Charlie是非常不同的,因为它们与Titanic和Star Wars在评分行为上有着非常不同的交互。其次,Star Trek和Star Wars的因子向量也是相似的,因为Bob对这两部电影的评分是相似的。综上,Alice与Star Trek和Star Wars的交互行为应该是相似的,直观的来讲,这也是有道理的

4)计算:接下来,我们将从计算的角度分析FM为什么比较实用。由于要计算所有成对的交互,因此直接计算方程(1)的时间复杂度是。但是通过重新梳理公式,可以将时间复杂度降低到线性级别

引理3.1:因子分解机(等式(1))可在线性时间内完成计算

证明:由于两两交互的因式分解,不存在直接依赖于两个变量的模型参数。因此,这种成对的交互可重新定义如下:


这个方程的时间复杂度是。此外,稀疏场景下向量中的大部分元素都是零。因此,求和只需要在非零元素上进行,此时,因子分解机的复杂度是

B.学习因子分解机
如前面所述,FM有一个闭环的模型方程,可以在线性时间内完成计算。因此,模型参数可以通过梯度下降方法来计算,比如随机梯度下降法(SGD)。FM模型的梯度下降如下所示:


其中是相互独立的,可以提前进行计算。一般情况下,一次梯度计算可以在时间内完成计算,所有的参数更新可以在时间内完成计算

C.d维FM
2维的FM可以很容易扩展到d维的FM:


直接计算方程(5)的时间复杂度是,但通过引理3.1的转化后,可以在线性时间内完成计算

D.总结
FM使用因子交互对特征向量中所有变量之间的交互行为进行建模,这样做有以下两个优点:

  • 即使在高度稀疏的数据场景下,也可以对变量之间的交互进行估计。特别是,有可能对为观测到的行为进行归纳和估计
  • 参数的数量以及预测和学习的时间都是线性的。这使得可以方便地使用SGD进行优化,以及可以使用各种损失函数进行优化

3. MF和FM算法总结

1.MF和FM算法为什么能够处理大规模稀疏数据?
首先,MF和FM这种处理特征的方式,相当于为每个特征学习一个k维的一维向量。两个特征和x_{j}特征组合的权重值,通过特征对应的向量的内积来表示。这本质上是在对特征进行embedding化表征,和目前非常常见的各种实体embedding本质思想是一脉相承的
其次,在大规模稀疏场景下,在训练数据里如果两个特征并未同时在训练样本里见到过,SVM或单纯的多项式组合线性模型是无法学习到这个特征组合的权重的。但FM学习的是特征的embedding,并不依赖于某个特定的特征组合是否出现过,因此,在预测时如果碰到新的特征组合,仍然能够通过embedding向量内积计算出组合权重,这就是为什么FM泛华能力强的原因

2.MF和FM的联系是什么?
MF模型是FM模型的特例,MF可以被认为是只有User ID 和Item ID这两个特征Fields的FM模型,MF将这两类特征通过矩阵分解,来达到将这两类特征embedding化表达的目的。而FM则可以看作是MF模型的进一步拓展,除了User ID和Item ID这两类特征外,很多其它类型的特征,都可以进一步融入FM模型里,它将所有这些特征转化为embedding低维向量表达,并计算任意两个特征embedding的内积,就是特征组合的权重

4. 参考资料

[1].论文:Factorization Machines
[2].
推荐系统召回四模型之:全能的FM模型
[3].推荐基础算法之矩阵分解MF


文章转载自老刘聊广告,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论