#翻译经典# 基于商品的协同过滤推荐算法 Item-Based Collaborative Filtering Recommendation Algorithms

Item-Based Collaborative Filtering Recommendation Algorithms」是协同过滤的经典paper,其扩展算法广泛应用于推荐系统中,虽然是2001年的文章,但其思路清晰、行文流畅、论证充分,是值得精读的好文章。建议各位直接读原版,但可以先对各种翻译版本做一些概览,减少理解成本。

概要ABSTRACT

基于KNN(K-Nearest-Neighbor)的推荐系统在互联网领域被广泛应用,但因浏览量和信息量的暴增对于这套系统提出挑战,主要表现在数据越来越稀疏、推荐准确度和时效性越来越强(每秒百万级)。

本篇paper会对于item-based的推荐算法作对比分析,包括不同相似度的对比(cosine/Adjusted cosine/相关系数correlation),不同推荐计算方式(加权求和 weighted sum& 回归模型 regression)。最后会通过实验说明相比KNN的提升,可证明item-based 优于现行最优(available)user_based的方法。

1.引言INTRODUCTION

user_based(现行)推荐算法面临两大挑战:

1.实时可扩展(scalability):用户量从万->千万级别的暴增,以及用户对于商品的访问行为暴增,使得秒级处理越来越困难

2.推荐准确度:用户对于不准确的推荐越来越反感。

准确与实时是两个矛盾(conflict)的方面,瓶颈在于用户*商品的矩阵过大,而item-based方法可以规避大计算量。因为商品之前的相似度是相对固定(static)的,而且可以采用部分样本来推广全局(后续会计算多少比例合适)。

1.1 前人工作成果Related Work

贝叶斯网络(Bayesian Network),基于训练集在每个节点上建立决策树DT,边edge代表用户信息。建模需要小时或天级,精度接近KNN,适合更新要求不高的场景。

聚类(Clustering),将相似人群聚集,根据组内其他人群的平均表现进行推荐。缺点是推荐结果不太个性化(personal),而且对于边缘用户的推荐有较大误差。通常用于KNN方法的第一步分组。

Horting,基于图的推荐(graph-based),用户是点(node)用户关系是边(edge),复用与该人有连接的user推荐。与KNN不同的是,这个人不一定有评价过相同商品,推荐表现可以更优。

1.2 本文贡献Contributions

1.分析(analyze)item-based的预测算法,并提出不同的计算子任务(subtask)

2.提出相似度的提前计算模型(precomputed model)来提升在线推荐的扩展性/实时(scalability)

3.实验对比不同的item-based和user_based的结果差异

1.3 论述结构

第二章引入协同过滤背景,并正式介绍常规计算过程,包括两个变种:memory-based和module-based,说明前者面临的挑战有哪些;第三章介绍item-based算法,并将子任务的公式和计算方式说清楚;第四章是实验,包括数据集、评价指标、方法论、结果和讨论;第五章是总结和未来探索方向。

2.基于协同过滤的推荐系统COLLABORATIVE FILTERING BASED RECOMMENDER SYSTEM

2.0.1 协同过滤概览

基于人U={u1,u2,...um}和物品I={i1,i2,...,in}之间,每个ui对应的物品Iui,会输出两种计算结果:
预测值/评分Prediction: Pa,j代表用户ua对于物品ij的喜爱程度(ij不属于Iua),预测值与之前评分范围一致。
推荐Recommendation: N个被推荐物品集合Ir,Ir没有被ua购买过。

user-item矩阵A,元素Aij代表用户i对于物品j的评分,有两种推荐计算方式:
memory-based(user_based):优化整个user-item矩阵,先找到一群邻居(可以是对不同物品的近似评价或购买相似商品),然后根据邻居的喜好来推出TopN商品,被称为“近邻算法”or"user-based"算法,应用广泛。
model-based:对于用户评分建立一套模型,包括贝叶斯网络(Bayesian nework)来计算概率、聚类(Clustering)对用户分群、基于规则(rule-based)是通过发现商品被共同购买的规律来。

2.0.2 基于用户的算法面临挑战

1.稀疏性(Sparsity):人群和商品的爆炸,比如亚马逊可能有百万级的商品,但是一个人能发生行为的不足1%,利用临近算法推荐效果差。
2.扩展性(Scalability):行列扩展,计算量呈平方式暴增
解决问题的有效尝试包括,LSI(Latent Semantic Indexing)隐语义模型来降维。本文是引入item-based方法,出发点是一个人会倾向于购买与自己早期交易过的物品关联度高的商品,而早期不喜欢的商品相似度高的物品现在也不会喜欢。接下来会详细介绍。

3. 基于商品的协同过滤推荐算法 ITEM-BASED COLLABORATIVE FILTERING ALGORITHM


3.1 物品相似度计算

计算物品相似度是item-based算法中最关键的一步,m个用户是行,n个商品是列,物品i和j之间的相似度是通过对他们的评分记录来算。计算相似度有如下三种方式:

