微信号:computress

介绍:算法女博士及她的小伙伴的思维乐园.关注数据挖掘,机器学习,IT技术,互联网思考,程序员身心.

漫谈专家推荐(1)

2015-07-23 10:00 飞林沙

第一次接触专家推荐,就是来自于我在豆瓣Mentor阿稳当年的一篇博客,叫做《少数人的智慧》,这篇文章中引用了Paper 《The Wisdom Of The Few》,可以说这篇文章一定程度上印象了我很久以来的推荐算法。尤其在社区产品中,我都愿意去选择专家推荐来解决问题,具体的细节我会在下面来逐渐解释。

我们在本篇文章中先来简述这篇paper的内容,而在下一篇中把主要的精力放在我眼中这篇paper的工程实践上。


首先这篇paper关注人文性和实验性远远超出了他的理论性,从这篇文章中更多地是体现出作者的世界观,所以我并不想去论述【到底智慧是否掌握在少数人的手中】这一哲学问题,而单单来看作者在文中列出的统计数据:


1.


图a的意思是平均每个电影评分人数的累计概率函数,也就是说我们可以看到20%的电影只获得了一个专家评分,而50%的电影几乎都获得了1000个以上的评分。作者在这里给出的一个观点是“However, the expert matrix is less sparse than the user matrix and more evenly distributed, both per user and per movie.”,这一观点毋容置疑,但是我觉得却反衬出了作者在算法设计时的疏漏,这一点我在下一篇文章中再讲。图b是指每个用户平均评分电影数目的累计概率函数,这个无需多说,其实就是我们会发现大部分的专家用户评分更多,例如几乎所有的专家用户都评分过400部以上的电影。


2.


图a的意思是每部电影平均分的累计概率函数,例如说50%普通用户对于一部电影的分数从0.5到1分之间不等,但是50%的专家用户对于一部电影的分数只有从0.7到1之间不等,由此说明专家用户对于电影的认知度更为统一。图b的意思是说每个用户对于所看过电影平均分的累计概率函数,例如说50%的普通用户看过的电影平均分在0.7分以上,但是50%的专家用户看过电影的平均分只有0.6分以上,从这个曲线可以说明的是普通用户其实会看很多好片,但是专家用户往往看片较广,但是也不能这么说是因为我们发现在30%这个分位点上普通用户的红色线是在上面的,也就是说普通用户其实会看一些“烂片”。另外,配合下一张图,我们还能看到其他问题。


3.


这张图是关于标准差,我不多做解释了,和前面类似,直接解释结论,图b说明专家用户的评分标准差更小,说明他们会规避“烂片”,而图a说明专家对于电影的评分认知是比较一致的。以上的两张图所反映出的观点其实在实际的专家推荐中也会遇到一些问题,我也会在下一篇文章中具体来讲。

看过作者的统计数据,我们来说算法,我不想重复算法本身,我只说一下为什么我喜欢专家推荐这种推荐算法。


先说算法的优点,第一,计算效率大大提高。从计算公式来说,我不再需要(M*N) * (N*M)这样庞大的矩阵运算(M指代User的个数,N指代Item的个数),而是计算出每一个User和Expert的相似度即可,也就是说从我们只需要计算(M1*N) * (N*M2)即可(M1指代User的总个数,M2代表Expert的个数),而M2远远小于M1。当然,文章中对计算相似度的方式做了优化:



其实也就是对于他们的交集个数做加权,其实这样的优化并不局限于应用在相似度上,但是为什么对于专家推荐更为重要,在下面我会来提及。


另外,对于推荐理由是个比较好的优化。我们大家都知道,我们有一个有效的推荐理由,可以大大提升推荐的点击率和满意度。其实这涉及到的是一个心理学的问题,我一般愿意将推荐理由称之为【品牌信仰】,即我们都愿意相信更值得我们相信的人。简单例子来说,当某网站为你推荐了一部电影,两个推荐理由分别是【飞林沙为你推荐】 和 【杨幂为你推荐】,我相信,后者会更让你信服。

结语:

本篇文章主要解读了在论文《The Wisdom Of The Few》中的算法,那么在下一篇文章中,我会重点来说,我认为文中算法设计的缺陷以及专家推荐在实际工程经验中的一些改进。


 
计算姬 更多文章 没有干货,只有吃货 [上] 此文征名 如何用一周时间学习Rails(小白文) 从虚拟化到SDDC 大数据的核心是”大“么
猜您喜欢 C++11新特性 Part5 【数据挖掘】数据挖掘R语言实践目录 趣味数据挖掘系列9:灯谜、外星殖民、愚公移山和进化计算 来,你们最关心的话题问与答(2) 两小时学会Git玩转Github