首页 > 代码库 > 《推荐系统》--基于内容的推荐

《推荐系统》--基于内容的推荐


《Recommender System An Introduction》,第三章,基于内容的推荐。


概述


如果说协同过滤中物品选择问题可以描述成“推荐相似用户喜欢的物品”,基于内容推荐则可描述成“推荐与用户过去喜欢的物品相似的物品”。因此,推荐系统的任务还是(基于用户记录)预测用户是否喜欢自己没有见过的物品。

基于内容的推荐,必须依赖关于物品和用户偏好的额外信息,但它不需要巨大的用户群体或评分记录,也就是说,只有一个用户也可以产生推荐列表。

在实际生产中,人工获取物品的特征,需要很多成本。

在文本文档推荐中,比如新闻或网页,绝大多数的基本假设是物品的特征能够自动从文档内容本身或无结构的文本描述中抽取。因此,基于内容推荐系统的典型例子是比较候选文章的主要关键词和用户过去高度评价过的其他文章中出现的关键词来推荐新文章。相应地,能够被推荐的物品经常指的就是“文档”。

基于内容和基于知识的推荐系统并没有明确界限,有些作者甚至认为基于内容是基于知识的子集。传统分类方案中,基于内容推荐系统的特点是着重于利用物品描述信息,而基于知识推荐系统则一般会有一些附加的因果知识来生成推荐,比如某个实用功能。

本节中,讨论基于内容的推荐,关注的算法侧重于推荐文本描述的物品,并能自动“学习”用户记录(基于知识的推荐系统通常是显示询问用户的偏好)。


内容表示和相似度


最简单的方法


物品特征:维护每个物品特征的详细列表(也叫属性集、特征集或物品记录),比如,对于推荐图书,可以是体裁、作者、出版社等;

偏好记录:通过询问,用户评分,或者分析文档,得出用户偏好记录。

这样,推荐要做的就是将物品特征和用户偏好匹配起来。

基于内容推荐的一般工作原理是,评估用户还没看到的物品与当前用于喜欢的物品的相似程度。典型相似度度量方法会用到Dice系数,它必将适合多值特征集合。原则上,根据实际面临的问题,各种相似度测量方法都是可行的。


向量空间模型和TF-IDF


严格说,以上方法中,关于出版社、作者等并不能算事图书的“内容”,只能算事附加知识。一直以来,基于内容推荐系统,都被用来过滤并推荐基于文本的物品,比如电子邮件或新闻。

基于内容推荐的标准不是去维护一列“元信息”特征,而是使用一列出现在文档中得相关关键词。

所以,它的主要思想是,能够从文档内容或没有限制的文字描述中自动生成这样的列表

文档内容--》关键词列表的方法:

(1)维护文档的关键词列表,和用户记录的相似列表。之后计算兴趣和文档的重合程度就可以推荐。其缺陷是因为文档越长,词的重叠几率会越大,结果,推荐系统会更倾向于推荐长文档。

(2)TF-IDF转换,TF-IDF是信息检索领域的成熟技术,代表词频和反文档频率。这是有标准的计算公式的。。。(凡是有公式的地方,都先略过,在算法节补充:))。。。在TF-IDF模型中,文档不是表示为每个关键词的布尔值向量,而是算出的TF-IDF值向量。


向量空间模型的改进及局限


(1)停用词和词干还原

(2)精简规模

(3)短语

(4)局限:没有考虑到关键词的上下文,在某些情况下没有正确体现描述的含义。


基于内容相似度检索


依赖“向量-空间文档表示模型”的最为常见的技术:


最近邻


k最近邻方法(kNN),优点:相对易于实现,可快速适应新近编号,只要有相对较少的评分数据就能得到一定的推荐之类;缺点:纯粹kNN方法比其他更复杂的技术的预测精准度要低。


相关性反馈--Rocchio方法


