协同过滤(4):论文速读 Collaborative List-and-Pairwise Filtering from Implicit Feedback

前言

  • 发表在期刊TKDE 2020上的一篇关于通用CF推荐的论文
  • 本篇笔记为本人原创,如需转载引用,请务必在文中附上原链接及相应说明,包括作者信息(阿瑟)
  • 码字不易,好心人随手点个赞
  • 本篇笔记非标准译文,其中包含了笔者自己对问题的部分理解,仅供参考,欢迎学习交流
  • 文中涉及到的推荐评估指标,可以参见https://zhuanlan.zhihu.com/p/38875570
    https://zhuanlan.zhihu.com/p/73335362

摘要

近年来,基于隐式反馈的协同过滤是重要的研究内容,现有的主流逐对方法(Pairwise)优化AUC,经验证明,AUC有助于利用二元关联数据,但不能解决排序问题,并没有真正关注 top-k 推荐

虽然存在最大化MRR(平均倒数排序)的List-wise方法,但它效率低下,不能特别适用于一般的隐式反馈情况为此,本文提出了一个新的框架,即协同列表和成对过滤(CLAPF) ,旨在将Pair-wise思维引入到List-wise方法中。具体来说,我们平滑另一个排序指标MAP(Mean Average Precision) ,并使用Pair-wise的方法结合两个度量指标(MAP,MRR)来提升top-k 推荐的性能。此外,为了加快收敛速度,还讨论了 CLAPF 的采样方案。它提供了一种在隐式反馈上成对地利用秩偏测度的思想。

引言

隐式反馈数据通常存在缺乏负反馈的挑战,特别是在数据稀少的情况下。大量的负例和缺失的正例混合在一起,无法区分,这使得许多现有的分类算法不能直接应用于该问题。一般来说,以前处理隐式反馈的方法可以分为两组 (1)逐点回归方法(pointwise regression methods),(2)逐对排序方法(pairwise ranking)

  1. pointwise:将隐式反馈作为绝对偏好得分,通过最小化平方损失来逼近绝对评分.
  2. pairwise 通过优化(Area Under the Curve,AUC)来训练推荐模型,这种方法基于相关物品样本和不相关物品样本之间的成对比较。(AUC可以理解为考察模型的分类问题,看正样本的分值有多大概率大于负样本的分值,与Pairwise本质相同)
    例如,Bayesian Personalized Ranking (BPR)是
    采用这种成对偏好假设的最流行的方法之一。给定观察到的用户-项交互(u; i)和未观察到的用户-项交互(u; j) ,BPR 假设用户 u 对项目 i 的偏好高于物品j。

研究表明,成对方法明显优于Point-wise方法 ,是解决隐式反馈问题的首选方法。

然而,由这些成对方法优化的 AUC 指标并不能很好地反映推荐列表的质量,因为它不是一个有排名偏差的度量。这意味着大多数Pairwise方法可能在 top-k 推荐方面表现不佳 。虽然已经有一些工作通过直接优化排序的方法将成对排名一般化为列表排序,但是很难对列表间的损失建模,而且效率很低:例如,CLiMF[Recsys 2012]最大化MRR 。此外,研究表明,这种列表方法通常可以显著提高基于多分类数据集的性能,就像显式数据一样,但是对于二分类数据集(隐式数据)的建模能力不够。

相关工作

Pairwise Methods

对于解决隐式反馈问题,Pairwise 已经成为主流方法。大多数成对方法都是对 BPR 算法的改进,可以分为六类

  1. 放宽BPR的两项基本假设。一些研究认为,BPR 中的两个基本假设(即个人物品偏好假设和用户间的独立性假设)在实践中并不总是成立。MPR 放松了个人物品偏好假设,认为物品间会互相影响,利用多个成对排序之间的关联,而群体BPR排序(GBPR)放宽用户之间的独立性假设,考虑到用户偏好受具有相同兴趣的其他用户的影响

  2. 改进BPR的抽样策略。BPR 对每个用户从未观测到的物品等概率采样负物品。然而,等概率采样器效率很低,特别是对于长尾数据集或大规模数据集。为此,提出了动态负采样(DNS)等 ,它们动态地从当前预测模型产生的排序列表中挑选负训练样本,并反复更新包含所有未观察过的物品列表

  3. 改进目标函数。AUC不是为了量化正向样本放在顶部,负样本在底部,未知样本在中间的推荐列表。为了解决这个问题,Song 等人引入了一个广义 AUC (GAUC) ,它可以同时衡量排序结果的首尾。

  4. 通过附加数据挖掘隐含信息。例如,丁等人关注购买反馈,提出了一种基于电子商务领域附加视图数据的带概率权重的 BPR 采样器。

  5. 引入转移学习。由于大多数成对方法都局限于数据源的一个领域,一些工作已经涉及到跨不同领域建模偏好的问题。CroRank将用户的偏好从辅助域转移到目标域,以获得更好的推荐。

  1. 与具体应用问题相结合。由于成对方法在解决隐式反馈问题方面取得了成功,一些研究将 BPR 应用到实际应用中,发现它可以极大地提高性能和生产力,例如,教学路径推荐[30]、[31]、科技预测推荐等

