每周学点大数据 | No.57基于内容的推荐方法

NO.57

基于内容的推荐方法

Mr. 王:最常见的一种方法就是基于内容的推荐。基于内容的推荐思想非常的清晰、简单,就是向用户推荐与他评分高(喜欢)项目相类似的项目。

小可:嗯,很多电影网站根据用户的喜好进行定制,使用的都是这种策略。还有就是很多音乐平台都有一个栏目叫作“猜你喜欢”,这个栏目就是根据用户收藏的那些“我喜欢”的歌曲或者下载的歌曲进行推测的吧。还有一些博客网站也会向用户推荐与其浏览记录比较相似的网站。

Mr. 王:将这种思想转化为一个过程图就是这样:

用户在使用某个平台的过程中表示比较喜欢某些商品,系统就会首先记录下该用户比较喜欢的那些商品信息,然后通过这些商品信息去建立一个用户信息库,这个信息库包含的是用户喜欢的那些商品所具有的一些特征。比如在上面这个例子中,用户表示比较喜欢红色的圆和红色的三角。系统记录下这些信息之后,就会进行分析处理,得出的结论是,用户喜欢红色的东西,喜欢三角形和圆形的东西,然后就会到系统的数据库中去检索符合这些特征的项目,并将其推荐给用户。在具体的实现上,它使用的是一种叫作项模型的方法。简而言之,就是对每一个项目建立一份 item profile,即项目简介或者项目概括。不过在具体的系统中,这种概括不能太随意,而是要包含我们可以进行分辨的那些标准化的特征。

小可:就像电影的片名、导演、分类、主要演员等,一首音乐的演唱者、作词作曲家、流派、风格,甚至适合的场景等。

Mr. 王:嗯,这些都是比较常见的特征。另外值得注意的是,在文本检索中,很多文本本身并不具有很明显的特征,我们经常需要在文章内自行提取关键词来进行标注。对于像科研论文这样的文章或许会好得多,因为文章中有关键词这一栏。但是对于那些非文本类的数据,就不那么容易了。比如对于图片的推荐,就会由于特征难以由计算机进行提取抽象而实现起来比较困难。想想看,有什么好办法吗?

小可:前面我们不是讲过众包算法吗?我认为可以把图片库在网上众包出去,然后留下一些问题,让用户进行回答,通过这些问答来获得我们关心的特征。

Mr. 王:很好,由人工对那些非文本数据进行标注是一种常用的策略,体现了众包算法的思想。

小可:如果没有人参与到对项目进行特征标注的工作中,那么一般基于内容的推荐要怎么实现呢?

Mr. 王:这里我用文档进行举例,谈谈如何对一个文档库中的文档进行推荐。其实在文档库中按照用户的喜好去推荐文档这项工作,和在一个文档库中按照用户的搜索请求去搜索文档是非常相似的,所以我们可以尝试使用在信息检索中常用的一些技术。

小可:的确,其实用户的喜好就相当于用户的搜索请求,和我使用像百度文库和谷歌学术这样的网站挺像的。

Mr. 王:现在我们用信息检索的思维和技术去尝试解决这个问题。其实这个工作就是对用户的喜好和文档的内容做一个匹配,如果用户的喜好出现在一篇文档里,我们就倾向于认为这篇文档和用户的喜好是相关的。所以人们提出了一种最基本的模型,叫作布尔模型。所谓布尔模型,就是将文档中出现的所有词汇组成一个大列表,然后到这个大列表中去找用户的喜好词汇,找到了就是true,没找到就是false。使用这种方法来衡量文档与用户喜好的关系。不过人们渐渐发现了这种模型的问题:在文档中出现过一个词汇,并不能代表这篇文档跟这个词汇的关系是比较大的。比如,这个词汇在这篇文档中可能只是简单地提到了一次,而另一个词汇却是文档中重点讨论的内容,它们与文档内容的关联程度显然是不同的。不过对布尔模型来说,这两个词汇都是“在文档中出现过”的。

小可:嗯,有些词汇在文档中虽然出现了,但是不重要;而有些词汇却是反复出现且很重要的,这些词汇就是所谓的关键词吧?

Mr. 王:很好,现在问题的关键就可以转化为如何确定文档中的关键词。在信息检索技术中有一种比较成熟的技术叫作“向量空间模型”,它使用一种关键词衡量指标“TF-IDF”。为了发现关键词,我们可以对文档中的所有词汇进行评分,评分比较高的词汇就是关键词。想一想,这个评分与什么有关?或者说,什么样的词汇更倾向于成为代表一篇文档内容的关键词呢?

