《Fast Context-aware Recommendations with Factorization Machines》
推荐系统中的评级预测(rating prediction
)主要依赖于以下信息:who
(哪个用户)对 what
(哪个 item
,如电影、新闻、商品)如何 how
评级。有很多方法可以考虑关于 who
(关于用户的人口统计信息,如年龄、性别、职业)、what
(关于item
属性的信息,如电影类型、产品描述文本的关键词)的附加数据。
除了有关评级事件(rating event
)中涉及的实体的此类数据之外,还可能存在有关评级事件发生当前情况的信息,例如当前位置(location
)、时间、周边的人、用户当前心情等等。这些场景信息通常称作上下文 (context
)。因为从决策心理学知道一个人的环境和情绪确实会影响他们的行为,所以在推荐系统中利用上下文信息是可取的。上下文感知评级预测(context-aware rating prediction
)依赖于谁(who
)在何种上下文(context
)下如何(how
)评价什么(what
)的信息。
经典的推荐系统方法不考虑上下文信息。一些方法执行数据的预处理(pre-processing
)或后处理(post-processing
),使得标准方法具有上下文感知能力。虽然这种临时解决方案可能在实践中起作用,但是它们的缺点是过程中的所有步骤都需要监督和微调。
将各种输入数据统一到一个模型中的方法在这方面更为实用,理论上也更为优雅。目前,在预测准确性方面最灵活和最强的方法是 Multiverse Recommendation
,它依赖于 Tucker
分解并允许使用任何离散型上下文(categorical context
)。然而,对于现实世界的场景,它的计算复杂度
在论文 《Fast Context-aware Recommendations with Factorization Machines》
中,作者提出了一种基于分解机 (Factorization Machine: FM
)的上下文感知评级预测器。FM
包括并可以模拟推荐系统中最成功的方法,包括矩阵分解(matrix factorizion: MF
)、SVD++
、PITF
。
作者展示了 FM
如何应用于各种上下文字段,包括离散型(categorical
)字段、离散集合(set categorical
)字段、实值(real-valued
)字段。相比之下, Multiverse Recommendation
模型只适合于离散型(categorical
)上下文变量。
除了建模的灵活性之外,FM
的复杂度在 Multiverse Recommendation
模型的复杂度是
为了学习 FM
模型的参数,论文提出了一种基于交替最小二乘法(alternating least squares: ALS
)的新算法。新算法在给定其它参数的情况下找到一个参数的最优解,并且在几次迭代之后找到所有参数联合最优解。
和随机梯度下降(stochastic gradient descent: SGD
)一样,新算法单次迭代的复杂度为
和 SGD
相比,新算法的主要优点是无需确定学习率。这在实践中非常重要,因为 SGD
学习的质量在很大程度上取决于良好的学习率,因此必须进行代价昂贵的搜索。这对于 ALS
来讲不是必需的。
最后,论文的实验表明:上下文感知 FM
可以捕获上下文信息并提高预测准确性。此外 FM
在预测质量和运行时间方面都优于 SOTA
的方法 Multiverse Recommendation
。
推荐系统的大多数研究都集中在仅分析 user-item
交互的上下文无关方法上。在这里,矩阵分解(matrix factorization: MF
)方法非常流行,因为它们通常优于传统的 knn
方法。
也有研究将用户属性或 item
属性等元数据结合到预测中,从而扩展了矩阵分解模型。然而,如果存在足够的反馈数据,元数据对评分预测的强 baseline
方法通常只有很少或者没有改善。这种用户属性/item
属性和上下文之间的区别在于:属性仅仅被附加到 item
或者用户(例如,给电影附加一个流派的属性),而上下文被附加到整个评级事件(如,当评级发生时用户当时的心情)。
和关于标准推荐系统的大量文献相比,上下文感知推荐系统的研究很少。最基本的方法是上下文预过滤(pre-filtering
)和后过滤 (post-filtering
),其中应用标准的上下文无关推荐系统,并在应用推荐器(recommender
)之前基于感兴趣的上下文对数据进行预处理、或者对结果进行后处理。更复杂的方法是同时使用所有上下文和 user-item
信息来进行预测。
也有人建议将上下文视为动态的用户特征,即可以动态变化。另外有一些关于 item
预测的上下文感知推荐系统的研究,将推荐视为一个排序任务,而本文将推荐视为回归任务。
Multiverse Recommendation
基于Tucker
分解技术来直接分解用户张量、item
张量、所有离散上下文变量的张量,从而求解该问题。它将原始的评分矩阵分解为一个小的矩阵
其中:
这种方式存在三个问题:
计算复杂度太高:假设每个特征的维度都是
仅能对离散型(categorical
)上下文特征建模:无法处理数值型特征、离散集合型(categorical set
)特征。
交互特征高度稀疏:这里执行的是 K
路特征交互(前面的 POLY2
模型是两路特征交互),由于真实应用场景中单个特征本身就已经很稀疏,K
路特征交互使得数据更加稀疏,难以准确的预估模型参数。
Attribute-aware Recommendation
:与通用上下文感知方法的工作对比,对属性感知或专用推荐系统的研究要多得多。有一些工作可以处理用户属性和 item
属性的矩阵分解模型的扩展,还有一些关于考虑时间效应的工作。然而,所有这些方法都是为特定问题设计的,无法处理我们在本工作中研究的上下文感知推荐的通用设置。
当然,对于特定的和重要的问题(如时间感知推荐或属性感知推荐),专用模型的研究是有益的。但是另一方面,研究上下文感知的通用方法也很重要,因为它们提供了最大的灵活性,并且可以作为专用模型的强 baseline
。
Alternating Least Square Optimization
:对于矩阵分解模型,Bell
和 Koren
提出了一种交替优化所有 user factor
和所有 item factor
的 ALS
方法。由于所有user/item
的整个 factor matrix
是联合优化的,因此计算复杂度为 ALS
的这种复杂度问题是 SGD
方法在推荐系统文献中比 ALS
更受欢迎的原因。
Pilaszy
等人提出一个接一个地优化每个user/item
中的 factor
,这导致 ALS
算法复杂度为 factor
的思路与我们将 ALS
算法应用于FM
的思路相同。
这两种方法仅适用于矩阵分解,因此无法处理任何上下文,例如我们提出的对所有交互进行建模的 FM
中的上下文。此外,我们的 ALS
算法还学习了全局bias
和基本的 1-way
效应。
FM
模型是一个通用模型,它包含并可以模拟几个最成功的推荐系统,其中包括矩阵分解(matrix factorization: MF
)、SVD++
、PITF
。我们首先简要概述了 FM
模型,然后详细展示了如何将其应用于上下文感知数据,以及在 FM
中使用这种上下文感知数据会发生什么。最后我们提出了一种新的快速 alternating least square: ALS
算法,和 SGD
算法相比它更容易应用,因为它不需要学习率。
推荐系统面临的问题是评分预测问题。给定用户集合
其中已知部分用户在部分物品上的评分:
其中
通常评分问题是一个回归问题,模型预测结果是评分的大小。此时损失函数采用MAE/MSE
等等。
也可以将其作为一个分类问题,模型预测结果是各评级的概率。此时损失函数是交叉熵。
当评分只有 0
和 1
时,这表示用户对商品 “喜欢/不喜欢”,或者 “点击/不点击”。这就是典型的点击率预估问题。
事实上除了已知部分用户在部分物品上的评分之外,通常还能够知道一些有助于影响评分的额外信息。如:用户画像、用户行为序列等等。这些信息称作上下文( context
)。
对每一种上下文,我们用变量
上下文的下标从 3
开始,因为可以任务用户
如下图所示为评分矩阵,其中:
所有离散特征都经过one-hot
特征转换。
上下文特征(context
)类似属性(property
)特征,它和属性特征的区别在于:
属性特征是作用到整个用户(用户属性)或者整个物品(物品属性),其粒度是用户级别或者物品级别。
如:无论用户 “张三” 在在评分矩阵中出现多少次,其性别属性不会发生改变。
上下文特征是作用到用户的单个评分事件上,粒度是事件级别,包含的评分信息更充足。
如:用户 ”张三“ 在评价某个电影之前已经看过的电影,该属性会动态改变。
事实上属性特征也称作静态画像,上下文特征也称作动态画像。业界主流的做法是:融合静态画像和动态画像。
另外,业界的经验表明:动态画像对于效果的提升远远超出静态画像。
和 POLY2
相同FM
也是对二路特征交互进行建模,但是FM
的参数要比 POLY2
少得多。
将样本重写为:
则 FM
模型为:
其中
即:
模型待求解的参数为:
其中:
representation vector
,它是
FM
模型的计算复杂度为
因此有:
其计算复杂度为
将 FM
模型和标准的矩阵分解模型进行比较,可以看到:FM
也恰好包含这种分解 FM
模型还包含了所有上下文变量的所有 pair
对的交互。这表明 FM
自动包含了矩阵分解模型。
FM
模型可以用于求解分类问题(预测各评级的概率),也可以用于求解回归问题(预测各评分大小)。
对于回归问题,其损失函数为MSE
均方误差:
对于二分类问题,其损失函数为交叉熵:
其中:
评级集合为
损失函数最后一项是正则化项,为了防止过拟合,
可以针对每个参数配置一个正则化系数,但是选择合适的值需要进行大量的超参数选择。论文推荐进行统一配置:
对于
对于
对于
FM
模型可以处理不同类型的特征:
离散型特征 (categorical
):FM
对离散型特征执行 one-hot
编码。
如,性别特征:“男” 编码为 (0,1)
,“女” 编码为 (1,0)
。
离散集合特征( categorical set
):FM
对离散集合特征执行类似 one-hot
的形式,但是执行样本级别的归一化。
如,看过的历史电影。假设电影集合为:“速度激情9,战狼,泰囧,流浪地球”。如果一个人看过 “战狼,泰囧,流浪地球”, 则编码为 (0,0.33333,0.33333,0.33333)
。
数值型特征(real valued
):FM
直接使用数值型特征,不做任何编码转换。
FM
的优势:
给定特征 representation
向量的维度时,预测期间计算复杂度是线性的。
在交互特征高度稀疏的情况下,参数仍然能够估计。
因为交互特征的参数不仅仅依赖于这个交互特征,还依赖于所有相关的交互特征。这相当于增强了有效的学习数据。
能够泛化到未被观察到的交互特征。
设交互特征 “看过电影 A
且 年龄等于20
” 从未在训练集中出现,但出现了 “看过电影 A
” 相关的交互特征、以及 “年龄等于20
” 相关的交互特征。
于是可以从这些交互特征中分别学习 “看过电影 A
” 的 representation
、 “年龄等于20
”的 representation
,最终泛化到这个未被观察到的交互特征。
FM
的目标函数最优化可以直接采用随机梯度下降 SGD
算法求解,但是采用 SGD
有个严重的问题:需要选择一个合适的学习率。
学习率必须足够大,从而使得 SGD
能够尽快的收敛。学习率太小则收敛速度太慢。
学习率必须足够小,从而使得梯度下降的方向尽可能朝着极小值的方向。
由于 SGD
计算的梯度是真实梯度的估计值,引入了噪音。较大的学习率会放大噪音的影响,使得前进的方向不再是极小值的方向。
我们提出了一种新的交替最小二乘( alternating least square:ALS
)算法来求解 FM
目标函数的最优化问题。与 SGD
相比ALS
优点在于无需设定学习率,因此调参过程更简单。
根据定义:
对每个
其中
对于
对于
对于
因此有:
考虑均方误差损失函数:
最小值点的偏导数为 0
,有:
则有:
ALS
通过多轮次、轮流迭代求解
在迭代之前初始化参数,其中: 0
、方差为
每一轮迭代时:
首先求解
然后求解 representation
向量的第 1
维度,然后是第 2
维,... 最后是第 d
维。
这是为了计算优化的考量。
直接求解 ALS
的解时复杂度较高:在每个迭代步中计算每个训练样本的
对于每个样本,求解
计算
计算
计算
因此求解
有三种策略来降低求解
利用预计算的误差项
利用预计算的
利用数据集
预计算误差项
定义误差项:
考虑到
因此如果计算
首先对每个样本,计算其初始误差:
考虑到
当参数
计算代价由
预计算
如果能够降低计算
重写
定义:
因此如果计算
对每个样本、每个representation
向量维度计算初始
计算复杂度为
当参数
计算代价为
一旦得到
计算代价为
数据集
根据:
对于
对于
因此每次更新只需要使用部分样本。总体而言,整体复杂度为
ALS
优化算法:
输入:
训练样本
输出:模型参数
算法步骤:
参数初始化:
初始化
迭代直至目标函数收敛或者达到指定步数,每一轮迭代过程为:
更新
更新
更新
外层循环为
.
在本节中,我们根据实验研究了和 SOTA
的上下文感知方法 Multiverse Recommendation
的对比。此外,我们检查了 SGD
对学习率选择的敏感性,以及我们的 ALS
优化是否可以在没有学习率这个超参数的情况下成功工作。
数据集:
Food
数据集:包含 212
个用户对 20
个菜单 item
的 6360
个评分(从 1
分到 5
分),其中包含两个上下文变量:第一个上下文变量捕获用户评分的场景是虚拟的( virtual
) 还是真实的 (real
)(即用户想象自己饿了、还是用户真的饿了);第二个上下文变量刻画用户的饥饿程度。
Adom
数据集:包含 1524
个电影评分(从 1
分到 15
分),其中包含五个上下文变量,这些上下文变量关于同伴、工作日、以及其它时间信息。
Yahoo! Webscope
数据集:包含 221367
个评分。我们遵循 《Multiverse recommendation: n-dimensional tensor factorization for context-aware collaborative filtering》
并应用他们的方法来处理数据集。我们生成
baseline
方法:我们将 context-aware FM
和 Multiverse Recommendation
进行比较。注意:Multiverse Recommendation
已经在上述三个数据集上超越了其它上下文感知推荐算法。
我们使用 FM no-context
作为上下文无感(context-unaware
)的 baseline
,其中仅使用用户变量和 item
变量生成特征向量,这相当于具有 bias
项的矩阵分解。这是最强的上下文无关推荐算法之一。
FM
使用我们提出的 ALS
算法进行优化,Multiverse Recommendation
使用原始论文中提出的 SGD
算法来学习。
评估方式:我们从每个数据集中删除了 5%
的样本,用作调优超参数以获得最佳 MAE
的验证集。在超参数搜索之后,我们对剩下的 95%
数据集进行 5-fold
交叉验证,即不再使用验证集。我们报告了 5
次实验的平均 RMSE
和 MAE
。
所有方法都是 C++
实现的,并在相同的硬件上运行。我们使用 ALS
优化的 FM
实现、Multiverse Recommendation
实现和数据集生成脚本可以从我们的网站上下载。
ALS vs SGD
:我们在 Webscope
数据集上将 SGD
实现的测试误差和我们的 ASL
方法进行了比较,实验结果如下图所示。左图绘制了三种学习率选择的测试误差曲线,右侧的两个图分别显示了在 10
次和100
次迭代后不同学习率得到的测试误差曲线(由于 ALS
没有学习率超参数,因此表现为一条水平直线)。可以看到:
SGD
的优化效果很大程度上取决于学习率和迭代次数。当精心挑选合适的学习率、足够大的迭代次数(根据验证集执行早停策略从而防止过拟合),SGD
可以达到 ALS
的效果。
ALS
不需要精心的、耗时的搜索合适的学习率,就可以达到很好的效果。
该实验表明:SGD
需要仔细且耗时地搜索学习率,而ALS
不需要这样的搜索因为它没有这个超参数。在预测质量方面SGD
的性能与 ALS
一样好,但是前提是选择了正确的学习率。这使得 ALS
在应用中明显有利。
运行时间:Multiverse Recommendation
在实际使用中的主要缺点之一是模型的计算复杂度为 FM
的计算复杂度对于
在本实验中,我们考察所有训练样本的一次完整迭代的运行时间。我们使用 webscope
数据集,Multiverse Recommendation
,我们选择的最大
FM
的运行时间是线性的,例如可以在大约 11s
内完成所有训练样本的完整迭代(对于
Multiverse Recommendation
的复杂度随着 30
分钟,而 8
小时。
预测质量:最后我们想知道,上下文感知 FM
的灵活性和快速运行时间是否会以较差的预测质量为代价。为此我们比较了 Food
、Adom
、Webscope
数据集上的预测质量,如下图所示。可以看到:
上下文感知 FM
和 Multiverse Recommendation
对 Food
和 Adom
数据集的预测质量相当。
上下文感知 FM
和 Multiverse Recommendation
都优于上下文无感方法(相当于矩阵分解模型)。
在第三个实验中,我们考察了人工特征丰富的 Webscope
数据集,其中上下文变量(由 context influence
刻画)对于评分的影响越来越大。结果如下图所示,可以看到:
上下文感知的 FM
和 Multiverse Recommendation
都受益于对上下文有更强依赖性的评分。
当评分更依赖于上下文时,上下文无关 FM
的预测质量会变差,因为对于上下文无关 FM
,上下文是未观测到的,因此它们无法解释这种依赖性。
将两种上下文感知方法相互比较,可以看到 FM
始终生成比 Multiverse Recommendation
更好的预测。例如,RMSE
下降 0.10 ~ 0.15
,而 MAE
下降 0.08 ~ 0.10
。
结论:实验结果表明:
上下文感知 FM
能够考虑上下文信息来增强预测。
在运行时间方面 FM
是线性的,这使得它们可以应用于大维度的因子、更多上下文变量。相比之下,Multiverse Recommendation
无法处理大维度的因子、也无法处理很多上下文变量。
FM
在运行时间方面的优势并没有以预测质量为代价,相反:
在稠密数据集(Food
和 Adom
)上,上下文感知 FM
和 Multiverse Recommendation
的预测质量相当。
而在稀疏数据集上,上下文感知 FM
的性能优于 Multiverse Recommendation
。
最后,ALS
优化的 FM
很容易应用,因为它不像 SGD
那样对学习率进行昂贵的搜索。