本节书摘来自华章出版社《推荐系统:技术、评估及高效算法》一书中的第3章,第3.3节,作者 [ 美]弗朗西斯科·里奇(Francesco Ricci)利奥·罗卡奇(Lior Rokach)布拉哈·夏皮拉(Bracha Shapira)保罗 B.坎特(Paul B.Kantor),更多章节内容可以访问云栖社区“华章计算机”公众号查看
3.3 基于内容的推荐系统的现状
顾名思义,基于内容的推荐是利用物品的内容数据来预测它和用户个人信息的相关性。基于内容的推荐系统的研究涉及计算机科学的许多方面,尤其是在信息检索[6]和人工智能领域。
在信息检索领域,推荐技术研究的想象力来自将用户搜索推荐结果看作一个信息检索的过程。在信息检索系统中,用户需要给出一次性查询信息(经常是一个关键词列表),而在信息过滤系统,用户的信息需求被表示成他的个人信息。由于用来描述物品的属性在数量和类型上的差异,待推荐物品也会有较大差异。每个物品当然可以用一组已知数值的少量相同的属性来表示,但是这种方法不是非常合适如Web网页、新闻、电子邮件或者文档等非结构化数据表示的对象。在这种属性值未明确定义的情况下,基于信息检索研究的文档模型技术更有用。
从人工智能的观点出发,推荐任务可以被映射成一个利用用户过去知识来学习的学习问题。最简单地,用户的个人信息形式为用户指定的关键词或准则,它反映了用户长期的兴趣。往往建议系统学习用户个人信息,而不是强迫用户自己提供。这就广泛应用了机器学习技术,其目标是基于过去已知并被用户显式或隐式地标记为是否感兴趣的信息,来学习分类新物品。给定这些已标记的物品信息,机器学习的方法能够生成一个预测模型,可以帮助判断目标用户对给定新物品是否感兴趣。
3.3.1节阐述了多个物品信息表示技术,从传统的文本表示,到整合了本体和百科全书式知识等更先进的技术。3.3.2节讨论了适合上面描述的表示方法的推荐算法。
3.3.1 物品表示
推荐给用户的物品可以表示成一系列特征,也称为属性(attribute或property)。例如,在一个电影推荐的应用中,描述一个电影的特征有演员、导演、类型、主题等。当每个物品由一系列相同的属性表示,并且知道这些属性所有可能的取值时,该物品就被表示成了结构化数据。在此情况下,许多机器学习的算法可以用来学习用户个人信息[69]。
在大多数基于内容过滤的系统,物品表示是从Web网页、电子邮件、新闻或产品描述中抽取的文本特征。不像结构化数据,它们没有明确定义的属性。由于自然语言的歧义,在学习用户个人信息时,文本特征带来大量混乱。问题是传统的基于关键词的个人信息不能获取用户兴趣的语义,因为他们主要是通过字符串匹配操作来进行的。如果一个字符串或者某些语法变量同时在个人信息和文档中被发现,那么匹配就成功,文档就被认为是相关的。字符串匹配有如下问题:
一词多义,一个词有多个释义。
同义,多个词有相同的意思。
导致的结果就是,由于同义词的存在,当个人信息不包含文档中的准确关键词时,相关的信息就会遗漏;同时由于一词多义,错误的文档也被认为是相关的。
语义分析及其与个性化模型的结合是文献中提到的最具有创新性和最有趣的解决问题的方法之一。主要的思路是采用知识库,如词典或本体,来注释物品和表示个人信息,由此获得一个用户信息所需的语义翻译。在3.3.1.1节,先回顾一个依赖于该模型的“传统”系统,之后将介绍基于本体论和世界知识的语义分析技术。
3.3.1.1 基于关键字向量空间模型
大多数基于内容的推荐系统使用相对简单的检索模型,例如,关键字匹配或者基于TF-IDF权重的向量空间模型(Vector Space Model,VSM)。向量空间模型是一个文本文档的空间表示方法。在该模型中,每个文档被表示成一个n维空间中的向量,每一维对应给定文档集合词汇表中的一个词。形式上,每篇文档被表示成词权重的向量,其中权重表示这篇文档和该词的关联度。让D={d1,d2,…,dN}表示一个文档集合或语料库,T={t1,t2,…,tN}表示词典,即语料库中词的集合。词典T从某些标准的自然语言处理操作中获取,如分词、停用词移除、变形[6]。每篇文档dj表示为n维向量空间上的一个向量,从而dj={w1j,w2j,…,wnj},其中wkj是文档dj中词tk的权重。
在向量空间模型中,文档表示有两个问题:为单词赋予权重和度量特征向量的相似度。常用的加权模式有基于文本实验观察结果的TF-IDF(词频—逆文档频率)[79]:
稀有词相关性不小于频繁词相关性(逆文档频率假设);
一篇文档中多处出现的词的相关性不小于只出现一次词的相关性;
长文档不一定好于短文档(归一化假设)。
换句话说,在一篇文档中频繁出现(TF=词频)但很少出现在语料库中其他的文档里(IDF=逆文档频率)的单词,与该文档主题的相关性可能很大。另外,结果权重向量的归一化防止了长文档有更好的检索机会的问题。TF-IDF函数很好地解释了这些假设:
N表示语料库中文档的个数,nk表示含有词单词tk出现至少一次的文档集合的数量。
最大值是出现在文档dj中所有单词tz的词频fz,j上计算的。为了使权重落在[0,1]区间且文档能够用等长向量表示,利用式(3.1)获取权重通常用余弦归一化方式来归一化:
其实现了归一化的假设。
如前所述,一个相似度的度量需要先确定两个文档的接近程度。许多相似度的度量都衍生于对两个向量的接近程度的度量;在这些度量中,余弦相似度被广泛应用:
在依赖于向量空间模型的基于内容的推荐系统中,用户个人信息和物品都被表示成带权重的词向量。预测用户对一个特定物品的兴趣可以通过计算余弦相似度得到。
3.3.1.2 基于关键词系统概述
许多基于关键词的推荐系统发展时间相对较短,但在很多领域都可以发现它们在应用程序中的应用,如新闻、音乐、电子商务、电影等。每个领域面对不同的问题,也就需要不同的解决方案。
在Web推荐系统的领域中,关于内容的著名系统有Letizia[49]、Personal WebWatcher[62,63]、Syskill&Webert[70,68]、ifWeb[4]、Amalthea[66]和WebMate[23]。Letizia是一个网页浏览器的扩展,它跟踪用户浏览行为,并依据与用户兴趣相关的关键词进行个性化建模。它依赖隐式反馈来推断用户的喜好。例如,收藏一个网页就表示为用户对这个网页感兴趣的有力证据。同样的方式,个人WebWatcher从用户访问的网页和离开已访问网页的链接来学习个体的兴趣。它将访问的网页作为用户兴趣的正例,未访问的网页作为负例。Amalthea使用指定的过滤工具来协助用户发现感兴趣的信息。用户可以通过提供与用户兴趣相关的网页(表示为权重向量)来确定过滤器。
Syskill & Webert采用了相同的方法,它用128个最有代表性的词(文档中有代表性的词可以用许多不同的方法确定)来表示文档。ifWeb采用了更高级的表示技术,它将信息表示成一定形式的带权重的语义网。它支持显式反馈,并且不仅考虑兴趣,而且还考虑了显式的非兴趣。另一个有趣的方面是,它加入了一个时间衰减的机制,如给表示用户的兴趣加上时间衰减。WebMate采用了另一个不同的方法来表示用户兴趣,它在不同领域通过学习由正向训练样例表示的关键词向量构成的用户信息来跟踪用户兴趣。一个n个关键词的向量可以正确地表示最多n个独立的用户兴趣。
在新闻过滤领域,著名的推荐系统有NewT[87]、PSUN[90]、INFOrmer[91]、NewsDude[12]、Daily Learner[13]和YourNews[2]。NewT(News Tailor)允许用户提供关于文章、部分章节、作者或来源的显式和隐式反馈。许多过滤工具用不同类型的信息进行训练,如政治类新闻过滤器、体育类新闻过滤器等。YourNews是一个最近新出现的个性化新闻访问系统,使用同样的方法为8个不同主题(国内、国际、经济等)分别维护有一个兴趣个人信息。用户对这些主题的兴趣信息用一个加权的原型词向量表示,向量值从用户浏览的新闻的历史记录中抽取。用户过去浏览了N篇文章,抽取前100个加权了的词来生成用户最终的原型向量。该系统维护了一个仅考虑最近浏览过的20篇新闻信息的短期特征,而长期特征考虑的是过去所有浏览过的新闻。系统可以利用这些个人信息来显示最近的和推荐的两类新闻。 这里的“recent and recommended”应该表示的是两种推荐的形式。——译者注
在新闻过滤系统中,学习短期和长期特征是两种非常典型的方式。NewsDude在用户提供的感兴趣新闻的初始训练集基础上,用基于TF-IDF(余弦相似度)的方法学习用户短期模型,用基于朴素贝叶斯分类器的模型学习用户的长期模型。新闻来源于雅虎新闻。同样的Daily Learner无线信息访问的学习工具,也采用一种方法来学习两种不同的用户模型。前者基于最近邻的文本分类器算法来维护用户的短期兴趣特征,后者利用长时间收集到的数据,基于朴素贝叶斯分类器,来学习用户的长期兴趣特征。
在对文章和个人信息使用更复杂表示的系统中,需要注意PSUN和INFOrmer。PSUN采用了一个可选择的文本表示方法。初始特征由系统中用户选择感兴趣的某些文章来提供。文本中重复出现的单词被记录在称为n-gams的网络中,这个网络中的单词可以相互吸引或者排斥,相互吸引程度主要取决于网络中两个词共同出现的次数。每个用户都有多个特征,它们是需要显式反馈,经过一个遗传算法来竞争产生的。INFOrmer使用一个语义网络来同时表示用户特征和文本。一个扩散激活技术[25]用来比较文本和用户特征,并且为使系统行为适应变化的用户兴趣,采用一个相关的反馈机制。一个纯扩散激活模型是由被标记或加权的链接起来的节点组成的数据网络。给一组源节点标记激活权重,然后不断迭代,将源节点激活权重传播给与它相连的其他节点,直到终止条件满足使得网络中的搜索过程结束。
各种不同的基于内容的推荐系统在其他的应用领域也有应用。LIBRA[65]做的书籍推荐,利用从Amazon在线电子商店获取的关于产品描述的网页,实现了一个朴素贝叶斯文本分类方法。Re:Agent[16]:智能的电子邮件工具,它利用自动的特征抽取算法,可以学习如过滤、下载到掌上电脑、将邮件转为语音邮件等行为。Re:Agent用户只需要将样例信息放置在与期望行为对应的文件夹中。Re:Agent从这些文件夹中学习概念和决策策略。Citeseer[15]通过使用文字信息和分析论文中的共同引文,来协助用户搜索学术文献。INTIMATE[53]使用文本分类技术从Internet Movie Database http://www.imdb.com获得的电影剧情简介去学习,进而推荐电影。为了获得推荐电影,用户被要求至少给一定数量的电影进行评价,评价分为6个档次:很差、差、低于平均、高于平均、好、优秀。同样,Movies2GO[67]从用户评分过的电影剧情简介中学习用户偏好。该系统的创新之处是加入了投票模式[93],当多人在偏好上有冲突的时候,给一个可接受的折中,使他们的冲突偏好能更好地适应单个用户。
在音乐领域,一般使用的推荐技术是协同过滤(见Last.fm http://www.last.fm和MyStrands http://www.mystrands.com系统)。最著名的系统Pandora http://www.pandora.com使用(人工的)基于内容的描述来推荐音乐。该系统的主要问题是可扩展性,因为音乐注释的过程全是靠人工完成的。相反,FOAFing the music[21,22]可以推荐音乐、发现音乐和探索音乐的内容,它基于来自Friend of a Friend(FOAF http://www.foaf-project.org)的用户信息、从与音乐相关的RSS种子中提取的上下文信息,以及自动地从音频文件中提取的基于内容的描述。
为了完成采用简单的关键字向量空间表示的基于内容的推荐系统的研究,我们也会提到一些融合了协同和基于内容的方法的混合推荐系统,如Fab[7]、WebWacther[45]、ProfBuilder[99]、PTV[89]、Content-boosted Collaborative Filtering[56]、CinemaScreen[78]和在文献[94]中提到的一个。
对过去15年里主流系统的发展进行分析学习,最重要的发现是,同时对物品和用户信息采用基于关键词的表示,并通过足够多的信息证明用户兴趣可用,可以准确预测用户行为。大多数基于内容的系统被认为是建立在包括用户兴趣正例和负例文本训练集上的文本分类器。因此推荐的准确率依赖于大量的训练样本,而训练样本的好坏又依赖于对用户兴趣的可靠的句法分析的结果。这个方法的问题就是“缺乏智能”。当要求更高级的特性时,基于关键词的方法就显得不足。如果用户有个如“法国印象派”的关键词,基于关键词的方法只能找出包含有词“法国”和“印象派”的文档。那么关于Claude Monet或Renoir展览的文档将不会出现在推荐集合中,即使他们可能对用户来说更相关一些。更高级的表示策略需要为基于内容的推荐系统添加“语义智能”,它可以超越由关键词提供的用户兴趣的语法证据。
下面将会探究在索引阶段通过本体和广博知识源注入知识的可能方式。
3.3.1.3 运用本体的语义分析
语义分析需要学习大量准确的信息,这些信息包括参考在外部知识基础上定义的概念。这个方法的主要的目是提供一个有文化和语言背景知识的推荐系统,且系统具有翻译自然语言文档和分析内容的能力。
本节将会介绍一些现在主流策略里所采用的语义推荐过程。这些策略大致主
要考虑以下几个标准:
包含知识源的类型(如词典、本体等);
物品的注释或表示所采用的技术;
用户个人信息中内容的类型;
物品用户个人信息匹配策略。
SiteIF[52]是一个多语言新闻网站的个性化的工具。为了最好地表示知识,这是第一个采用基于感知的文档表示来对用户兴趣建模的系统。MultiWordNet是一个在表示过程包括外部知识源的系统和一个集合了英语和意大利语的多语言词汇数据库。每篇新闻会使用词领域消歧(Word Domain Disambiguation)[51]来自动关联到一个MultiWordNet的同义词集合。用户信息是来自于用户读过的文档中发现的语义网络中某节点表示的同义词集合。在匹配阶段,系统将文档的同义词表示集合和当前用户模型作为输入,将使用语义网络数值技术(Semantic Network Value Technique)[92]产生的相关文档作为预测输出。
ITR(Item Recommender)是一个可以在多个领域应用的物品推荐系统(如电影、音乐、书籍),它以文本的形式提供了对物品的描述(如情节摘要、概述、短摘要)[27,83]。和SiteIF相似,ITR在学习用户信息的过程中集合了多语言知识,但是与词领域消歧不同,词感知消歧(Word Sense Disambiguation)采取的是基于感知的文档表示。多语言知识不包含来自于WordNet词汇的本体。物品根据一个基于同义词集合的向量空间模型进行表示,称作同义词袋(Bags-of-Synsets,BOS),它是经典的词袋模型(Bags-of-Words,BOW)的一个扩展[8,84]。在BOS模型中,同义词集合向量不是像一个词向量对应一篇文档一样。用户信息采用一个朴素贝叶斯二进制文本分类器可以将文本分类成感兴趣和不感兴趣。在训练阶段,根据条件概率估计值,可以得到更能象征用户偏好的那些同义词集合。文本—用户信息匹配操作在于通过使用用户信息的同义词集合的概率,计算物品属于“感兴趣”类的概率。
SEWeP(Semantic Enhancement for Web Personalization,用于Web个性化的语义增强)[31]是一个Web个性化系统,它利用日志和Web站点内容的语义来实现个性化。为得到统一一致的词汇表,采用了特定领域的类别分类对网页进行语义标注。类别是人工建立的,而标注的过程是自动完成的。SEWeP,像SiteIF和ITR一样,利用WordNet中的词典知识,来“翻译”文本的内容并支持标注/表示的过程。网页最初被表示成从其内容中抽取的关键词,然后这些关键词被映射到类别中的概念。给定一个关键词,基于WordNet中词的相似度度量,用来找出与这个关键词“最近”的类别的词。SEWeP不会给用户创建个性化信息,而是发现一种导航模式。SEWeP的推荐引擎利用与一个模式有“语义关联”的类别来扩展个性化网页推荐集合,这个类别可能就是用户感兴趣的主题分类。
Quickstep[58]是一个在线学术研究论文的推荐系统。该系统是根据网站DMOZ上的开源目录工程 http://www.dmoz.org/(27个类别)的计算机科学分类来抽取学术研究论文主题的本体。运用k-NN分类器结合论文的语义标注与研究论文主题本体。用户的兴趣信息从之前浏览的研究论文所属分类的关联计算得到。因此,用户兴趣特征就是一组主题及主题的兴趣值。物品—用户特征匹配通过计算用户个人信息和被分为该类的论文的前三个感兴趣的主题来实现。除了网页推荐界面,Foxtrot[58]通过实现论文查询接口、个人信息可视化接口和邮件提醒来扩展Quickstep系统。特征被表示成一组用户可以理解的本体,使用户特征可视化成为可能。
Informed Recommender[1]使用消费者产品评价给出推荐建议。系统通过作为知识表示和共享的翻译本体,把用户观点转换成一个结构化形式。本体提供了一个可控的词表及要描述的词与词的关系:消费者的专业水平及对被评论的产品的使用经验。为了这个目的,本体主要包含了两部分:观点的质量和产品的质量,由此形成了两个形式化概念。一个文本挖掘过程自动地将评价中的句子映射到本体信息结构。该系统不会为用户建立特征,而是基于用户请求计算推荐集,如用户对产品特定特征的质量有所要求。Informed Recommender可以响应这个查询,并且可以根据用户关心的特征属性推荐最好的产品。值得注意的两个方面:一个是本体知识可以根据产品的标注对不同观点建模;另一个是用户的评价描述是以*文本的形式。
News@hand[18]是一个采用基于本体表示物品特征和用户偏好来推荐新闻的系统。标注过程将新闻和所属领域的本体联系起来。他们采用IPTC http://nets.ii.uam.es/neptuno/iptc/囊括了多个领域的共17个本体库,如教育、文化、政治、宗教、科学、体育等。但并不清楚它是用人工还是用像文本分类一样的自动化技术进行标注的。物品的表示是定义在本体概念空间的TF-IDF得分的向量。用户特征也用相同的空间进行表示,但分值度量的是用户对特定概念的兴趣强度。物品—用户特征匹配通过计算向量的余弦相似度得到。
之前提到过的推荐系统Interactive Digital Television[14],借鉴语义网的合理技术来比较用户偏好和物品(电视节目),比传统的语义指标更有弹性。在推荐过程中可用的电视节目使用能够正确描述其主要属性的元数据进行标注。电视领域的知识和用户特征都采用OWL本体来表示。本体—用户特征给出了用户偏好的表示,可以找出偏好的原因,也可以发现跟用户兴趣有关的额外知识。推荐阶段采用存储在用户特征中的知识来发现隐藏在用户偏好和产品之间的语义关联。知识推理的过程和扩散激活技术被应用在给用户建议产品。这项工作值得注意的方面是,基于扁平列表的方式不是良好结构化的数据,本体—用户特征改进了这种方式,帮助发现新的知识。
JUMP系统[10,9]可以智能地将基于情景的和个性化的信息发送给日常工作环境中做着非常规工作的知识工程师。JUMP用户的信息需求被表示成复杂的查询,查询可以是一个任务支撑需求,而不是一个用户信息。比如,一个复杂的查询例子“我需要准备一个VIKEF工程的技术报告”。同时对文档和用户需求信息进行语义分析,是基于其中概念是通过WordNet同义词集合进行手工标注的领域本体。而从文档到领域或词典概念的映射是通过词感知消歧和命名实体识别自动完成的,其中在领域本体中使用了词典标注。而用户需求的概念和文档的概念匹配是根据他们在领域本体中的联系。在前面的查询例子中,概念“技术报告”和“工程”的实体及实体之间的关系都是从本体中提取的。
WordNet采用了语义消歧技术,经常用在语义翻译上,而由于其广泛使用,语言知识的领先地位越来越突出。另一方面,上述研究表明,仅有WordNet所带来的巨大潜力还不足以理解用户兴趣以及应用领域中兴趣的上下文。特定领域的知识是必需的。本体是应用领域形成的基础,用于领域中的物品的语义描述、概念(如类别及其实例)的表示、关系(如层次关系、属性)的定义中。总之,相比于传统的基于内容的方法,不管是囊括了语言还是特定领域知识,抑或是基于内容的过滤方法的研究,都提供了更好、更准确的推荐结果。这也鼓励了研究人员利用像主题词表或本体一样的外部知识形式化用户兴趣并将其置于上下文中,来设计研究用户兴趣的新颖的过滤方式。
3.3.1.4 运用百科全书式的知识源进行语义分析
相比于只有很多词的集合,常识和特定领域知识产生更有信息量的特征,对于改进自然语言处理技术可能会有帮助。在学习用户特征的过程中,相对于经典的使用内因知识的技术,注入外因知识(外部提供的)得到的效果会更好。近些年来,世界上很多的知识信息源已经变得容易获取。举例来说,开放目录工程(Open Directory Project,ODP)、Yahoo!Web Directory、Wikipedia都是通用的知识库。
接下来简单地回顾下利用通用知识产生新的高级特征的新方法,即使其中有些方法在学习用户特征的情景中并没有被使用。
显式语义分析(Explicit Semantic Analysis,ESA)[34,35]技术利用Wikipedia中的概念将自然语言文本表示成细粒度的语义概念。Wikipedia的文章定义了概念,如Italy、计算机科学、推荐系统。这类方法是受增加对大量客观世界知识进行文本表示的需求而产生的。将Wikipedia作为知识源有几个好处,如社区成员的不断完善、有多种语言可使用,及其高度准确性[37]。经验显示,ESA对计算词语文本的相关性和在不同数据集上的文本分类都有本质的改进。这也表明ESA确实提高了传统基于BOW的检索模型[30]。
另一项有意思的方法是Wikify!系统提出的给文本添加语义[59,26],也就是可以识别文本中的重要概念(关键词抽取),并将这些概念和相应的Wikipedia网页相连(词义消歧)。Wikify!系统给出的这些标注可以自动地增加与文本内容语义相关的信息。为了比较系统给出的标注和Wikipedia贡献者提供的人工标注的质量,研究人员设计了一个类似图灵测试的试验,要求参与者区分出人工和自动标注。结果显示,计算机和人工给出的标注很难区分,即说明Wikify!系统的标注质量很高。
据我们所知,还没有推荐系统(基于内容)可以利用前面提到的高级语义文本表示的方法学习到用户现实世界的真实的特征。在几个任务中利用如语义关联、文本分类、检索等先进的文本表示方法获取到的正向结果显示在推荐任务中也能得到类似的正向结果。这看起来是一个有前景但还未被探讨的研究领域。
在文献[47]中,为了提高Netfilx Prize 比赛的推荐准确度,Wikipedia常被用来估计电影之间的相似度。更具体地,Wikipedia文本的内容和超链接被用来衡量电影之间的相似度。基于包含每两部电影之间相似度的相似度矩阵,用户预测的估计值使用K近邻和伪SVD算法进行计算。这些方法都是将Wikipedia的相似度估计与训练集的评价合并,在测试集上进行预测估计。遗憾的是,这些技术对于整体的精确度的提高没有非常重要的改进。
文献[88]介绍了一个很复杂但还没有完成的过滤RSS种子和电子邮件的方法。更具体地,作者介绍了利用Wikipedia从用户文档集合中自动提取产生用户特征的方法。这个方法主要由4个步骤构成,即Wikipedia索引、特征产生、问题导向索引数据库建立和信息过滤。特征产生阶段利用隐式表示用户感兴趣主题的历史文档集合。从这些文档中抽取特征词,并使用ESA算法得到它们和Wikipedia相似的文章。这时系统从文章中抽取出Wikipedia的分类列表,聚合这些类别,从而得到对应于用户个人信息中一个主题的子类别。用户也可以查看自己的用户特征,并且可以增加和修改这些类别,进而改善主题特征。对于用户特征的每个主题,建立一个问题导向的Wikipedia语料库并索引,来表示过滤信息库。
文献[85]介绍了一个在内容分析阶段利用Wikipedia的不同方法。更确切地说,该方法是一个向基于内容推荐系统灌输知识的过程,希望通过增加文化背景知识,相比于经典的基于词的方法,提高内容分析的准确性。百科全书式的知识有利于识别特定的依赖领域的概念或命名实体,尤其是在那些领域本体应用不可行的上下文中。Wikipedia的实体在词空间模型的基础上一直使用语义向量进行建模[77],该模型基于词空间、向量空间的点表示一组语义概念,如词和文档。词之间的关系通过使用扩散激活算法产生新特征,这些新特征可以用在推荐过程中的多个方面。
3.3.2 学习用户特征的方法
通常用于推导基于内容的用户个人信息的机器学习技术也会非常适合用于文本分类[82]。在用来文本分类的机器学习方法中,推导过程通过从一个训练文档集合(文档已经被标记为他们所属的分类)中学习类别的特征,自动建立一个文本分类器。
学习用户特征的问题可以转换为一个二元文本分类任务:每一个文档都根据用户的偏好被分类成感兴趣或不感兴趣。因此,类别集合为C={c+,c-},其中,c+是正类(用户喜欢的),C-是负类(用户不喜欢的)。
下面将回顾在基于内容的推荐系统中使用最多的学习算法。它们能够学习一个能对每个用户兴趣建模的函数。这些方法通常要求用户赋给文档一个相关的分数来标记文档,自动推断出用户的个人信息,并用于过滤过程根据用户的偏好对文档排序。
3.3.2.1 概率方法和朴素贝叶斯
朴素贝叶斯是一个归纳式学习的概率方法,属于一般的贝叶斯分类器。这类方法基于之前的观察数据产生一个概率模型。该模型估计文档d属于类别c的后验概率P(cd)。这个估计是基于先验概率P(c),即观测到一个文档属于类别c的概率,P(dc)即在给定类别c的情况下观测到文档d的概率,和P(d)即观测到文档d的概率。使用这些概率,应用贝叶斯定理来计算P(cd):
为了对文档d分类,选择概率最高的作为类别:
P(d)与所有类别cj相等时,一般将其去掉。当我们不知道P(dc)和P(c)的值时,我们利用观测到的训练数据对它们进行估计。然而,这样估计P(dc)是有问题的,因为相同的文档不太可能再次出现:观测数据普遍不足以产生好的概率。朴素贝叶斯分类器通过独立假设简化了该模型,从而克服了这个问题,该独立假设为:在观测文档d中,在给定类别下,所有的词或记号之间是条件独立的。文档中,这些词的个体概率是分别估计的,而不是将整个文档作为一个整体。条件独立的假设明显地违反了现实世界的数据,尽管如此,朴素贝叶斯分类器在实际文本分类经验上确实做得不错[48,11]。
有两个被普遍使用的朴素贝叶斯分类模型:多元伯努利事件模型和多项式事件模型[54]。两个模型都将文档看作一个在语料库词汇表V上的向量值,向量中的每个实体表示它在这个文档中是否出现,因此模型都损失了关于词顺序的信息。多元伯努利事件模型将每个词编码为一个二元属性,即一个词出现或没出现,而多项式时间模型计算一个词在一个文档中出现的次数。经验结果显示,多项式朴素贝叶斯公式的表现胜过多元伯努利模型。尤其在巨大的词汇表下,这个效果比较明显[54]。多项式事件模型计算P(cjdj)方式如下:
N(di,tk)表示词或记号tk在文档di出现的次数。这里要注意,仅是文档di中包含的词汇表子集Vdi的概率相乘,而不是整个语料库中词汇表V中所有的词的概率相乘。
实现朴素贝叶斯的一个关键步骤是估计词的概率P(tkcj)。为了使概率估计对于很少出现的词更有健壮性,需要采用一个简单的事件计数的平滑方法修正这个概率。一个很重要的平滑作用就是它避免了在训练数据的某一类中,一个没有出现过的词概率为0的情况。一个相当简单的平滑方法是基于常用拉普拉斯估计(如一个类中,所有的词计数都给它加1)。Witten-Bell[100]是另一个更有趣的方法。尽管朴素贝叶斯的表现不如其他的统计学习的方法,如基于近邻的分类器或者支持向量机,但它在那些对计算概率要求不那么高的分类任务上表现得非常好。朴素贝叶斯方法的另一个好处是它的高效和相比于其他学习方法更容易实施。
尽管基于多项式的模型分类器在词汇表数量巨大的情况下,优于基于多元的模型,他们的表现在以下情况下也不令人满意:1)训练集合中的文档不一样长,因此导致参数估计粗糙;2)处理稀少的类(很少的训练样本可用)。这些情况都频繁出现在用户特征建模的任务中,其中训练文档的长度无法给出假设,获取合适大小的负例样本(如类别c-的样本)是个问题。事实上,用户不会马上察觉到向系统提供负反馈时效果会立竿见影[81],训练集的类别c+样本(用户喜欢的)可能经常都比类别c-(用户不喜欢的)更大。在文献[46]中,作者提出了一个多元泊松模型的朴素贝叶斯文本分类器,它采取比前面提到的条件概率更合理的参数估计。我们已经将该方法用到[36]中提到的用户特征任务中。
朴素贝叶斯分类器用在许多基于内容的推荐系统中,如Skill&Webert[70,68]、NewsDude[12]、Daily Learner[13]、LIBRA[65]和ITR[27,83]。
3.3.2.2 相关反馈和Rocchio算法
相关反馈是一个信息检索中应用的技术,它帮助用户逐步完善基于之前搜索结果的查询。它是由用户根据所需信息检索到的相关文档,给出的进一步用户反馈组成的。
相关反馈及其在文本分类中的融合和著名的Rocchio公式[75],都普遍被基于内容的推荐系统所采用。基本的原则是允许用户给推荐系统根据用户的信息需求推荐的文本打分。这种形式的反馈随后被用来逐步改善用户特征,或者为训练将用户个人信息作为分类器的学习算法所使用。
一些线性分类器由类别的显式描述(或原始文档)组成[82]。Rocchio算法是一个可用于推导出这种线性的且带有描述风格的分类器。该算法将文档表示成向量,因此有相似内容的文档有相似的向量。向量的每个成分对应着文档中的一项,比较典型的是一个词。而每个成分的权重使用TF-IDF计算得到。在类别集合C中,对每个类,通过合并文档向量(正例和负例样本)得到每个类的原型向量来完成学习过程。对新文档d分类,计算文档d表示的向量与每个类的原型向量的相似度,然后把d分配给与原型相似度最高的类。
更正式地,Rocchio算法计算一个分类ci的向量ci→=〈ω1i,…,ωTi〉(T是词汇表,训练集里不用词的集合),公式如下:
其中ωkj是文档dj中词tk的TF-IDF权重,POSi和NEGi是指定类别cj中的正例和负例样本集合。β和γ是控制参数,可以用来设置所有正例和负例样本的相关程度。计算文档向量dj→与每个类别的原型向量ci→的相似度,和ci相似度最高的类别为c,则将c作为文档dj→的类别。基于Rocchio的分类算法没有任何理论基础,也不保证有效或收敛[69]。
相关反馈已经在许多基于内容的推荐系统中使用,如YourNews[2]、Fab[7]和NewT[87]。
3.3.2.3 其他方法
用在基于内容的推荐系统中的还有其他的学习算法,接下来简要地介绍一些非常重要的算法。完整的概述在[64,69,82]中有介绍。
在决策树里,所有内部节点用词来标记,从它们出发的分支被标记为对测试文档中词的权重的测算,叶子节点用类别标记。决策树的学习是通过递归地分割训练数据(即文本文档)为子数据集,直到这些子数据集仅包含一个类别为止。数据分割是把文档所含将要标记的词作为内部节点,在其上做权重计算的测算得到的。选择哪个词作为分割的操作,普遍采用的是信息增益或信息熵准则[101]。Syskill&Webert[70,68]推荐系统使用的是决策树。
决策规则分类器和决策树类似,他们都采用上面介绍的相似的方法递归地分割数据。规则学习器的一个优点是,相比于决策树学习器,它可以生成一个更简洁的分类器。规则学习的方法常试图从所有可能的规则(如可以正确将训练样本全部正确分类的规则)中根据一些最小化准则挑选“最好”的规则。
最近邻算法,也称为懒惰学习器,将训练数据简单地存储在内存里,对于一个新的样本,通过一个相似函数比较它与存储的所有样本的相似度,从而对它进行分类。确定“最近邻”或“k-最近邻”物品,未分类的类标签来源于最近邻的类标签。这时就需要相似度函数,例如,当样本用VSM表示的时候,采用余弦相似度。最近邻算法非常有效,虽然其最大的缺点是在分类时效率低下,因为缺少一个真正的训练阶段,所以拖延了分类时间。Daily Learner[13]和Qucikstep[58]使用最近邻算法建立一个用户短期兴趣模型,并将论文的语义标注和类别名中的本体分别关联起来。