面向排序的CF (Ranking-oriented CF)

成对方法的度量并不能很好地反映推荐列表的质量,因为不同位置的错误惩罚相同,这不是排序列表中的预期行为。由于 top-k 推荐已经成为场景中的一个常见选择,为用户推荐一个令人满意的有序列表变得更加重要。

一些先前的面向排序的 CF 算法通常使用面向排序的目标函数来了解用户和项目的潜在因素。早期的研究主要集中在概率潜在语义学(pLSA)上,用于统计建模用户的偏好。近年来,对度量空间(Metric Space )的研究越来越多,LCR 假设,在用户-物品对定义的度量空间的某些邻近地区上,排序矩阵是低秩的,提出最小化排序损失的一般经验风险。

现在,一些方法利用列表度量Listwise Metric来设计一个面向排序的 CF,例如,ListCF优化了相似用户的概率分布而不是物品的排列来估计基于评级的偏好排名。然而,这些方法中的大多数并不是专门为一般的推荐场景设计的,推荐场景具有从用户到物品的隐含的不分等级的相关性得分。
后来,Shi 等人提出了 CLiMF 通过直接最大化 MRR 来处理单类数据(隐式反馈),从而获得更好的隐式反馈问题排序结果,这使得 CLiMF 成为最流行的列表方法之一,但效率较低。

以前的 CF 方法还尝试优化另一个排序指标NDCG。一般来说,我们可以大致地把它们分为两类。第一类是以明确和可解释的方式对 NDCG 进行优化,如 CoFiRank ,作者设计了一个损失函数直接优化 NDCG,但是由于 NDCG 的复杂计算和优化过程,它具有极高的时间复杂度。
第二类是更常见,它旨在优化 NDCG 的隐式方式而没有使用平滑的目标函数,如 CRMF 和 DNS ,但这种方法在一定程度上缺乏解释性。

因此,这似乎很难通过优化 NDCG 来实现以一种明确和有效的方式优化排序指标

相关定义说明

符号说明

用户集和物品集分别为:表示用户的正向反馈,用户u观察到的物品数量为. 表示用户和物品的二元关系。表示用户排序列表中物品i的位置,这个排序主要是基于物品和用户的相关性,相关性越高排序越靠前,该值越小。表示用户u对于物品i的预测评分/喜欢值,文中使用矩阵分解得到:

隐式反馈问题就是给用户u从未观察过的物品中基于预测评分生成一个个性化物品排序列表

Pairwise方法的优化指标

论文中给出了BPR常用的评估指标AUC的定义,个人感觉这种写法不是很严谨,但基本还是正确的。他从AUC向BPR的损失函数逐步推导,对于理解问题本质还是比较有帮助的:可以将AUC理解为对于每个正样本的分值有多少概率大于负样本的分值

其中的指示函数,可以使用预测分值通过sigmoid函数代替:
最后可以表示成为下面的形式
在 BPR 中,优化目标函数意味着最大化用户比j更喜欢物品i概率,可以改写成更清楚的形式
这种表示形式还是比较有趣,也很容易理解

CLIMF优化指标

CLiMF主要是用了MRR来优化,文中定义如下:

看起来很复杂的样子,其实可以分开来看,右边的联乘是为了确定当前物品是不是排名最靠前的正例,这样的连加就是为了遍历所有物品,找到排名最靠前的物品,并取其排序位置的倒数作为最后的分值,扩展到所有用户就是下面这种简单的表示:

CLiMF对RR公式做了与BPR相同的平滑操作:

