【推荐系统】论文笔记 | 基于专家建议的 CF 算法

一、前言

论文:The Wisdom of the Few

这篇论文据说是豆瓣阿稳在介绍豆瓣猜的时候极力推荐过这篇论文,豆瓣猜也充分应用了这篇论文中提出的算法。

1.1 摘要

最近邻的协同过滤算法 (Nearest-neighbor collaborative filtering ) 生成的推荐系统已经取得很好的成果。但依旧存在以下 3 个缺点:

  1. 对数据稀疏性和噪音的处理
  2. 冷启动问题
  3. 可扩展性差

论文提出一种新方法,一种传统协同过滤算法的变形:基于专家建议 (based on expert opinions) 的推荐系统,简单概括就是「使用一组独立、数据量较少但可靠的专家数据集来计算预测,专家的建议是根据它们与用户的相似性进行加权」。这方法解决了上述的传统协同过滤算法的缺点。

最后,实验和实践证明基于专家建议的推荐系统效果不错,用户喜欢。

关键字:最近邻的协同过滤、基于专家建议的协同过滤

1.2 论文主要内容介绍

协同过滤(下面简称为 CF)是协作的推荐系统,在上一篇文章介绍过 CF 的推荐思想:「推荐给你的项目将会是与你相似度较高的用户过去所喜欢的项目」,可以理解为 CF 是基于用户间的相似度推荐。例如,最近邻算法就是为每个用户找到许多相似的用户。

但是,「用户间的相似度如何有效计算」就是一个难点。它受限于数据稀疏和噪声的影响,同时因为用户数量庞大导致计算成本难度很高。现有基于用户显式反馈的 CF 算法中的很大一部分误差是来源于用户显式反馈数据的噪声。

因此,为了降低噪声的影响,我们使用具有噪声较少的某领域专家的反馈来建立推荐系统。

专家的定义「一个在特定领域中能给出可靠、经过深思熟虑以及一致评分的人」

引入专家建议的目标不是提高 CF 准确度,而是:

  1. 研究如何通过使用一小组用户(即专家)来预测大量用户的偏好;
  2. 了解独立和不相关的数据集产生推荐的可能性;
  3. 分析专业评估者是否是普通用户的良好预测者;
  4. 讨论这种方法如何解决传统 CF 中的一些缺点

论文主要内容结构:

  1. 两个数据集的收集与对比:一个是来自 Netflix 的用户评分数据集,一个是来自网上超过 150 个电影评审专家的评分数据;
  2. 设计一个基于专家建议的预测个性化用户的评分;
  3. 利用预测准确度和推荐列表的精确度来评估基于专家建议的推荐系统;
  4. 利用实验验证基于专家建议的推荐系统的真实性能

二、两个数据集的收集与对比

两个数据集分别是一个是来自 Netflix 的用户评分数据集,一个是来自网上超过 150 个电影评审专家的评分数据。来自 Netflix 的用户评分数据集是比较好爬取得到。但是专家评分数据就比较难爬取。

2.1 挖掘专家评分数据

  1. 从可靠来源获得的项目评价,并使用评分推理模型或自动检测专家模式(没懂)
  2. 某些领域已经有专门的专家评价的网站,如电影领域、书籍领域等等,这样就可以直接爬取。(论文选用这种方法)

当然,还有其他方法爬取专家评分数据。但论文的主要内容不是讲解如何爬取专家评分数据,而是使用这些数据量不大的专家评分数据去预测普遍用户的评分。

2.2 两个数据集分析:用户与专家

2.2.1 必要知识:CDF 曲线

定义很简单:对于所有实数 x,累计分布函数(CDF)等于所有小于等于 x 的值出现概率之和,即

一般,CDF 曲线长这样:

CDF 曲线实例

2.2.2 利用 CDF 分析数据集分布情况

论文中使用的数据集情况:

  1. 已知用户数据集比专家数据集大得多。专家数据集一共选取了 169名专家;电影数量大约在 8,000 左右
  2. 用户数据集的稀疏系数大约为0.01,意味着用户-电影矩阵中只有 1% 的位置是非零值。而专家-电影矩阵非空值大约100,000个,产生的稀疏系数为0.07。
用户-电影矩阵与专家-电影矩阵

PS: 通常专家数据集比用户数据集小得多。

a. 评分数量的分布
评分数量的分布情况

针对上图简单分析:

  1. 专家-电影矩阵的稀疏程度低于用户-电影矩阵的稀疏程度,即专家数据集更完整(参照上右图总结 1)
  2. 同时每个专家的评分数量以及每部电影的专家评分数量的分布更加均匀。

b. 评分平均分的分布

评分平均分的分布情况

针对上图简单分析:

  1. 虽然专家的评分平均分数相当比较集中(右图),但是对于每部电影专家评分差异性大于用户评分差异性(左图)。原因可能是无论专家是否喜欢这电影,专家都会客观观看与评价电影,而用户往往倾向先选择评价好的电影观看与评价。
  2. 专家给出了更多的高分电影。专家似乎对优秀电影的看法是一致的。

