科普一下基于内容的推荐算法
周涛  |  2011-06-26  |  科学网  |  324次阅读

[本文部分内容参考了建国和我的《自然科学进展》综述]

最初的基于内容的推荐是协同过滤技术的延续与发展,它不需要依据用户对项目的评价意见,而是依据用户已经选择的产品内容信息计算用户之间的相似性,进而进行相应的推荐。随着机器学习等技术的完善,当前的基于内容的推荐系统可以分别对用户和产品建立配置文件(profile),通过分析已经购买或浏览过的商品内容,建立或更新用户的配置文件。系统可以比较用户与产品配置文件之间的相似度,并直接向用户推荐与其配置文件最相似的产品——这种直接比较用户和产品相似性并进行推荐的方法,就无法纳入协同过滤的框架了。例如,在电影推荐中,基于内容的系统首先分析用户已经看过的打分比较高的电影的共性(演员、导演、语言、风格等),再推荐与这些用户感兴趣的电影内容相似度高的其它电影。基于内容的推荐算法的根本在于内容的获取和定量分析,因为在文本信息获取与过滤方面的研究较为成熟,现有很多基于内容的推荐系统都是通过分析产品的文本信息进行推荐。

 

附图TF-IDF方法示意图

 

现在已经有一些技术可以从图片、音乐、视频中自动抽取内容信息,但是抽取后的内容多以文本、关键词(标签)、特征向量等方式表达。对这些信息的进一步处理方法,其实和文本处理是类似的。当然,文本处理发展到今天,方法已经是玲珑满目,有一部分进展我们会在下面一节中提到。本节我们介绍最为经典,也是目前应用最广泛的方法:TF-IDF方法。设有N个文本文件,关键词kini个文件中出现,设fij为关键词ki在文件dj中出现的次数,那么kidj中的词频TFij定义为:TFij=fij/maxzfzj,其中分母中的最大值是通过计算文本中所有关键词出现的最大频率得到。附图给出了3个文本文件和5个关键词,以第一个关键词“百分点”为例,该关键词在文本1中出现了1次,而文本1中出现次数最多的关键词是“流量”,一共出现了2次,因此TF11=1/2=0.5。一个关键词如果在许多文件中同时出现,则该关键词对于表示文件的特性贡献较小,因此要考察一个关键词i出现次数的逆,也就是IDFi=log(N/ni)。这个想法和我们在介绍关联规则时提到的Adamic-Adar指数思路相似。按照这个定义,对于第一个关键词“百分点”,IDF1=log(3/2)。关键词i在文本文件j中的权重于是可以表示为wij=TFij*IDFi,而文件j可以用一个向量dj=(w1j,w2j,…,wKj),其中K是整个系统中关键词的个数。一般而言,该向量中很多元素都为0。如果把用户购买或者浏览过的产品信息抽象成一个配置文件,也用这样的向量表示出来,则可以通过直接计算没有购买过的产品相应的文件的向量和用户的配置文件的向量的相似性[1],把相似性最大的产品推荐给该用户。在个性化技术研究历史中非常有名的Fab系统,就是使用内容推荐的典型例子。

总结起来,基于内容推荐的优点有:(1)可以处理新用户和新产品问题[2]。由于新用户没有选择信息,新产品没有被选信息,因此协同过滤推荐系统无法处理这类问题。但是基于内容的推荐系统可以根据用户和产品的配置文件进行相应的推荐。(2)实际系统中用户对产品的打分信息非常少,协同过滤系统由于打分稀疏性的问题,受到很大的限制。基于内容的推荐系统可以不受打分稀疏性问题的约束。(3)通过列出推荐项目的内容特征,可以解释为什么推荐这些产品,使用户在使用系统的时候具有很好的用户体验。与此同时,我们也注意到,基于内容的推荐系统不可避免地受到信息获取技术的约束,例如自动提取多媒体数据(图形,视频流,声音流等)的内容特征具有技术上的困难,这方面的相关应用受到了很大限制。另外,关键词的设计往往需要领域专家的参与,否则通过自动算法获得的关键词很可能没有办法表现产品特征,反而引入过度噪音。


[1] 这里的相似性可以通过直接计算向量之间的内积或者夹角余弦得到。

[2] 该问题在推荐技术研究中被称作“冷启动”问题,是推荐系统的几个著名难题之一。




文章原载于作者的科学网文章,所述内容属作者个人观点,不代表本平台立场。
本文经过系统重新排版,阅读原内容可点击 阅读原文