每周学点大数据 | No.58协同过滤模型(上)

NO.58

协同过滤模型(上)

Mr. 王:为了能够有效地利用其他用户的评价来进行更有效的推荐,人们提出了协同过滤的推荐模型。

小可:那什么是协同过滤模型呢?它又有哪些优势呢?

Mr. 王:先说说协同过滤的思想。既然认为他人对一个项目的评价是有一定价值的,我们就要尝试去利用他人对一个项目的评分来考察该项目的好坏。但是这里存在一个问题,就是他人认为不好的项目不一定是我们认为不好的,或者说他人的评价标准不一定符合我们的评价标准。我们要去考虑,如何能够让那些和某个用户评价标准相似的人来评价该用户没有评价过的东西。这样,给出的评价就会更加符合该用户的喜好,从而推荐质量就会提高。

小可:确实是这样,喜好和我不一样的人评价好的

东西不一定是我喜欢的。可是网络上的

人有很多,我如何去发现那些喜好和我一样的人呢?

Mr. 王:我们将这种思路形式化,协同过滤就是当我们研究用户x 时,去找到与x 有相似

评分的用户集合N,根据N 中用户的评分估计x 的评分。

小可:原来是比较两个人之间的评分啊。嗯,如果我们两个人看过相同的几部电影,而且

对这几部电影的评价相似或者一致的话,我们的确有可能有相似的喜好。

Mr. 王:如果你们的喜好相似,对新项目的评价很可能也是相似的。这是协同过滤依照的一个基本假设。那么现在的问题就归结为,我们如何去发现相似的用户呢?当用户数目不多,而且评价过的项目并没有那么多时,可能会出现几个人对这几个不多的项目做出完全相同的评分;但是当项目足够多时,很难有完全相同的评价,我们就要尝试使用一些标准来判断哪些用户过去做出的评价是足够相似的。我们以评分为例,令rx 为用户x 的评分矢量,比如以星级评价就可以表示成:

其中的下画线就表示没有做出评价。在实际的系统中,做出这样评价的可能性是非常高的。

小可:因为非常容易出现两个人都没有看过的电影。

Mr. 王:我们可以尝试使用数学中的各种相似度函数,比如Jaccard 相似度、余弦相似度或者皮尔森相关系数等。比如余弦相似度,我们就可以将评分矢量进行标准化,转化成数字:

然后使用余弦相似度的数学公式即可:

余弦相似度是一种非常朴素的处理方法,处理起来也非常方便,但它也有其缺陷。不知你注意到没有,在原特征向量中没有标注的那些评分,在开始余弦相似度判定之前的标准化是如何处理的。

小可仔细思考着,观察着公式的处理,说:它们被直接标注成了0,在公式中是无法区分这些用户给了项目低分还是没有对项目评分的。通过使用这样的方法,会直接认为他们都不喜欢这个项目。

Mr. 王:这就涉及一个“缺失= 否定?”的问题。

小可:缺失对一个项目的评价显然不是否定该项目,只是还没有来得及评价罢了。而直接将向量交给公式去计算的话,它们却无法有效地分辨这个问题。

Mr. 王:有时,缺失的数据还真的会给相似度的评价带来比较大的干扰。

Mr. 王:这是一个效用矩阵的例子,左侧的ABCD 代表用户,上面的一排代表项目名称,中间的数据域是用户对项目的评分,我们给出的取值范围是1 ~ 5,也就是网络上常用的1 ~ 5星的评价。

小可:这个矩阵里还真是有大量的缺失值。

Mr. 王:这些缺失值的存在就严重地干扰了我们对相似度的评价。从直观上看,我们会觉得A 和B 更相似一些,他们虽然只共同看过一部电影HP1,但是评分非常接近(4 和5)。而A 和C 共同看过的电影有TW 和SW1,不难看出,这两个用户对这两部电影的评价是完全相反的,一个接近最高分,另一个接近最低分,这说明他们对电影的喜好评价是不一样的。但如果通过前面提出的判据进行数值计算上的比较,就会发现一些问题。

Mr. 王在计算器上按了几下,说:如果用Jaccard 相似度进行衡量的话,A 和B 的相似度仅有1/5,而A 和C 的相似度却有2/4。这说明如果推荐系统用Jaccard 相似度进行判定的话,反而会认为A 和C 相似。如果用Cosine 相似度进行判定的话,sim(A,B) 和sim(A,C) 分别为0.386和0.322,虽然判定为A 和B 更为相似一些,但是两者的计算结果非常的相似,这意味着如果没有AB 这组作为对照的话,从数值上看我们会认为AC 这组是非常相似的。从这种结果来看,由于这些缺失值的存在,我们的判据都出现了不同程度的失准。

小可:麻烦应该就出在这些缺失值上吧,我们的方法将它们看作了0 分。这的确不够公平。

Mr. 王:为了解决这种问题,人们提出了中心化方法。来看看下面这个表格:

我们让表格中的每一个评分都减去其所在行的均值,进行了这样的处理之后,不难发现,所有的值都变成了关于自己评价的均值的一个增量或者减量。接下来,再次计算sim (A,B) 结果就是0.092,sim(A,C) 结果就是-0.559。这一次,两者的差距就变得大多了。

小可:嗯,这样做忽略了缺失值,在处理过的矩阵中,我们再将其视为一个最低分,而将其中心化成一个均值。因为均值在这个矩阵中就是0。