小可:我觉得词汇出现得多,相对来讲就应该比较关键吧。

Mr. 王:这就是TF-IDF 的第一个组成部分:TF,也就是词频(Term Frequency)。在向量空间模型中,设i 为一个关键词,j 为一篇文档,我们首先关注的就是TF(i,j),也就是在j 文档中,i 的词频。它可以表示为:

其中,freq(i,j) 就是i 在j 中出现的频率,maxothers 就表示i 除了j 以外最大的freq(x,j)。

小可:可是一般来说,只要有freq(i,j) 这个量就可以衡量一个词汇在一篇文档中出现的频率是不是比较高了吗?为什么还需要考虑maxothers 呢?

Mr. 王:这是TF 这个量设计得比较巧妙的地方。文档库中的文档显然长度是不一样的,有时文档的长度相差还比较大,这就引发了一个问题:在较长的文档中,包含某个关键词的概率就更大,或者说更容易包含某些关键词。也就是说,长文档在包含关键词方面比短文档拥有比较明显的优势。而我们期待的是文档本身与这个关键词的关系比较大,而不是由于其长度的原因,所以需要一些策略来尝试消除文档长度带来的影响。这方面的方法也是有很多的,其中就包括在TF 值中使用的,考虑文档中除了词汇i 以外出现得最多的词汇的词频是多少,通过

两个绝对频率求出一个相对频率,这样可以非常有效地消除文档长度带来的影响,对文档长度进行有效的归一化。

小可:嗯,知道了TF,那么IDF 是什么呢?

Mr. 王:词频是一个比较容易想到的方面。但TF-IDF 的一大亮点是它考虑到了IDF 这个量。IDF 也叫反文档频率,它的出现基于这样一种思想,就是一个词汇i 如果出现在j 中,在其他文档中都没有出现,则说明i 与j 的联系是非常紧密的,或者说i 是j 的关键词。而若z 在j 中出现,也在其他文档中出现,即z 在所有文档中都出现得比较多的话,我们就不认为它是一个与j 相关的关键词,只能说明Z 是一个常见的词汇。

小可:就比如the、a、is、are 这样的?

Mr. 王:是的。所以我们引入IDF 来降低那些在所有文档中都会出现的关键词的评分。设i 为某词汇,N 为整个文档库中的文档数量,n(i) 为词汇i 在其中出现过的文档数量,则i 的IDF 定义为:

小可:嗯,出现过i 的文档越多,IDF(i) 就越小,就会降低它和j 之间的关系。

Mr. 王:综合TF 值和IDF 值,我们可以给出TF-IDF 模型:

这样每篇文档就可以表示成其所包含的词汇与其TF-IDF 值的一个向量。

小可:嗯,这种模型看起来比布尔模型对一个文档中包含的关键词的衡量更加准确一些,但是一篇文档往往是很长的,这个向量岂不是会很大吗?

Mr. 王:这是向量空间模型的局限性之一。人们为改善这种模型也做了很多的努力,比如引入停用词,像the、a 这样的词汇,在每篇文档中都出现得非常多,而且还完全无法表达一篇文档的实际意义,没有任何价值。我们就要将这样的词汇列为停用词,不参与TF-IDF 值的计算,也就不会出现在向量中了。另外,在英语这样的语言中,词根和时态变化是非常多的,如果单纯地将它们作为文本分析的话,就会将它们视作不同词汇,也就会导致有大量表示相同意义的词汇被当作了向量的不同维度,这是很浪费空间的。于是,人们提出了词干还原的方法,对词汇的各种语气时态进行归一化处理,比如write 和wrote 就会被视作一个词汇,这样就可以有

效地缩减向量的大小。这方面的技术也有很多,如果感兴趣的话,可以去查找一些信息检索方面的书籍。

Mr. 王:基于内容的推荐方法还是有很多优点的。它不需要其他用户的数据,也就是只与自己的喜好和项目的特征有关。由于不需要关注其他用户的评分,也就没有冷启动或者效用矩阵稀疏性问题,新项目或不流行项目推荐虽然没有其他用户对其进行有效的评分,但是却可以因为其所具有的特征与用户喜欢的项目特征进行匹配,从而被推荐系统提取出来。另外,对于品味一致的用户,我们可以做相似的推荐,不需要为每个用户都重新运行一次推荐算法,这样比较方便。而且基于内容的方法能够有效地为自己做出的推荐提供一个合理的解释,也就是对推荐项目给出对应的内容特征描述,而不是依赖于其他用户的评价。不过基于内容的推荐也不是十全十美的。前面我们也提到过,对于一些非文本数据,找到适当的特征是困难的。比如对于图片、电影和音乐来说,发现它们的特征还是具有一定难度的,而使用众包方法会带来额外的成本和时间开销。