其思想来源于20世纪60年代后期开创性的信息检索系统SMART。SMART的特点是:用户不能只提交给系统基于关键词的查询,还要反馈检索结果是否相关。有了反馈的帮助,系统能够从本质上扩展查询词,并改进下一轮检索的查询结果。

了解即可,没有实用则先不深入研究。


其他文本分类方法


还有一种确定用户是否对一个文档感兴趣的方法,即将这类问题看做分类任务,分为“喜欢”和“不喜欢”两类。把基于内容的推荐任务表示成分类问题后,原则上就可以应用各种标准的(有监督)机器学习技术,这样一个智能的系统会自动决定用户是否会对某个文档感兴趣。有监督学习意味着算法依赖现成的训练数据。


基于概率模型的方法


早起文本分类系统最著名的分类方法是概率论。这些方法基于服从条件假设的朴素贝叶斯方法(词出现在文档中),并被成功部署于基于内容的推荐系统。


其他线性分类器和机器学习


(1)Widrow-Hoff算法

(2)支持向量机器(SVM)


显示决策模型


另外两种已用于构建基于内容推荐系统的学习技术是:决策树和规则归纳法,其独特之处在于训练阶段生成显示的决策模型。


特征选择


以上的技术都是依赖于向量表示文档和IF-IDF权重。直接使用的话,去除停用词并还原词干后,文档向量还是会很长,而且很稀疏(每个文档中只用到很少一部分词语),会导致性能、内存问题,导致过拟合。

有必要只用文档集中所有词的一个子集分类。这个选择可用词子集的过程叫做特征选择。


对比和局限


对比


在实验室中小数据量下,以正确分类的文档比例作为衡量精准度的标准。算法对比结果如下:

决策树学习算法在既定条件下表现也不突出;而且“最近邻”方法在某些领域表现很差;贝叶斯和Rocchio方法在所有领域都总是表现良好,而且没有明显区别;采用非线性激活函数的神经网络方法,效果也不明显。

以上仅是实验室评估,演示而已,具体生产中得效果评估,是需要客观的评估方案及苹果结果进行佐证的,不同的场景表现都会不尽相同。

评估结果似乎对贝叶斯算法情有独钟,认为:在测试领域表现良好(即使条件独立的假设不成立),而且它的学习和预测过程相对较快。并且似乎在分类器中只用布尔文档表示法(而不是TF-IDF权值),也不会显著影响推荐精准度。


局限


(1)浅层内容分析:比如推荐网页时,除了文本内容,还有很多其他方面,比如美观、时效、图片、音视频等。

(2)推荐结果新颖性:基于学习的方法很快就会倾向给出相同的推荐,会推荐与当前用户正面评价的物品比较相似的物品,导致推荐大路货。因此,有人提出,既要过滤不相似的,也要过滤太相似的,总体目标是提高推荐列表的惊喜度,因为意料之外的物品对用户的价值偏低。避免单调的简单方法是“随机插入记录”。

(3)获取评分:冷启动问题依然存在。在所有的过滤技术中,推荐精准度随着评分数量增加而提高,有研究表明,当评分数在20-50之间时,学习算法的效果会显著提升。很多领域,初始阶段,可以要求用户提供一列关键词,可以是从主题列表中挑选,也可以是在文本框里自由输入。


小结


基于内容推荐,相比协同过滤,不需要借助用户群体信息,但是需要通过显示反馈或者隐式反馈获取用户偏好,也需要考虑如何对待新用户。

基于内容推荐的方法,大多数方法都来源于信息检索(IR)领域,因为信息过滤或文本分类的典型IR任务都可以看做是某种推荐应用。这些方法都是基于显示或隐式的反馈学习出用户兴趣偏好的模型。在各种机器学习技术的帮助下可以达到很好的推荐精准度。

基于内容和基于知识推荐的典型不同是:基于内容推荐一般针对文本文档或其他能够自动抽取特征的物品,而且会用到某些学习技术;基于知识的系统主要依赖外部信息。

《推荐系统》--基于内容的推荐