Mr. 王:如果你的概率统计学得不错的话,还会发现,这种以0 为中心的数据求解的余弦相似度就是它们的相关系数。

小可在纸上写下了几个公式,计算了一会儿,说:的确是这样啊。

Mr. 王:有了前面这些准备工作,于是我们就可以根据这些相似的用户,去对一些没有进行评分的项目进行评分,并且将预测评分较高的那些项目推荐给用户了。设rx 为用户x 的评分矢量,N 为对其他的评分与用户x 最相似的k 个用户的集合。那么用户x 对其没有进行过评分的项目i 的评分预测为:

小可:用与我较相似的人对这个项目的评分的平均数预测我的评分,还算合理吧。

Mr. 王:还算合理?你有什么更好的想法吗?

小可仔细思考着,说:我觉得虽然N 中的人都是和我很相似的,但是其中依然有些人和我不那么相似。有时候由于k 取得很大,导致N 里面的人也比较多,最后找不到和我很相似的人,就会找一些不那么相似的人以求填充集合N。而他们的评分会干扰到对我的估计。所以我认为,应该加权,也就是说,与我更相似的人给出的评分,应该对预测我的评分影响更大一些。

Mr. 王满意地说:非常好,前人也考虑到了这个问题,于是就采用了相似度的加权方法,写成表达式就是这样:

在这个式子中,就做到了和你更相似的人的评分在对你的预测中会占更大的比重式中,sxy 就表示x 和y 两个用户的相似度。

Mr. 王:在实际应用中,我们不仅要考虑用户与用户的相似度,还要考虑项目和项目的相似度。对于每一个项目i,我们都去寻找其他相似的项目,根据相似项目的评分估计项目i 的评分。

小可:看起来和用户相似度的思想很相像啊,只不过这次我们对前面的用户相似度矩阵做了一个转置。我们是不是可以直接利用原来的相似性测度函数啊?

下期精彩预告

经过学习,我们了解了一下了解了协同过滤模型。在下一期中,我们将进一步研究一下协同过滤模型中涉及到的具体问题,更加详细的过滤模型。更多精彩内容,敬请关注灯塔大数据,每周五不见不散呦!

文章作者:王宏志

文章编辑:秦革

原文发布于微信公众号 - 灯塔大数据(DTbigdata)

原文发表时间:2017-10-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏CDA数据分析师

干货 | 机器学习没有你想的那么复杂

人脑是最神奇的。你知道我更感兴趣的是什么吗?是我们的学习能力。我们如何能够适应并学习全新的技能,然后应用到日常生活之中呢?

8540
来自专栏IT派

如何在机器学习竞赛中更胜一筹?

机器学习很复杂。你可能会遇到一个令你无从下手的数据集,特别是当你处于机器学习的初期。 在这篇文章中,你将学到一些基本的关于建立机器学习模型的技巧,大多数人都从中...

35570
来自专栏AI科技评论

如何玩转谷歌TensorFlow? | 牛人讲堂

AI并不是一门简单的学科,AI算法的开发和调试并没有一个统一的、集成了大量API方便调用的平台和语言,目前的人工智能开发平台仍然处于一种半蛮荒的状态。许多功能需...

35560
来自专栏新智元

谷歌大脑与Open AI合著论文:机器视觉的一个致命缺陷

【新智元导读】计算机视觉很厉害,但是,只要稍加修改,比如使用美图软件加一个滤镜,计算机视觉就错误频出。MIT报道把这一缺陷称为计算机视觉的“阿喀琉斯之踵”,认为...

36580
来自专栏深度学习那些事儿

一篇文章解决机器学习,深度学习入门疑惑

研究生有不少日子,和之前的几个学长以及几个学弟偶尔也聊聊天。大部分聊的话题无关乎这几年大火的机器学习深度学习神经网络,而这篇文章的目的,则是从学生的角度(不管是...

69670
来自专栏机器之心

懒人福利:不写代码调优深度模型,谷歌开源的「What-If」了解一下

构建有效的机器学习系统意味着要问许多问题。仅仅训练一个模型放在那儿是不够的。优秀的从业者就像侦探一样,总是试图更好地理解自己的模型:对数据点的改动对模型的预测能...

9830
来自专栏机器之心

学界 | 大脑信号和翻译?利用脑信号实现英语、葡语和普通话三语互解

29590
来自专栏量子位

破解AI大脑黑盒迈出新一步!谷歌现在更懂机器,还开源了研究工具

? “还认为神经网络是黑盒子?再想想吧 :)” 几个小时前,谷歌AI领域的高级研究科学家Greg Corrado在推特上发出这样一句话。随后,谷歌传奇人物Je...

38140
来自专栏工科狗和生物喵

【毕设进行时-工业大数据,数据挖掘】第一天收获

【个人看法】 支持向量机的核心与决策树类似。但是还是有不同之处,现在多学习下支持向量机,后面用自己的算法也行。或者给出多个版本的话,可以作为几个方案去解释!

14220
来自专栏技术翻译

揭开人工智能、机器学习和深度学习的神秘面纱

深入学习,机器学习,人工智能——所有代表分析的未来的流行词。在这篇文章中,我们将通过一些现实世界的例子来解释什么是机器学习和深度学习。在以后的文章中,我们将探讨...

10000

扫码关注云+社区

领取腾讯云代金券