基于邻域的协同过滤

协同过滤(collaborative filtering)是推荐系统最为常用的算法之一,已被很多知名网站如Amazon.com、TiVo、Netflix等成功应用在自己的推荐系统中。

协同过滤推荐系统的算法可以分为两类:基于记忆(memory-based)的和基于模型(model-based)的算法。其中基于记忆

的算法最主要有基于用户邻域的协同过滤和基于物品邻域的协同过滤。

一、基于用户邻域的协同过滤

基于用户邻域的协同过滤算法给用户推荐和该用户兴趣相似的其他用户喜欢的物品。具体的推荐过程为:我要给你推荐物品,首先找到和你兴趣最相似的K个用户,然后在他们喜欢但你还没有产生行为的物品中挑选你可能最感兴趣的N个物品推荐给你。

要实现上面的推荐过程,我们要做好两件事。一是准确找到和一个特定用户兴趣最相似的K个用户;二是在众多可能感兴趣的物品集合中选出最感兴趣的N个物品。

为了做好上面的两件事,基于用户邻域的协同过滤引进了下面两个概念:

一、用户兴趣相似度。这是一个数,用于度量两个用户兴趣相似的程度。关于此概念的具体含义和计算方法见。

二、用户对物品的兴趣度。这也是一个数,用于度量一个用户对一个物品的感兴趣程度。关于此概念的具体含义和计算方法见。

二、基于物品邻域的协同过滤

基于物品邻域的协同过滤算法给用户推荐和该用户产生过行为的物品内容相似的其他物品。具体的推荐过程为:我要给你推荐物品,首选找到和你产生过行为的每个物品内容最相似的K个物品,然后在这些相似物品中挑选你可能最感兴趣的N个物品推荐给你。

要实现上面的推荐过程,我们要做好两件事。一是准确找到和一个特定物品内容最相似的K个物品;二是在众多相似物品集合中挑选出最感兴趣的N个物品。

为了做好上面的两件事,基于物品邻域的协同过滤引进了下面两个概念:

一、物品内容相似度。这是一个数,用于度量两个物品内容相似的程度。关于此概念的具体含义和计算方法见。

二、用户对物品的兴趣度。这也是一个数,用于度量一个用户对一个物品的感兴趣程度。关于此概念的具体含义和计算方法见。

三、基于用户和物品的协同过滤对比。

基于用户邻域的协同过滤算法早于基于物品邻域的协同过滤算法被提出,但出于种种原因,后者比前者更广泛的应用在真实的推荐系统中,主要有如下因素:

一、基于物品邻域的协同过滤比基于用户邻域的协同过滤具有更好的解释性。基于物品邻域的协同过滤给用户推荐物品的时候,系统给出的推荐理由可以是用户以前对某某物品产生过行为,这很容易被用户所接受。但基于用户邻域的协同过滤给用户推荐物品的时候,系统不能将因为你和某某用户兴趣相似作为物品的推荐理由,因为用户绝大情况下是不知道那个用户的,这显然无法被用户所接受。

二、基于物品邻域的协同过滤比基于用户邻域的协同过滤具有反馈更及时的好处。当一个新用户或者一个老用户对一个物品产生行为后,基于物品邻域的协同过滤可以在不重新训练的情况下给用户推荐和刚产生行为的物品相似的物品,但基于用户邻域的协同过滤很难做到这一点。

 

本人参考Python Surprise库,用Python实现了推荐系统常用的算法,GitHub地址:https://github.com/liuchenailq/lcrs

 

你可能感兴趣的:(推荐系统)