论文笔记:The Wisdom of The Few

阅读这篇论文时,参考了下面几篇博文:

https://blog.csdn.net/Lyteins/article/details/85047553

https://blog.csdn.net/tinkle181129/article/details/51234261

https://blog.csdn.net/iteye_12567/article/details/81934870

https://blog.csdn.net/weixin_34143774/article/details/86892632

https://blog.csdn.net/u012922838/article/details/84189125

2009年Xavier Amatriain发表于ACM

摘要

推荐系统中,协同过滤是一个永恒的话题。通常我们所说的协同过滤,比如基于用户的协同过滤,遵循的是最近邻原则,也就是使用和目标用户最相近的部分用户来预测目标用户的行为。这样做带来了一些问题,比如数据过于稀疏,噪声大,冷启动问题,算法可扩展性等。

这篇论文中,没有使用最近邻用户,而是使用了一个独立的专家数据集,在推荐中,用专家和目标用户的相似度来对专家推荐结果加权。这个方法在一定程度上解决了传统最近邻协同过滤的问题。实验结果表明,这个推荐方法是更加有效的。

一、绪论

传统的推荐系统中通常使用最近邻算法,这个方法虽然经典,但是有一定的问题,比如数据稀疏、数据比较脏以及计算代价昂贵。从过去的研究中不难得出,CF算法的一大缺陷在于它不能抵御数据中噪声的影响,这个噪声主要包括用户显示反馈中的错误。因此,我们选择一小撮用户,他们可以产生深思熟虑、一致和可靠的评价,我们称之为专家。然后选择专家而不是最近邻用户来做推荐。这么做的目的不是为了提高推荐精确度,而是为了探究这样一个问题:专业人员是否具备对普罗大众的审美预测能力,以及独立的小数据集能否成为普遍推荐系统的参照系?

文章的主要工作:清洗和对比数据集,设计了一种根据专家意见预测个性化用户评分的方法,从准确率和召回率两个方面对算法性能进行了评估。

二、专家评分的获得

首先第一步是收集数据集。收集专家数据集的方法很多,因为本文并不是要教大家如何收集数据集,所以作者采用了一个简单的方法:从烂番茄网站上爬取专家的评分,再比对Netflix的电影数据库。经过提取筛选一共获得8000部电影和1750名专家。

图a说明大约60%多的电影只有10个专家评分,但是有超过1000个普通评分。图b说明专家评分比普通人更加稠密,50%的普通人只评了不超过100部,相比之下专家评价过的电影就更多。作者筛选了超过250个评分的专家,剩余169人。剩下的专家人数这么少正好可以说明少数人能不能挖掘出巨大的信息量。

P.S.文章没有给出专家是怎么选出来的,我想总不能所有在烂番茄打过分的都是专家,应该有一些关于等级、资历、乃至点赞数之类的评价机制吧。

2.1 数据分析:用户和专家

在使用算法之前,我们先来分析一下专家和用户的评价各有什么样的特征。

评分个数和数据稀疏程度:用户矩阵的稀疏度是0.01,也就是说user-item矩阵中只有1%的非零元素,而专家的矩阵稀疏度是0.07,因为专家平均评分过的电影要多得多。这当然也是稀疏的,但是显然比用户矩阵稠密多了。

评分均值:单个电影的专家评分极差更大,单个专家的评分趋同。

评分标准差:

这个就很明显了,专家评分的标准差无论是横向比还是纵向比都是小的,这说明专家的评分更加客观有效稳定,不受强烈感情色彩的影响。

三、专家最近邻

这里使用UserCF方法。用户相似度的度量使用下面的公式:

其中,a和b是两个用户,rai和rbi是用户评分,Na和Nb是用户评分过的数目,也就是i的个数,整体和传统的CF算法一样采用余弦度量。

在本文的算法中,不使用user-user矩阵,而采用user-expert矩阵,对于每一个用户,我们只考虑他和专家的相似度,也就是把协同过滤中的临近用户,变成在专家这个数据集中和用户临近的用户。这里设置了两个阈值,分别用来限制“只考虑和这个用户有一定程度相似的专家”和“只考虑有一定专家评分的物品”。这样做的好处是防止了因为有些案例只有极少数样本,用这些样本评价反而会出现误差,但同时这类筛选会降低算法的覆盖率。

特定用户a对特定物品i评分公式是:

第一项是用户的平均评分,它类似于神经元中的“偏置”,粗糙地反映了被预测用户自己的评分习惯,第二项是和用户足够相似的那些专家评分的加权平均值。

四、结果

为了评估专家算法的性能,开展了两个实验,分别计算平均误差与覆盖率、准确率。

