论文笔记|The Wisdom of The Few

今天读了The Wisdom of the Few这篇文章,这里稍作整理。
在推荐系统中,最经典的莫过于协同过滤算法,分为基于用户的协同过滤算法userCF与基于商品的协同过滤算法itemCF,本质上为寻找与你最相近的用户购买的商品或者与你购买过的商品最相近的商品。这两种算法首先都需要建立用户与商品的关系矩阵,值为用户对商品的评价打分或者0/1表示是否用户与商品有过购买等行为。在实际应用场景中,关系矩阵存在高维、稀疏的特性,在进行计算推荐结果时,需要解决高维稀疏向量之间的相似度并进行排序,存在较大的运算复杂度。另一方面,针对冷启动问题,在新用户加入时,如何进行合理的推荐。与根据其他用户进行推荐的思路不同,本文提出了一种根据与“专家”行为相似度进行推荐的思路。在这里,“专家”的定义为在特定领域给出可靠、一致评分的人。
文章首先对比了两个数据集,一个是来自Netflix的普通用户评分数据集,一个是来自网上150个影评专家的评分数据。对比CDF曲线发现,专家给出的评分更加稠密(每位专家观影量较多),而普通用户数据集更大。另外,每个专家的评分数量、每部电影的专家评分数量更加均匀,相比之下普通用户数据集可能存在热门影片的评分远比冷门影片多的情况。对比标准差发现,专家们对同一部电影的评分相对一致,标准差较小(大概在一定程度上表明恶意评分等现象的影响较小),存在更少的噪声。
本文中对比了userCF与expertCF的算法效果,包括评分预测的精确度(平均绝对误差)TopN推荐结果的precision。相似度的计算方式采取的是一种余弦相似度的变形
s i m ( a , b ) = ( r a i r b i ) r a i 2 r b i 2 2 N a b N a + N b sim(a,b)=\frac{\sum{(r_{ai}r_{bi})}}{\sqrt{\sum{r_{ai}^{2}}}\sqrt{\sum{r_{bi}^{2}}}}\frac{2N_{a\cup b}}{N_a+N_b}
可以看出,这种相似度的左边部分为余弦相似度,右边部分近似于Jaccard相似度。
首先,计算用户与所有专家向量的相似度,设定阈值 δ \delta ,找出相似度超过阈值的专家构成集合 E E' ,针对用户 a a 对某个物品 i i 的评分预测,需要从 E E' 中选取对该物品进行过评分的专家构成集合 E " E" 。之后,若集合 E " E" 元素个数少于设定阈值 τ \tau ,则直接将所有专家的评分的平均值作为该用户对该商品的评分估计值,否则,计算方法为
r a i = σ u + ( r e i σ e ) s i m ( e , a ) s i m ( e , a ) r_{ai}=\sigma_{u}+\frac{\sum(r_{ei}-\sigma_{e})sim(e,a)}{\sum sim(e,a)}
在这里, δ \delta τ \tau 是需要根据具体情况调节的参数。
之后,论文对比了三种方法的实际结果,一种是所有专家评分的平均值,一种是expertCF,一种是普通的userCF。采用5折交叉验证的方法,两种CF方法采用相同的参数。对比之下,对于平均误差,直接取平均的方式精度最低,expertCF的误差稍高于userCF,但expertCF的覆盖率(指数据集中涉及到运算的专家、普通用户)较高。而对于topN推荐结果,这个问题显然为二分类问题,采用precision作为衡量标准。计算结果表明,userCF的精确度稍高,适当降低正负样本的阈值至3后,两种算法精确度大致相同。
而在实际应用场景中,并不是简单的平均误差低或者topN精度高就代表算法效果好,在冷启动场景即用户数据缺乏时,数据集不完善,如何更加合理的推荐商品才是关键。本文进行了实际的测试,这也是本文突出的地方。参与实验的人员有57名,将500000部来自Netflix的影片分成10份,每个实验人员从10份中各自随机抽样10部影片构成共100部影片进行评分,构成实验数据。之后,分别采用上述三种方法和随机推荐共4种方法构建推荐列表,由实验人员对四份推荐列表的总体质量、是否包括用户喜欢的物品、是否包括用户不喜欢的物品、是否包括令人惊讶的物品(very good)进行打分,统计结果表明expertCF表现更优。
总结来讲,本文提出的expertCF思路(更换数据集的想法)一定程度上解决了数据稀疏的问题,降低了噪声和恶意评分的影响、缓解了冷启动数据集不完整的问题、增强了可扩展性(仅需更新物品维度、增加专家对新物品评分即可)。

猜你喜欢

转载自blog.csdn.net/Lyteins/article/details/85047553