3.1.1 余弦相似度Cosine-based Similarity

这里两个物品i和j被看做是两个m维向量(m是用户数),相似度是两个向量的夹角余弦值。Sij代表相似度。

3.1.2 相关系数相似度 Correlation-Based Similarity

通过皮尔森相关系数Pearson,U代表对于物品i和j都评价过的用户集合。相关系数是Ri非(上面一横)是代表i物品的评价期望

3.1.3修正相似度 Adjusted Cosine Similarity

余弦相似度相比user_based的算法有个最大的问题(drawback)是没有考虑不同用户的评分范围(scale)差异。即用户A可能都是打3分以上,用户B都是打3分以下,评价标准不同。为了考虑这个因素,余弦考虑增加Ru非(上面一横)来只看增量,消除人与人之间的差距。

3.2 预测值计算

3.2.1 加权平均Weighted Sum

计算用户u对于物品i的推荐,是计算跟i相似的物品与其相似度的加权平均值。通过除法来时的预测值和真实评分处于同一范围。

3.2.2 回归 Regression

文中原因是余弦或者相关系数计算出来的距离可能很远(欧氏距离),但实际上可能很近,会造成结果不精准。所以采用Rn来代替Ri,计算出真实距离。(注释:实际上归一化的欧氏距离和余弦计算,是可以有效规避这个欧氏距离与实际距离不相同的情况,回归模型的存在意义不是很理解。)

3.3 性能表现

user_based的计算瓶颈在于矩阵太大,实时计算不现实;item-based是提前计算好,但计算量没有变少,对于n个物品计算复杂度O(n^2)。这种方案是对于物品j,仅保留其最相关的k个(k<<n商品数)商品和相似度,对于用户u对于物品i的推荐,仅计算k个未曾购买商品即可。k的大小会影响效果,后续也会通过实验来证明多少合适。

4.实验评估 EXPERIMENTAL EVALUATION

4.1 数据集

采用MovieLens的100K数据集(下载链接),943用户*1682电影的共10W条记录,稀疏度 (1-非零点/所有评价)=(1-100000/943*1682)=0.9369。

4.2 评价指标

(1) 统计指标:此处采用平均绝对误差MAE,值越小越精准。均方根误差RMSE也可用。

(2)决策指标:2.5以下是不选,4以上是选。

4.2.1 实验过程

实验步骤:先区分训练集和测试集;在正式开始实验之前,对于训练集上利用10-fold交叉验证,对不同计算方式和不同参数进行对比,确定最优组合。

benchmark/user_based:采用Pearson系数的近邻计算。

实验平台:文中是C语言,600MHZ/2GB内存的奔腾III的Linux机器上(本次采用python2.7在阿里云上运行)

4.3 实验结果

实验结果包括效果指标(quality/推荐准确)和性能指标(performance/计算速度),在评价效果之前,需要对参数敏感性进行校正,包括近邻size、训练和测试集比例x、不同相似度的计算。对这些指标计算限于训练集。

4.3.1 相似度对比

论文原作者计算,根据MAE(作图Figure 4)来看是Adjusted-Cosine最优。通过手写代码实践,TopN推荐且测试集比例20%,Jaccard的准确率最高9%(MAE这里表现比较奇怪);如果是全量推荐,则Cosine/Adjusted-Cosine/Pearson准确率12%近似,Jaccard反而表现最差。常见应用场景是TopN的商品推荐(如电商推荐商品受位置限制),故以Jaccard推荐做base来继续实验(原文是基于Adjusted-Cosine)

4.3.2 训练和测试集合比例

原始是从Adjusted-Cosine测试集x=0.2开始,MAE持续下降;通过手工测算Jaccard,在x=0.2-0.4之间的准确率和召回率最高。

4.3.3 商品子集容量size


商品子集,原文的MAE在10->20之间发生大规模下降,之后维持稳定;手工测算发现「准确率」变化不大,MAE一再在提升。

5.  结论 CONCLUSION

原文概述item-based方法比user_based方法优秀。
基于amazon.com的类似文章《Amazon.com Recommendations item-to-item collaborative filtering》的结论,user_based方法实时计算不现实,cluster计算推荐效果粗糙(同一类人群的推荐一致),search-based方式是推荐效果无趣(基于同一主题或同一作者)。只有item-based方式,线上实时计算时间可接受(离线已计算数据),且推荐效果还不错。

附录:手写代码

原文代表请参考github:https://github.com/lichald/CF 

运行环境:Anacoder/py 27/MBP 8G内存

关于手写代码,没有对regrssion的推荐做计算、未对比user_based和item-basde的区别。因计算结果与原文不一致,请各位发现我代码中问题在讨论区留言,互相提高。

数据集链接:下载链接

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,802评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,109评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,683评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,458评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,452评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,505评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,901评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,550评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,763评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,556评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,629评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,330评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,898评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,897评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,140评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,807评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,339评论 2 342

推荐阅读更多精彩内容