c. 评分标准差的分布

评分标准差的分布情况

针对上图简单分析:

  1. 专家对每部电影的整体标准差较低(参考左图),对一部电影的专家们评分比较相似,专家观点较一致;
  2. 每个专家的标准差低于用户之间的标准差;即用户评分波动大,反映用户对电影评分主观色彩更明显,而专家评分波动小。

2.3 小结:两个数据集的区别

上述三张图的分析目标是让我们了解到用户集和专家集数据的较大的区别。总结以下几点:

  1. 用户数据集比专家数据集更加大且更加稀疏;
  2. 专家数据集比用户数据集更完整:专家会对所有类别的电影进行客观评分,而用户往往倾向先选择评价好的电影观看与评价;
  3. 专家数据集比用户数据集噪声更小:比如用户的评分往往存在主观因素;
  4. 专家对电影评分具有一致性;

三、基于专家建议的 CF 算法

传统的 CF 方法使用 kNN 算法基于找 k 个最近邻来预测用户评分,其中 k 个最近邻可以是基于用户的或者基于项目的 。这里,我们选用基于用户的 kNN 的 CF 方法,因为它对专家数据的透明适用性。方法步骤如下:

  1. 填充用户-电影矩阵;
  2. 根据预先定义的相似函数计算每一对用户之间的相似度。

这里,我们使用的相似函数是余弦相似度的一个变种:

相似函数

而论文提出的方法是基于专家建议的 CF 推荐系统。因此,我们计算不是普通用户间的相似度,而是计算用户与专家间的相似度。论文采用的方法与Ma等人的邻域选择方法密切相关。

基于专家建议的 CF 推荐系统构建的方法的步骤如下:

  1. 先找出与给定用户相似度超过某一阀值 的专家集合
基于专家建议的 CF 算法第一步骤
  1. 预测给定用户 u 对项目 i 的评分
基于专家建议的 CF 算法第二步骤

PS:待修改之处: 是不是写错了,应该是 ?用 好处在于应对新用户进入

方法参数有两个: 与 这两个阀值。这两参数的最佳设置取决于数据集和应用程序。注意,这两个参数在传统 Neighbor-CF 算法也是存在的。

四、标准 CF 算法和基于专家建议的 CF 算法结果比较

下面用三种推荐系统,并对他们的结果进行比较:

  1. Critics' Choice:计算每个电影在所有专家评分的平均分,取平均分高的推荐。作为最差情况的基线度量。
  2. 基于专家建议的 CF:我们用 169 个专家数据来预测 10,000 个用户评分。其中阀值
  3. Standard-CF:传统的 CF 算法(Neighbor-CF,基于用户最近邻的 CF),不使用专家数据集。其中阀值

与此同时,我们采用交叉验证的方法,将用户数据集通过随机抽样划分为 80% 的训练数据与 20% 的测试数据并进行 5 次交叉验证,取 5 次交叉验证的平均值。

4.1 平均误差的对比

三种方法产生的推荐结果

简单分析一下:

  1. 相对于 Critics Choice 而言,基于专家建议的 CF 算法的准确度有显著地提高;
  2. 基于专家建议的 CF 误差大于传统的 Neighbor-CF 的误差,但相差不多,可接受范围;
  3. 基于专家建议的 CF 覆盖率大于传统的 Neighbor-CF

上面的结果是固定了基于专家建议的 CF 方法的两个参数:。下面改变参数观察参数对基于专家建议的 CF 算法中误差、覆盖率两个指标的影响。

阀值 δ、τ 对基于专家建议的 CF 平均误差和覆盖率的影响

4.2 top-N 推荐的精确度的对比

推荐算法的评估除了平均误差之外,还可以使用 top-N 推荐列表的精确度衡量。

在我们的例子中,我们不是构建固定的 N 值得推荐列表,而是在给定阈值的情况下将项目分类为可推荐或不可推荐:「如果项目的预测值大于 σ,我们将其定义为可推荐的项目;反之,则为不可推荐的项目。如果测试集中没有值得推荐给给定目标用户的项目, 我们只返回一个空列表。」

因此,考虑到这个定义,我们将系统评估为二分类问题:

1.对于给定用户,计算所有预测并向用户显示大于或等于 σ 的预测;
2.将预测可推荐项目对照标签,统计 true positive 和 false positive 数量;
3.使用下面公式计算分类的精确度:

传统的Neighbor-CF 与基于专家的CF 在精确度的比较