小可:而且这些特征对原影片和音乐未必能做到完整而准确的概括,即使流派和作者都一样,不同的歌曲在某些难以用特征来描述的方面也可能相差很大。

Mr. 王:另外,基于内容的推荐还存在过度集中的问题。当我们让用户来使用这个系统时,只会询问几个简单的问题来了解用户的偏好,如果询问过于详细反而降低了用户使用系统的兴趣;但由于得到的喜好特征比较少,就会出现查询出来的内容非常集中,它们的相似度过高没有多样性,也就不会向用户推荐内容偏好模型之外的项目了。

小可:嗯,人们可能有多方面的兴趣,推荐出来的内容太过相似难免有一种重复的感觉。

Mr. 王:而且由于我们推荐的内容完全基于用户的喜好特征,不能利用其他用户的优质判断,这一点既给系统带来了优势,也自然造成了一些问题。

下期精彩预告

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

文章作者:王宏志

文章编辑:秦革

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

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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序人生 阅读快乐

Keras快速上手:基于Python的深度学习实战

《Keras快速上手:基于Python的深度学习实战》系统地讲解了深度学习的基本知识、建模过程和应用,并以深度学习在推荐系统、图像识别、自然语言处理、文字生成和...

932
来自专栏大数据挖掘DT机器学习

关联规则挖掘综述

本文介绍了关联规则挖掘的研究情况,提出了关联规则的分类方法,对一些典型算法进行了分析和评价,指出传统关联规则衡量标准的不足,归纳出关联规则的价值衡量方法,展望了...

4659
来自专栏AI科技大本营的专栏

知乎如何洞察你的真实喜好?首页信息流技术揭秘

信息爆炸时代,信息过载已经成为互联网核心问题之一,而通过AI、机器学习等技术过滤低质无用信息,推动有价值信息的生产和迭代,被视为一种有效解决方案。以知乎为例,这...

1530
来自专栏磐创AI技术团队的专栏

推荐 | 7个你最应该知道的机器学习相关github项目

来源 | Analytics Vidhya 编译 | 磐石 出品 | 磐创AI技术团队 磐创AI导读:本文介绍了github上最近比较火的7个机器学习项目,每...

3574
来自专栏CDA数据分析师

大家都收藏了的最新开源项目Top12!CV、NLP、机器学习一应俱全

【导读】作者整理了近期最新发布及更新的 12 个非常有学习和收藏意义的开源项目。这些项目中包括基于 TensorFlow 的强化学习框架;可以对数据进行结构化处...

812
来自专栏智能计算时代

分布式云端机器学习

原文作者:微软云信息服务实验室研究员Dhruv Mahajan, Sundararajan Sellamanickam, Keerthi Selvaraj 译...

2988
来自专栏量子位

DeepMind开源了强化学习库“松露”,团队自身也严重依赖它

今天,DeepMind开源了一个基于TensorFlow的强化学习库,名字叫TRFL。

1031
来自专栏AI科技大本营的专栏

AI 行业实践精选:通过机器学习刺激销量——如何利用NLP挖掘潜在客户

【AI100 导读】在这篇博客中,作者会向大家介绍如何以更有效的方式通过 Xeneta 进行营销,会训练一个机器学习算法,通过对于公司的描述来预测潜在客户的质量...

3828
来自专栏ATYUN订阅号

神经网络新方向:硅芯片将光学信号精准分布到微型类人脑网格

美国国家标准与技术研究院(NIST)的研究人员制作了一种硅芯片,可以精确地将光学信号分布在微型类人脑网格上,展示了神经网络的潜在新设计。

1032
来自专栏机器之心

前沿 | 如何解决深度学习中的多体问题

选自Medium 机器之心编译 参与:乾树 多个智能体如何协同工作才能高效完成任务?深度学习领域中的多体问题就像物理领域中的一样难解。很多研究机构正致力于研发先...

3667

扫码关注云+社区

领取腾讯云代金券