神经协同过滤(神经协同过滤)

本文主要讨论隐式反馈的协同过滤解决方案。首先,它定义了两个概念:显性反馈和隐性反馈:

显性反馈行为包括用户明确表达对物品偏好的行为。

隐性反馈行为是指那些不能明确反映用户喜好的行为。

例如:

在很多应用场景中,没有明确的反馈。因为大部分用户都是沉默用户,不会给系统一个明确的反馈“我对这个物品的偏好值是多少”。因此,推荐系统可以根据大量的隐性反馈来推断用户的偏好值。

根据获得的隐式反馈数据,我们将用户-项目交互矩阵Y定义为:

但是,1的Yui只代表他们之间有互动记录,并不代表用户U真的喜欢物品I,同样,U和I之间没有互动记录也不代表U不喜欢I..这对隐式反馈的学习提出了挑战,因为它提供了关于用户偏好的噪声信号。虽然观察到的条目至少反映了用户对项目的兴趣,但没有被查看过的条目可能只是缺失数据,自然存在稀疏的负面反馈。

隐式反馈中的推荐问题可以表示为估计矩阵Y中未观察项目的得分的问题(该得分用于评估项目的排名)。形式上,它可以抽象为一种学习功能:

为了处理缺失数据,常见的做法有两种:要么把所有未观测项目作为负反馈,要么从未观测项目中抽取样本作为负反馈的例子。

传统的求解方法是矩阵分解(MF),为每个用户和项目找到一个隐藏向量。问题变成了:

这里的k代表潜在空间的维度。正如我们所看到的,MF模型是用户和项目潜在因素之间的双向互动。它假设潜在空间的每个维度都是彼此独立的,并以相同的权重线性组合它们。因此,MF可视为潜在因素的线性模型。

举例说明了该算法的局限性:

1(a)是用户-物品交互矩阵,1(b)是用户的隐含空间。本文强调两点来理解这幅图:

1)MF将用户和物品分布在同一个隐式空间中,因此两个用户之间的相似度也可以通过他们之间在隐式空间中的向量角度来确定。

2)使用Jaccard系数作为真实用户相似度。

MF计算和Jaccard系数计算的相似性也可以用来判断MF的性能。我们先来看Jaccard系数。

上面的例子说明了MF可能存在的局限性,因为它使用一个简单固定的内积来估计用户和项目在一个低维的势空间中的复杂交互。解决这个问题的一个方法是使用大量的势因子k(即隐式空间向量的维数)。然而,这可能不利地影响模型的泛化能力(例如,数据的过度拟合),尤其是在稀疏集合上。本文通过使用DNNs从数据中学习交互函数,突破了这一限制。

首先,本文提出了一个总体框架:

针对这个通用框架,本文提出了三种不同的实现方式,可以用一张图来说明:

GMF:

上图只使用了GMF层,得到了第一种实现方式GMF。GMF称为广义矩阵分解,输出层的计算公式为:

MLP:

上图只用到了右边的MLP层,得到了第二种学习方法。通过多层神经网络学习用户和项目的隐藏向量。这样,输出层的计算公式为:

NeuMF:

结合GMF和MLP,得出第三种实施模式。上图是该模式的完整实现,输出层的计算公式为:

本文的实验用于回答以下研究问题:

RQ1我们提出的NCF方法是否优于最先进的隐式协同过滤方法?

RQ2我们的优化框架(负样本采样对数损失)如何服务于推荐任务?

RQ3更深层次的隐藏单元是否有助于用户项目交互数据的学习?

接下来先介绍实验设置,再回答以上三个问题。

数据集使用两个公共数据集:MovieLens和Pinterest,表1总结了它们的特点。

1.MovieLens:这个电影分级数据集被广泛用于评估协同过滤算法。论文用的是100万评分的版本,每个用户至少有20个评分。虽然这是一个显式反馈数据集,但本文故意选择它来从显式反馈中挖掘(建模)学习隐式信号的性能。因此,本文将其转化为隐式数据,其中每个条目都标记为0或1,以表示用户是否对该条目进行了评分。

2.Pinterest:这种隐式反馈数据是为了评估基于内容的图片推荐而构建的。原始数据非常大,但是很稀疏。比如超过20%的用户只有一个pin(pin类似于赞),这就很难对协同过滤算法进行评估。因此,本文使用与MovieLens数据集相同的方式过滤数据集:只保留至少有20个pin的用户。经过处理,获得了包含55,187个用户和1,580,809个项目交互的数据子集。每次交互都表明用户是否将图像钉在他的主页上。

