0
点赞
收藏
分享

微信扫一扫

《文本上的算法——深入浅出自然语言处理》读书笔记:第7章 如何让机器猜得更准

目录

第7章 如何让机器猜得更准

7.1 基于协同过滤的推荐算法

7.2 基于内容的推荐算法

7.3 混合推荐算法


第7章 如何让机器猜得更准

从获得信息的角度来说,搜索引擎是用户主动获取信息的方式,推荐系统则是被动地向用户呈现信息的方式,所以说推荐系统在一定程度上提升了用户获取信息的效率。

推荐系统一定是给某个“用户”推荐了某些“物品”,所以“用户”和“物品”就是推荐系统中的两个关键,根据对这两个点的不同定位就会产生不同的算法。

因为推荐的物品会有很大区别,所以推荐系统并没有搜索系统那样一个清晰的架构流程,大致来说,推荐系统使用最多的有如下两类方法:

基于协同过滤的推荐算法;

基于内容的推荐算法。

7.1 基于协同过滤的推荐算法

协同过滤(Collaborative Filtering,CF)是个典型的利用集体智慧的方法。它的思想非常容易理解:如果某个用户和你的兴趣相似,那么他喜欢的物品很可能就是你喜欢的。也可以说协同过滤第一步需要收集用户兴趣,然后根据用户兴趣计算相似用户或者物品,之后就可以进行推荐了。所以就产生了两类协同过滤反法:基于用户的协同过滤(User-based CF)和基于物品的协同过滤(Item-based CF)。

基于用户的协同过滤就是首先根据用户记录,找到和目标用户相似的N个用户,然后根据这N个用户对目标物品的打分计算出目标用户对目标物品的预测打分,然后决定要不要推荐。首先就是要计算用户之间的相似度,用户间的相似度使用皮尔森相关系数效果好一点。

我们据此可以计算出小明对所有其他物品的打分预测值,然后把高的top-n推荐给小明,这就是基于用户的协同过滤算法。

基于物品的协同过滤的思想是利用其他用户来计算物品相似度进而计算预测值。还是以小明为例,我们首先计算出和Item5最相似的物品,物品间的相似度使用余弦相似度效果好一点。确定了物品相似度之后就可以通过就是那个小明对所有Item5相似物品的加权评分综合来计算小明对Item5的预测值了。

User-based CF需要实时计算用户间的相似度,所以计算量大且频繁,扩展性也不强;而Item-based CF是计算物品的相似度可以在线下计算,减少了线上的计算量,所以大型电子商务一般使用这种方法。

协同过滤方法还有两个比较大的问题:

(1)用户稀疏问题。用户一般只会评价少部分物品,所以矩阵会非常稀疏,稀疏矩阵对最终的精度有很大影响;

(2)冷启动问题。对于还未做过任何评分的用户或者从未被评分过的物品就没办法直接使用协同过滤方法了。

协同过滤方法还有一种分法叫基于模型的协同过滤方法。例如,使用奇异值分解(SVD)对矩阵处理,这种方法同时也起到了降维的作用。

协同过滤方法都是在矩阵上根据其他用户对某个用户的操作,而且它并不考虑物品的具体内容是什么,而物品的内容也是很有信息量的。

7.2 基于内容的推荐算法

该算法相当于淡化了“用户”,更多地从用户感兴趣的内容(物品特征属性的描述)的相似度来决定是否推荐,自然需要内容的相似度。

基于内容的推荐算法大致有这么几种方法:

1.分类/聚类方法

根据用户属性和文档属性的关联,就可以给用户推荐相应属性的文档了。

2.搜索方法

搜过方法就是通过搜索用户感兴趣的物品找出阈值最相似的物品,然后推荐给用户。它和搜索引擎最大的区别就是搜索引擎提交的是Query,而在这儿提交的是用户兴趣,根据不同的场景会有不同的搜索条件和排序策略。

7.3 混合推荐算法

真正的系统一般都是融合了多种方法,这样可以抵消各自的缺点,现有系统大多都是融合多种方法然后使用机器学习来推荐,总体来说,推荐系统和搜索系统大体思路都是一样的,就是先从大的集合中初步筛选出可能需要推荐的子集合,然后对这个集合进行排序,最后再根据一些策略把最终结果推荐给用户。

一个用户来了之后,首先从数据层中取到他的用户画像,然后从大量已经处理过的文档集合中通过不同维度的召回策略召回一些候选文档集合并粗略给一个排序,之后用机器学习模型对候选文档集合进行排序,最后是一些策略筛选和调整,把最终的推荐结果发给用户。当用户看到结果后,会有一些反馈,然后这些反馈又会进一步作用到用户画像和排序模型中,使得结果更好。

(1)用户画像构建

如何构建用户画像取决于平台有什么数据,一般来说都会包括基本属性、行为属性、上下文属性等等。有了这些数据,就要给每个用户建立一张兴趣表,从目前的技术来说,就是给用户打上若干个标签及相应的得分,表示这个用户对这种标签的兴趣度,这些标签就可以用来召回候选文档和排序。

(2)排序模型

对召回的候选文档集合进行排序,整体来说包括排序和策略两大部分。排序包括抽取特征、训练模型和评估等。

(3)“物品”属性计算。

即要对推荐的对象计算各种属性。对于文档来说,就是文本分类、文本聚类、标签提取和质量得分等等。

标签提取会稍微不同,首先要关键词提取,而在关键词提取过程中要进行实体识别,因为不少实体词会被分词分来,而它们要整体作为一个关键词。然后就是对关键词排序,排序的原则就是最能代表该文档语义的词要排得更高。

正因为被推荐的“物品”不同,导致它的属性计算会不同;而且不同的平台用户画像构建的为维度也会不同,也就是说不同任务的推荐系统会有较大的不同。

任何一个推荐系统,都会面临一些困难:多样性和精准性的平衡、时效性、质量保证、稀疏性和冷启动等。

推荐系统评价。站在用户体验角度来说,推荐系统的目的是提高用户获取信息的效率,而站在商业的角度来说,它的目的就是能产生某种行为,所以推荐系统的本质其实就是预测能力,因此,一个好的推荐系统就是能最大化达到目的的预测器。但是站在人工智能的角度来看,现在的推荐系统都是伪个性化的。

人的兴趣大多时候用自然语言都难以表示,尤其是短期兴趣,更不用说几个标签了,再加上现在各家公司的产品都是孤立的,也就是说每一个产品获得的都是用户的部分信息,导致了捕捉用户兴趣的稀疏性。

个性化发展得越远,也意味着用户越来越没有隐私(个性化和隐私一定是个矛盾体),所以,现阶段的推荐系统其实更像一个无需用户选择的关键词订阅器。

举报

相关推荐

0 条评论