优化这个函数实际上仍然很难,因为它具有多样性。而且计算量随着推荐条目数的增加呈二次增长,对于大多数推荐系统来说这是非常大的。为了解决这个问题,我们可以推导出 RR 的一个平滑版本的下界:
通过目标函数,我们发现List-wise的优化准则仅仅集中在观察项上。与主流的通过观察项和未观察项挖掘用户偏好的成对方法不同,当前的List-wise目标函数没有正未标记对,也没有未观察项。然而,在隐式反馈的情况下,用户通常看到的物品较少,而且大多数物品没有被观察到,因此我们认为这样的目标函数对于利用大量未观察到的信息存在局限性。

总结很重要,分析的关键
总的来说,成对方法和列表方法都优化了某种指标,并利用了用户的有用的观察项,但是成对方法中只有观察项和未观察项对导致排序性能不足,而列表方法中只有两个观察到的物品对缺乏挖掘隐含信息的能力

一句话:Pair-wise: No ranking;List-wise: No implicit

模型方法 Collaborative List-And-Pairwise Filtering

具体来说,我们首先平滑的MAP作为一个低限版本,使它可以在可比的时间内优化成对的方法。MAP 是一个列表式的评估指标,通常为用户提供更有价值的Top推荐。然后,我们分别将平滑 MAP 和上述 MRR 与成对目标函数相结合,使这些列表方法更有效地应用于隐式反馈的 top-k 推荐。

MAP

AP定义如下:

可以简化成下面的公式表示形式:
即计算所有正例所在位置的精度情况。跟上面情况相似,用预测值做一个平滑改造:
这个地方为什么可以用sigmoid函数代替呢?:
那么相关性越高/预测分值越高,排名就会越靠前,影响排序倒数就会越大,因此替换是比较合理的。
下面就是对AP进行进一步的化简,文中提到基于琴生不等式和sigmoid函数凹性来取优化,好像并没有直接用到

相关性质

这个地方用的主要是In()函数,该函数为凹函数,因此存在
的性质,上面的推导中也主要用该式找到函数下界。

最后省略常量得到MAP损失的表示形式

再来对比一下MRR的形式

区别主要在于第二项,最大化第二项来学习其他被观察项的潜在向量,以提高它们的相关性分数,这与 Eq 给出的 CLiMF 方法有很大的不同。总之,CLiMF 导致促进一个观察项目和分散其他物品,而 Eq。(12)在同时促进和分散两个观测项目方面取得了较好的平衡。

这段也太扯了吧,无法理解,这两个公式根本就是一个式子呀,就算符号不一样,符号对换一下就行呀,哪有差别呀,woc

是因为这篇是future issue,还没改完么,太不正常了,都不想看了

CLAPF公式

第一项可以表示成为下面的形式,这个地方是不是用约等号比较合适?


LMAP 仅依赖于观察到的物品,忽略探索未观察到的物品间的相互作用。在隐性反馈情况下,用户通常只看到较少的项目,而大多数项目是未观察到的项目,因此这种目标函数在一定程度上造成了不足。 ,我们可以将未观测到的项目注入到目标函数 LMAP 中 ,假设已观察项目 i 的位置应高于未观察物品 的位置。利用这种技巧,我们可以在模型中引入成对排序,并进一步利用未观测项目中隐藏的更丰富的交互,期望进一步提高推荐性能。

期刊文章的精髓:重复描述拉扯篇幅,给我看了

优化损失函数第二项意味着最大化用户喜欢正例 k 而不是其他正例 i 的独立概率; 优化第一项可以扩展到最大化用户喜欢正例i 而不是未观察的j 的独立概率,即下面的形式

面对多个排序对的排序问题,受 MPR 框架的启发,我们可以通过最大化两个排序对的联合分布概率来最大化这两个目标。然后,我们有一个新的标准称为 CLAPF-MAP:

其中可以把概率形式表示成下面的差值形式
其中的待训练的参数就是矩阵分解的两个目标矩阵
其中的R()就是L2正则项:

下面给出MRR的优化形式:按照上面的替换形式,只是在第二项的位置有点稍微不同,变成这样的形式与MAP对比,只是提供一种新的排序。

可以理解为MAP的形式一方面考虑了正例与负例的差异,同时考虑了正例间的差异,标准位于正例和负例中间,做了一个综合;而MRR的形式标准在排序的最左侧;一句话理解就是:两类样本,三个样本可以有两种排序方式