评价方案:为了评价项目推荐的绩效,本文采用了文献中广泛使用的留一法。即对于每个用户,最后一次交互作为测试集(数据集通常带有时间戳),其余的训练作为训练集。因为在评测过程中为每个用户安排所有的条目需要花费太多的时间,所以我们遵循一般的策略,随机选取100个不与用户交互的条目,将测试条目安排在这100个条目中。排行榜的表现是通过点击率(HR)和归一化折扣累积收益(NDCG)来衡量的。除非特别说明,这两个指标的排名列表均截断为10。通过这种方式,HR直观地测量测试项目是否存在于前10列表中,而NDCG通过将较高的分数指定为最高排名来计算命中位置。本文计算每个测试用户的这两个指标,得出平均分。

?ItemPop .根据互动次数判断项目的受欢迎程度,从而对项目进行排名。这是一种基于评估推荐绩效的客观方法。

?ItemKNN .这是一种基于项目的标准协同过滤方法。

?业务流程重新设计.这种方法使用公式优化MF模型,该公式具有成对排序损失,BPR调整它,以便它可以从隐式反馈中学习。是项目推荐标杆的有力竞争者。本文使用一个固定的学习率,改变它并报告其最佳性能。

?eALS .这是项目推荐的最先进的MF方法。

HR(命中率)和NDCG(归一化累积损失增益),HR直观地衡量测试项是否存在于10的top列表中,而NDCG通过指定较高的分数作为top排名来计算命中位置,重点关注NDCG。

NDCG这个名字可能很吓人,但背后的想法很简单。推荐系统返回一些项目并形成列表。我们要计算这个列表有多好。每个项目都有一个相关的分值。通常这些分值是非负的,就是增益。此外,我们通常在没有用户反馈的情况下将这些项目的增益设置为0。

累积增益

我们把这些增益加起来就是累积增益(CG),CG就是把每个推荐结果相关度的分支累加后,整个推荐列表的得分。

Rel i表示位置I的推荐结果的相关性,k表示要调查的推荐列表的大小。

累积亏损收益(DCG)

CG的一个缺点是没有考虑到不同位置的每个推荐结果对整个推荐效果的影响。比如我们总是希望相关性高的结果排在第一位。显然,如果把相关性低的结果排在第一位,会严重影响用户的体验,所以我们在CG的基础上引入位置影响因子,即DCG(Discounted Cumulative Gain),意思是把排名较低的推荐结果的推荐效果“打折”。假设排序越晚,值越低。在第I个位置,它的值是1/log 2 (i+1),所以第I个结果的收益是rel i * 1/log 2 (i+1),所以:

从上面的公式可以得出两个结论:

1.推荐结果的相关性越大,DCG就越大。

2.如果相关性好,推荐效果越好,DCG越大。

标准化累积损失增益(NDCG)

DCG还存在一些不足,即很难在不同的推荐推荐列表之间进行横向评价,我们也不可能只使用一个用户的推荐列表及其对应的结果来评价一个推荐系统,而是在整个测试机器中对用户及其推荐列表结果进行评价。然后需要对不同用户推荐列表的评价分数进行归一化,即NDCG(归一化累积增益)。

在介绍NDCG之前,我们需要知道另一个概念,IDCG(理想DCG),指的是推荐系统为某个用户返回的最佳推荐结果列表,即假设返回的结果按照相关性排序,最相关的结果放在最前面,这个序列的DCG就是IDCG。因此,DCG的值在(0,IDCG)之间,所以NDCG的值在(0,1)之间。NDCG计算公式:

IDCG是理想条件下的最大DCG值。

其中|REL|表示结果按照相关性降序排列,取前p个结果组成的集合。也就是说,以最优的方式对结果进行排序。

实际例子

假设推荐系统返回的五个结果,模型得分分别为1.2,0.7,0.1,0.2,4.0。

我们首先通过公式4.2计算出DCG值为2.39278,通过公式4.4计算出iDCG值为3.6309。

最后,通过公式4.3计算出NDCG为65%。

有关更多推荐的模型评估方法,请参考https://statusrank.coding.me/articles/639f7364.html。

4(图4显示了相对于预测器数量的HR@10和NDCG@10的性能。

5(图5是Top-K推荐榜的表现,排名位置K从1到10。

总体而言,本文提出的NeuMF模型(结合GMF和MLP)效果较好,优于其他方法。

图6显示了当模型被视为二元分类任务并且logloss被用作损失函数时的训练效果。

图7显示了采样率对模型性能的影响(横轴是采样率,即负样本与正样本的比率)。

上表设置了两个变量,即嵌入长度k和神经网络层数,并以类似网格搜索的方式在两个数据集上显示结果。增加嵌入长度和神经网络层数可以提高训练效果。