4.1 推荐系统预测误差

数据集被分成8-2,5折交叉验证。将所有专家对给定物品的评分作为baseline。

第一次实验的结果表明,专家预测的MAE要大于最近邻预测,但是大的并不多,而且集中于那些预测误差本来就不太大的用户。从b图可以看出,对于预测误差大的用户,专家预测甚至更准一点。另外,专家预测有更高的覆盖率。

4.2 TopN推荐

这里主要有两点需要注意:第一,不同于通常所说的列表中前N项,这里选择列表中阈值大于XXX的物品,也就是说推荐多少个物品是不一定的;第二,物品被二分为“可推荐”或“可以推荐”,然后再通过比对测试集,计算准确率和召回率。

从结果来看,专家算法的准确率还是要低一些,不过如果阈值小的话也可以说是差不多吧。

五、用户实验

这部分没有什么需要注意的,可以参见这篇博客里对这部分的解释:

虽然作为学术评测依据,大家都习惯用各种数字评测指标来说明自己的算法比起别人的有多大的优势,但这些数学上的指标到底跟用户体验有多大的关系实际上是没有 人知道的。为此作者又做了一个更现实的用户实验。这个实验是这样的,作者通过一个网站对招募来的57名用户进行预测与评价。首先要求这批用户对100部电影按照自己的喜好进行打分,然后系统根据四种策略给每个人产生4组10个的推荐电影。这4种策略分别是:1.随机选取;2.根据专家打分平均从高往低 取;3.传统CF;4.专家CF。并要求用户对这给出的4组推荐分别作出评价,评价的问题是4个:1.对推荐结果的总体感觉;2.有没有你喜欢的推 荐;3.有没有你不喜欢的推荐;4.有没有惊喜。这4个问题的答案需以1-5(第一题)或1-4(其余三题)分值的形式给出。因为实际进行中每个用户在第 一步时评分的电影其实很少,平均每名用户评分14.5(虽然给出100部电影要求打分),这也正好切合了一个新用户面对推荐系统时的情况,也即冷启动。结 果令作者非常满意,几个问题里策略4专家CF都占有压倒性的优势,而策略3传统CF的表现只能跟策略2专家平均差不多,甚至更差。

引用来源:https://blog.csdn.net/iteye_12567/article/details/81934870

最后作者对结果的统计可靠性进行了评估,结论是可靠的。

六 讨论

专家算法在以下方面优于传统算法:

1.数据稀疏程度

2.噪声和恶意评分

3.冷启动

4.可扩展性(因为规模少了,便于计算)

5.隐私性

结论

(来自谷歌翻译)在本文中,我们基于外部资源的意见提出了一种建议内容的方法:专家数量减少。所提出的方法(即少数人的智慧)能够通过考虑减少的专家评级集来预测大量人口的评级。即使使用极小的专家组,该方法的性能也可与传统的CF算法相媲美。我们已经实施了这种方法,通过查看169 cin ema评论家的评分来预测Netflix数据集中的评分,获得可比较的平均误差。我们还在前N个推荐集中验证了该方法。最后,我们通过用户调查显示,我们的方法优于标准邻居CF,类似于冷启动情况。我们相信所提出的方法解决了传统CF的一些缺点:数据稀疏性,可扩展性,用户反馈中的噪声,隐私和冷启动问题。虽然本文提出的方法已经显示出有希望的结果,但它也为未来的改进提供了机会。首先,我们已经展示了专家CF对特定领域的有用性,但该方法可以在其他可获得专家评级的领域中实施。外部专家的使用也可以与常规CF相结合,以提高整体准确性。我们还将我们的工作局限于基于用户的邻居CF,但是可以使用基于项目的算法或其他CF算法(例如基于模型的方法)来实现相同的方法。

 

 

我的思考

文章在算法方面没有提出什么特别新颖的观点,在数据集方面做了创新。其中,基于专家的CF算法当且仅当在线测试时获得了不错的结果,我个人考虑,一方面可能是在线测试和离线测试确实有不同,另一方面是否因为专家推荐结果会更加“阳春白雪”一点,而测试中测试者是否会存在虚荣心理,选择一些自己觉得更加“高端”的推荐列表?由于不知道测试是否是双盲和匿名的,仅仅是一些不负责任的猜想。但是,冷启动、计算量、隐私性这三个方面,基于专家的CF算法确实是无可置疑的更加优越。

另外,文中提到的一些有启发性的技巧:

预测用户对物品评分时引入用户的评分平均值

在TopN的推荐列表中不用固定的列表长度,而是根据用户本身采用可变列表长度

推荐物品根据是否超过阈值二分

使用数学方法对结果的统计意义进行评估

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值