因此,对于愿意接受任何高于平均项目的建议(Critics' Choice method)的用户,基于专家的方法似乎表现得与传统Neighbor-CF一样好。

五、用户研究

尽管误差和推荐列表精确度是用于 CF 评估的重要指标,但它们与推荐的实际质量的关系尚不清楚。因此,我们设计了一项用户研究,以进一步验证我们的发现。

使用收集的评级和我们在上述实验中考虑的8000部电影,我们生成了4个前10个推荐列表。生成推荐列表的方法有以下 4 种:

  1. 随机列表:随机生成推荐列表;
  2. Critics Choice:将电影按专家给出的平均评分排序,找出平均分排前 10 的组成一个推荐列表。 如果两部电影具有相同的平均值,我们会根据有多少专家对电影进行评分来对它们进行排名;
  3. Neighbor-CF:为每个实验人员从 Netfilx 用户数据集中找到相似度高的用户,从实验人员未评分过而相似的用户已评分过的电影中,选取评分排前 10 的电影组成推荐列表;
  4. Expert-CF:与(iii)类似,但使用专家数据集而不是 Netflix 用户数据集

其中3,4方法的相似度阀值 与自信阀值 取值一样:

同时实验人员有 57 名,年龄范围在 22 到 47之间,平均年龄是 31.2 。大约 90%的实验人员年龄在 22 到 37 之间。79.12% 是男性。通常,这组实验人员构成对应于在线推荐系统应用程序中最活跃的组。

有了推荐列表和合理的实验人员构成后,我们要求实验人员评估:

  1. 推荐列表的总体质量;
  2. 是否包括用户喜欢的物品 (good);
  3. 是否包括用户不喜欢的物品 (bad or very bad);
  4. 是否包括令人惊讶的物品 (very good);

目前情况,我们必须根据有限的实验人员反馈生成推荐列表。 因此,我们的测试条件类似于用户最近开始使用推荐服务的真实设置,即我们的结果可用于评估算法在冷启动条件下的表现。

实验人员对4种方法生成的推荐列表进行反馈

PS:图上只有 34 人进行评分,我估计是剩下 23 人信息太少或者就退出了实验。不然少了一半的实验人员的数据有点失真了吧?或者我对图理解错了?

实验人员对4种方法生成的推荐列表的满意度与不满意度反馈

最后,我们进行了方差分析(anova),以测试四个推荐列表之间的差异是否具有统计显着性。经过一系列操作,最后论文得出的结论是专家CF算法产生的参与者满意度的差异不能归因于用户研究的抽样

六、基于专家建议的 CF 解决的问题

在第 4 部分,可以看到基于专家建议的 CF 的在精确度方面表现不如传统的 CF 算法。然而,我们使用专家数据的目标并不是提高预测精确度的,而是解决传统 CF 推荐系统的一些普遍存在的问题。

6.1 解决数据稀疏问题

一般情况,用户-项目矩阵是很稀疏的。尽管使用降维算法可以提供帮助,但是用户数据源的噪音与不一致性对预测影响很大。而专家数据更完整、噪音很小并具有很好的一致性,同时专家更有可能评估了大部分的项目(可以回看第 2 部分 用户与专家数据集对比)。最后在第 5 部分中,通过实例证明在数据稀疏情况下,如冷启动时,基于专家建议的 CF 表现优于传统的 CF 算法。

6.2 降低噪声和恶意评分的影响

用户评分数据集的噪声和恶意评分是普遍存在的,这些会影响预测精确度的。第 2 部分也讲到了专家评分数据更加客观与稳定。使用专家评分数据有利于降低噪声和恶意评分。

6.3 缓解冷启动问题

在传统 CF 算法中,新项目的进入,由于缺少评分数据,就很难被推荐。而专家用户通常会在知道其存在的情况下对新项目进行评分,从而最大限度地减少项目冷启动。 此外,如我们的用户研究所示,创建一个不那么稀疏与噪声较少专家数据集比较简单,同时还可以改善用户的冷启动问题。

6.4 可扩展性

在有 M 个项目中计算 N 个用户之间的相似度的时间复杂度是 。每当新项目或者新用户加入,更新相似度的成本就非常高。因此,可扩展性比较差也是传统 CF 算法的缺点。现有有很多种解决方法,如使用 K-means 聚类。基于专家建议的 CF 算法也是一种解决方案。它不需要计算用户之间的相似度,而是计算用户和专家之间的相似度,同时专家的数据集相比于用户小很多。(如例子中 169 专家 vs 50,000 用户)

总结

基于专家建议的 CF 推荐算法目的是用少量可靠的专家数据集去预测大量用户的评分。这就是论文题目 The Wisdom of The Few 的含义。

在第 4 部分可见,基于专家建议的 CF 推荐算法在误差和 top-N 精确度虽不是最好的,但能得到较好可接受的结果。在第 5 部分证明了基于专家建议 CF 算法在实际运用的优越性。而在第 6 部分介绍了基于专家建议的 CF 算法解决了传统的 CF 算法一些局限性。

总结

疑问

  1. 在第 3 部分中 联合评分是什么意思?
  2. 基于专家建议的 CF 算法第二步骤中,公式中 是不是写错了,应该是用户 a 的评分平均分 ?

还望各位大佬多多指教,谢谢

你可能感兴趣的:(【推荐系统】论文笔记 | 基于专家建议的 CF 算法)