基于内容的推荐根据用户过去喜欢的物品,为用户推荐和他过去喜欢的物品相似的物品。基于内容的推荐最早主要应用在信息检索系统中,所以很多信息检索及信息过滤的方法都能应用其中。
基于内容的推荐系统通过分析一系列用户之前已评分物品的文档和(或)描述,从而基于用户已评分对象的特征建立模型或个人信息。个人信息是用户兴趣的结构化并且被应用在推荐新的感兴趣的物品中。推荐的主要处理过程是将用户个人信息的特征和内容对象的特征相匹配,结果就是用户对某个对象感兴趣程度的评价。如果这份个人信息准确地反映了用户的偏好,信息访问处理过程则能带来巨大的优势。例如,通过判断用户是否对指定网页感兴趣,以及在不感兴趣的情况下阻止显示,从而达到有效过滤结果的效果。
根据上面所描述的过程,可以总结出基于内容推荐的三个关键步骤:1)物品的表示(Item Representation);2)学习用户特征(profile learning);3)产生推荐(recommendation generation)。图1是一个基于内容的推荐系统的高层次结构,推荐过程三个阶段中的每一个,都由独立的部件完成。
图1 基于内容的推荐系统的高层次结构
内容分析器:当信息没有结构化时(如文本),某些预处理阶段需要抽取相关的结构化信息。这个部件的主要功能就是将来自信息源的对象(如文档、网页、新闻产品描述等)的内容表示成恰当的格式,以便于下一阶段的处理。数据对象经过特征抽取技术的分析,目的是将原始信息空间转换到想要的物品描述格式(如将网页表示成关键词向量)。这样的描述格式作为信息学习器和过滤组件的输入。
信息学习器:这个模块收集了有关用用户偏好的数据特征,并试图去泛化这些数据,从而构建用户特征信息。泛化策略通常是通过机器学习技术实现的,它可以从用户过去喜欢的或不喜欢的物品中推断出一个用户的兴趣模型。例如,网页推荐的信息学习器可以实现相关的反馈方法,通过学习技术将正负样例向量组合到一个表示用户特征的模型向量中。训练样本是由用户提供的具有正负反馈的网页。
过滤组件:这个模块将用户个人信息和物品在表示空间进行匹配,利用用户个人信息来推荐相关物品,这个组件的结果是一个二元的或者连续型的相关性判断(使用某种相似度来计算),后者能生成一个潜在感兴趣物品的排名清单。在上面提过的例子中,这种匹配是通过计算原型向量和物品向量的余弦相似度得到的。
推荐步骤的第一个阶段是由内容分析器完成的,它通常是借鉴了信息检索系统的技术。来自信息源的物品描述经过内容分析器,从非结构化的文本中抽取特征(如关键词、概念等),从而得到结构化的物品描述,并储存在被表示物品库中。
为了结构化和更新活跃用户Ua(必须为其提供推荐的用户)的个人信息,该用户对物品的偏好反应是通过某些渠道收集并记录在反馈库中的。这些被称作注释或反馈的相互作用和物品的相关描述一起被用在模型学习的过程中,这些信息对实际中预测新的相关物品的表示非常有用。因此,即使没有提供任何反馈,用户也可以清晰地定义他们自己感兴趣的领域作为初始的个人信息。
1. 物品的表示
1.1 基于关键字向量空间模型
大多数基于内容的推荐系统使用相对简单的检索模型,比如常用的基于TF-IDF权重的向量空间模型,下面给出介绍。
TF-IDF
TF-IDF(词频—反文档频率,term frequency–inverse document frequency)是信息检索领域中的成熟技术,代表词频和反文档频率。文本文档可以通过TF-IDF转换成多维欧几里得空间中的向量。空间的维度对应文档中出现的关键词(term)。给定文档在每维的坐标由两个子量的乘积得出:词频和反文档频率。
词频描述某个词在一篇文档中出现的频繁程度(假设重要的词语出现地更多),同时考虑到文档长度,为了阻止更长的文档获得更高的相关度权值,需要对文档长度进行归一化:
TF(i, j)表示文档j中关键词i的归一化词频值,freq(i, j)是i在j中出现的绝对频率,Others(i, j)表示j中其他关键词集合,最大频率max Others(i, j)的计算为max (freq(z, j), z in Others(i, j).
反文档频率是组合了词频后的第二个衡量值,旨在降低所有文档中几乎都会出现的关键词的权重。其思想是,那些常见的词语对区分文档没有用,应该给那些进出线在某些文档中的词更高的权值,其计算方法如下:
N为所有可推荐文档的数量,n(i)为N中关键词i出现过的文档的数量。
文档j中关键词i的组合TF-IDF权值计算为这两个子量的乘积:
TF-IDF用一句话总结来说就是:在一篇文档中频繁出现(TF = 词频)但很少出现在语料库中其他文档里(IDF = 逆文档频率)的单词,与该文档主题的相关性很大。
向量空间模型
向量空间模型是一个文本文档的空间表示方法,在该模型中,每个文档被表示成一个n维空间中的向量,每一维对应给定文档集合词汇表中的一个词。形式上,每篇文档被表示成词权重的向量,其中权重表示这篇文档和该词的关联度。让D = {d1, d2, …, dM} 表示一个文档集合或语料库,T = {t1, t2, …, tN} 表示词典,即语料库中词的集合,可以从某些标准的自然语言处理操作中获取,如分词、停用词移除、变形等。每篇文档dj表示n维向量空间中的一个向量,从而dj = {w1j, w2j, …, wnj},其中wkj是文档dj中词tk的权重,由TF-IDF群众归一化后得到:
其中:
N表示语料库中文档的个数,nk表示含有单词tk出现至少一次的文档集合的数量。
向量空间模型的改进:
TF-IDF向量一般很大而且稀疏,可以使用其他技术让它们更紧凑,并且从向量中删除不相关的信息。
1) 停用词和词干还原:将英文中的介词、冠词,如“a”,“the”或“on”从文档中删除;将相同词语的不同变形替换为它们共同的词干,如“going”,“went”替换为“go”。
2) 精简规模:仅用n个信息量最大的词语来减少文档描述的规模,期望删除数据中的噪声,如Syskill & Webert系统选择128个信息量最大的词语,Fab使用100个词语。不同的推荐系统所用最优词语个数不同,根据实验而定。一般来讲,当关键词个数太少(少于50个),一些重要文档特征可能覆盖不到,而太多特征(比如超过300),文档模型中用到关键词的重要性就很有限了,而且带来的噪声实际上会使推荐精确度变差。一些统计学中的方法,如卡方检验、互信息或Fisher判别等,常用于文档的特征提取。
3) 短语:短语比单个单词更能描述文本,用它替换词可能进一步提高描述的精确性,如“联合国”(United Nations)可以作为附加维度转换到特征向量空间。可以通过人工定义的列表或采用统计分析技术来识别短语。
从文本中抽取个别关键词并赋权的方法有一个重要的局限:没有考虑到关键词的上下文,在某些情况下没有正确体现描述的“含义”。例如,关于西式牛排餐厅的文字描述可能会说“菜单上不会有素食者喜欢的食物”。在这个例子中,在自动生成的特征向量里,素食者这个词最可能得到比预想更高的权值,结果会意外匹配到对素食餐厅感兴趣的用户。请注意,一般来说我们会假设出现在一篇文档中的词通常适合刻画文档,而很少在文档中出现“相反语境”(本例所示)。
1.2 其他一些方法
还有其他一些更加高级的物品表示方法,此处只给出简要的说明。
1.2.1 基于关键词系统概述
一些推荐系统跟踪用户浏览行为,并依据与用户相关的关键词进行个性化建模,例如Web推荐系统中,Syskill & Webert采用128个最有代表性的词来表示文档;而ifWeb采用了更高级的表示技术,将信息表示成一定形式的带权重的语义网。在新闻过滤领域,Yournews为8个不同主题(国内、国际、经济等)分别维护有一个兴趣个人信息,用户对这些主题的兴趣信息用一个加权的原型词向量表示。向量值从用户浏览的新闻历史记录中抽取。用户过去浏览了N篇文章,抽取前100个加权了的词来生成用户最终的原型向量。该系统维护了一个仅考虑最近览过的20篇新闻信息的短期特正,而长期特证考虑的是过去所有浏览过的新闻,系统可以利用这些个人信息来显示最近的和推荐的两类新闻。
实际上,在新过滤系统中,学习短期和长期特征是两种非常典型的方式。 NewsDude在用户提供的感兴趣新回的初始训练集基础上,用用基于TF-IDF(余弦相似)的方法学习用户短期模型,用基于补素贝叶斯分类器的模型学习用户的长期模型。同样的 Daily Learner无线信息访向的学习工具,也果用一种方法来学习两种不同的用户模型。前者基于最最近邻的文本分类器算法来维护用户的短期兴趣特征,后者利用长时间收集到的数据,基于补素贝叶斯分类器,来学习用户的长期兴趣特征。
该方法依赖于对用户兴趣的可靠的句法分析,当要求更高级的特征时,该方法就显得不足,例如,某用户有个“法国印象派”的关键词,基于关键词的方法只能找出包含词“法国”和“印象派”的关键词,而关于“莫奈”展览的文档将不会出现在推荐集合中。更高级的表示策略需要为基于内容的推荐系统添加“智能语义”,它可以超越由关键词提供的用户兴趣的语法证据。下面两种方法会研究在索引阶段通过本体和广博知识源注入知识的可能方式。
1.2.2 运用本体的语义分析
语义分析需要学习大量准确的信息,这些信息包括参考在外部知识基础上定义的概念。这个方法的主要的目是提供一个有文化和语言背景知识的推荐系统统,且系统具有翻译自然语言文档和分析内容的能力。一些现在主流策略里所采用的语义推荐过程大致主要考虑以下几个标准:
包含知识源的类型(如词典、本体等);
物品的注释或表示所采用的技术;
用户个人信息中内容的类型;
物品一用户个人信息匹配策略。
举例说明:MultiWordNet中每篇新闻会使用词领域消歧来自动关联到一个MultiWordNet的同义词集合;ITR以文本的形式提供对物品的描述(如情节、概述、短摘要),采用词感知消歧(基于感知的文档表示),物品根据一个基于同义词集合的向量空间模型进行表示,称作同义词袋。Informed Recommender使用消费者产品评价给出推荐建议。系统通过作为知识表示和共享的翻译本体,把用户观点转换成一个结构化形式。
1.2.3 运用百科全书式的知识源进行语义分析
相比于只有很多词的集合,常识和特定领域知识产生更有信息量的特征,对于改进自然语言处理技术可能会有帮助。在学习用户特征的过程中,相对于经典的使用内因知识的技术,注入外因知识(外部提供的)得到的效果会更好。近些年来,世界上很多的知识信息源已经变得容易获取。举例来说,开放目录工程(Open Directory Project, ODP)、 Yahoo! Web Directory、 Wikipedia都是通用的知识库。
2. 学习用户特征
通常用于推导基于内容的用户个人信息的机器学习技术也会非常适合用于文本分类。在用来文本分类的机器学习方法中,推导过程通过从一个训练文档集合(文档已经被标记为他们所属的分类)中学习类别的特征,自动建立一个文本分类器。
学习用户特征的问题可以转换为一个二元文本分类任务:每一个文档都根据用户的的偏好被分类成感兴趣或不感兴趣。下面介绍在基于内容的推荐系统中使用最多的学习算法。它们能够学习一个能对每个用户兴趣建模的函数。这些方法通常要求用户赋给文档一个相关的分数来标记文档,自动推断出用户的个人信息,并用于过滤过程根据用户的偏好对文档排序。
2.1. 朴素贝叶斯
朴素贝叶斯(参考资料,强烈建议观看)是一个归纳式学习的概率方法,这类方法基于之前的观察数据产生一个概率模型,该模型估计文档d属于类别c的后验概率P(c|d)。这个估计是基于先验概率P(c),即观察一个文档属于c的概率,P(d|c)即在给定类别c的情况下观测到文档d的概率,P(d)即观测到文档d的概率。使用这些概率,应用贝叶斯定理计算P(c|d):
对于文档d的分类,选择概率最高的作为类别:
P(d)与所有类别cj相等时,一般将其去掉,当我们不知道P(d|c)和P(c)时,我们利用观测到的训练数据对它们进行估计,下面以一个简单的例子进行说明。
计算文档6的特征向量X的类别条件概率如下:
P(c =1|d = 6) = P(recommender = 1|c = 1) * P(intelligent = 1|c = 1) * P(learning = 0|c = 1) * P(school = 0|c = 1) = 3/3 * 2/3 * 1/3 * 2/3 = 0.149。
有两个被普遍使用的朴素贝叶斯分类模型:多元伯努利时间模型和多项式事件模型。两个模型都将整个文档看作一个在语料库词汇表V上的向量值,向量中的实体表示它在这个文档中是否出现,因此模型都忽略了关于词顺序的信息。多元伯努利事件模型将每个词编码为一个二元属性,即一个词有没有出现,而多项式事件模型计算一个词在一个文档中出现的次数。经验结果显示,多项式朴素贝叶斯模型的表现胜过多元伯努利模型,尤其是在巨大的词汇表下,其计算方式为:
N_(tk, di)表示词或记号tk 在文档di 出现的次数,注意,仅文档di 中包含的词汇表子集V_di的概率相乘,而不是整个语料库中词汇表V中所有词的概率相乘。在朴素贝叶斯概率模型中,为了使概率估计对弈很少出现的词更有健壮性,需要采用一个简单的事件计数的平滑方法修正这个概率,以避免训练数据的某一类中,一个没有出现过词概率为0的情况。一个常用的平滑方法是拉普拉斯平滑方法,所有的词计数都加1。
显而易见的是,朴素贝叶斯模型关于个体事件条件独立的核心假设并不成立,这是因为很多词远比其他词更容易同时出现,比如Hong和Kong,New和York等,即便如此,贝叶斯分类器仍然有令人惊讶的表现,并被广泛用于文本分类。有文献这样解释:“分类估计值是函数估计值的一个符号变量,在分类精确度很高的同时函数近似值仍然可能很低,这个事实可以解释以上矛盾。”
2.2 Rocchio算法
如果将基于内容的推荐问题看作分类问题,那么还可以应用其他机器学习技术。概括来说,大多数学习方法的目标是找到一个线性模型的系数来区分相关和不相关的文档。Rocchio就是这样一个线性分类器。
相关反馈是一个信息检索中应用的技术,它帮助用户逐步完善基于之前搜索结果的查询。它是由用户根据所需信息检索到的相关文档,给出进一步用户反馈组成的。
一些线性分类器由类别的显式描述组成,Rocchio算法(资料参考)是一个可用于推导出这种线性的且带有描述风格的分类器。具体地,该算法将文档表示成向量,因此相似的文档有相似的向量。向量的每个成分对应着文档中的一项,比如一个词。每个成分的权重使用TF-IDF计算得到。在类别集合C中,对每个类,通过合并文档向量(正例和负例样本)得到每个类的原型向量来完成学习过程。对新文档d分类,计算文档d表示的向量与每个类的原型向量的相似度,然后把d分配给予原型相似度更高的类。
更正式地,Rocchio算法计算一个分类ci的向量ci = <<b style="mso-bidi-font-weight:normal">w1i , … , w|T|i>(T是词汇表),公式如下:
其中wkj 是文档dj 中词tk 的TF-IDF权重,POSi 和NEGi 是指定类别cj 中的正例和负例样本集合。Beta和gamma是控制参数,可以用来设置所有正例和负例样本的相关程度。计算文档向量dj 与每个类别的原型向量cj的相似度,将相似度最高的类别c^{hat}作为文档dj 的类别。需要注意的是,基于Rocchio的分类算法没有任何理论基础,也不保证有效或收敛。
2.3 决策树
决策树是一个类似于流程图的树结构,其中每个节点代表一个属性上的测试,每个分支代表一个测试输出,最后的叶结点代表类别。决策树方便改写为形如if- then的分类规则,易于理解。决策树的核心算法是一种贪心算法,它以自顶向下的方式在训练集的基础上构造决策树之后,取未知文本的属性,在决策树上测试路径由根结点到叶结点,从而得到该文本的所属类别。
决策树的算法有ID3,C4.5(发展于ID3),CART,CHAID等,他们的区别在于构造决策树与树枝剪除的算法细节不同。决策树可以很好的抵抗噪声,最大的缺点在于不适应大规模的数据集,此种情况下决策树的构造会变得效率低下。
可参考我之前的博客:ID3决策树算法的MATLAB编程实现。
2.4 K近邻分类
KNN(K-nearest neighbor)的思想也来源于向量空间模型,同样采用将文本转化为向量的思想。KNN是一种基于类比的分类方法,在训练的过程中,KNN会生成所有训练例的特征向量,并将其保存下来。给定一个未知文本,首先生成它的特征向量之后,KNN会搜索所有的训练例,通过向量相似度比较,从中找出K个最接近的训练例,然后将未知文本分到这K个近邻中最普遍的类别中去,相似度可以通过欧几里德距离或cosin来度量
KNN是一种懒散的方法,即它没有学习过程,只是存放所有的训练例直到接到未知文本的时候才建立分类。KNN的训练过程较快,而且可以随时添加或更新训练例来调整。但它分类的开销会很大,因为需要很大的空间来保存训练例,而且分类效率很差,有看法认为在小数据集上KNN的表现优异。
3. 总结
纯粹的基于内容的推荐系统有很多已知局限。
1)浅层内容分析。尤其是在推荐网页时,仅仅看文本内容就想确定网页的质量和偏好可能还不够。其他方面,比如美观、可用性、时效性或超链接的正确性也决定了网页的质量。在用关键词描述文档时,推荐系统不能区分使用同一组关键词的精彩文章和相对抽劣的文章。此外,在某些应用领域,要推荐的文本篇幅可能不足以抽取一组有区分度好特征。典型型的例子是推荐笑话:从一组非常小的特征集合里学习刻合适的偏好记录可能很困难;而且几乎不可能区分好笑的冷笑话和无趣的笑话。
超文本文档中越来越多地包含多媒体元素的信息,比如图片、音频和视频序列。浅层文本分析却没有能够考虑到这些内容。尽管最近在文本文档特征抽取领域取得了一些进展,从多媒体内容中抽取特征的研究仍处在早期阶段。音乐领域公布了一些初步结论,比如体裁自动探测( Liet al.2003)和歌手识别( Shen et al.2006)。未来这个方向上还会有更多研究,这是因为现个性化音乐推荐扮演了重要角色。视频领域也是如此。尤其是基于MPEG-7标准( ISO/IEC15938)的语义标注提供了新的机遇,这将大大增强标注能力。
如果做不到自动抽取描述特征,那么在理论上,人工标注是另一种选择。许多作者都认为在大多数领域人工标注代价太大。然而随着Web2.0的出现,互联网用户日益成为内容提供者。现在的Web用户会积极主动地在Web站点标注像图片或视频这样的内容(协作标签)尽管这些标签大部分并不限于固定规模的实体名称,而且可能并不一致,但它们可以作为有价值的资源确定个资源中更多的特征。
2)推荐结果缺乏新颖性。基于学习的方法很快就会倾向给出相同的推荐,会推荐与当前用户已经(正面)评价的物品比较相似的物品。这会导致一些不合需要的推荐结果,比如推荐大路货或者是推荐的物品与用户熟知的物品太相似。典型的例子是新闻过滤推荐系统推荐一篇与用户在其他场合已经看过的相同题材的新闻报道。系统因此需要定义了一个國值,不仅要滤除与用户记录差别太大的物品,也要滤除那些太相似的物品。总体目标是要提高推荐列表的惊喜度,要包括用户可能会感兴趣的“意料之外”的物品,因为意料之中的物品对用户的价值很低。一种避免单调乏味列表的简单方法是“随机插入记录”
我们在讨论协同过滤系统时提到的冷启动问题在基于内容的推荐方法中也同样存在,只不过表现为另一种稍微不同的形式。尽管基于内容推荐技术不需要很大的用户群体,但它们至少需要来自用户的初始评分集合,一般来说是显式的“喜欢”和“不喜欢”标注集合。在所有的过滤技术中,推荐精准度随着评分数量增加而提高,但在很多领域,用户可能不愿意在使用推荐服务之前给这么多的物品评分。在初始阶段一种可供选择的办法是,要求用户提供一列关键词,可以是从主题列表中挑选,也可以是在文本框里自由输入。此外,在Web2.0环境里的另一种选择是“重用”用户已经提供的或从其他个性化Web应用中收集到的信息,然后利用这些信息作为起点不断增加用户记录。