前面MRR和MAP公式对比分析的那段话应该拿到这儿来说明,单靠公式根本没有区别呀!!!!!!

CLAPF优化

最后的推荐评分基于下式得到:

通过SGD对两个损失函数进行优化
CLAPF 的总时间复杂度为 O (Tnd) ,其中 T是迭代次数,n是用户数。同时,预测物品上用户偏好的时间复杂度为 O(d) ,与 BPR 相同。因此, CLAPF 和开创性的方法 BPR 的计算复杂度在效率方面是可比的,这比现有的列表方法快得多。

CLAPF 采样

与Pair-wise方法相比,CLAPF 对两个观察物品(正例)进行了比较,这对 top-k 推荐中的排序问题有很大的贡献;
与List-wise方法相比,CLAPF 能够深入挖掘被观察项和未观察项之间的联系,从而挖掘出用户和未观察项之间隐藏的丰富交互。在这一部分中,介绍CLAPF 目标函数下的抽样问题

抽样策略在从数据中学习中起着重要作用。在采样器中,动态负采样(DNS)[25]和 (AoBPR)已经成为最流行的两种方法,它们动态地从当前预测模型产生的排序列表中挑选负例,并反复更新包含所有未观测物品的列表

然而,这些负采样策略是针对Pairwise中两两比较的梯度消失问题而设计的。需要设计适合CLAPF的新采样策略,需要包含所有观察项和未观察项的采样策略。

模型梯度计算如下:

其中因子R就是前面推导中的公式:
或者是MRR的形式。当更新模型参数时,我们为了加快收敛需要关注因子项:
当该项接近0时,会出现梯度消失的情况(Gradient Vanish),参数不会更新。

因此采样的时候,我们需要选择合适的(k,j)对,使得因子项中的Ru尽量小,例如对于

,我们尽量选取较大的预测值的物品k和j,这样的样本被认为是好样本.
为了进行抽样,需要首先根据预测的相关性得分生成排序列表,以帮助从全局数据中获得概率值较高/低的样本。由于现实世界中的大多数数据都遵循长尾分布,因此采用几何采样器对排序列表进行采样。

针对CLAPF,作者提出了Double Sampling Strategy DSS策略

其包括两部分:负采样器(item j)和正采样器(item k);而对于物品i,是从用户u观察过的物品中等概率随机抽取的。对于k和j则是按照上图的4步进行的:

  1. 第一步:矩阵分解得到用户和物品的嵌入表示
  2. 第二步:随机选择一个嵌入维度,取物品在该维度上的嵌入值,按照该值对物品做降序排序
  3. 第三步:对于用户u取其用户嵌入,计算该嵌入和刚得到物品嵌入的关系
  4. 第四步:根据sgn()的值,进行采样(按照几何采样,从列表顶部向下/底部向上)。如上图所示,不同的指标采样的方向不同。

实验情况

数据情况如下:


对于所有的6个数据集,根据之前常用的训练/测试划分策略,随机将观察到的用户-项对的一半作为训练数据,其余作为测试数据,然后从训练数据中为每个用户随机选取一个用户-项对来构造一个验证集。

重复上述程序五次,构成有五份训练数据和测试数据。实验结果是取 这五份测试数据上的平均性能。


实验结果方面文中有张整页的表,感兴趣自己看原文,实验工作量还挺足的,能够说明方法效果可行。


文中也分析了采样策略对模型收敛的影响,证明了DSS的有用。

总结

这篇工作前半部分的论文写的相当精彩,分析的也十分到位。但是在模型介绍部分,个人感觉有较多问题,让人困惑。而且模型整体看起来也就是Pairwise的扩展,没有摆脱BPR结构的限制。总体上模型分析上有很多值得的借鉴的部分,但MRR和MAP部分作者真的需要再好好修改一下。

END

本人所有文章均为原创,欢迎转载,请注明文章出处 。百度和CSDN等站皆不可信,搜索请谨慎鉴别。本人习惯不定期对自己的博文进行修正和更新,因此请访问本人主页查看最新文章https://www.jianshu.com/u/40d14973d97c

你可能感兴趣的:(协同过滤(4):论文速读 Collaborative List-and-Pairwise Filtering from Implicit Feedback)