协同过滤——基于邻域的算法

本文介绍了协同过滤中的基于用户和物品的协同过滤方法,对比了两者在可解释性、计算复杂度、适用场景和推荐多样性等方面的差异。协同过滤主要应用于推荐系统,通过计算用户或物品的相似度进行预测。文章详细讨论了评分标准化、相似度计算方法、邻域选择策略及其在实际应用中的影响。
摘要由CSDN通过智能技术生成


基于用户行为分析的推荐算法是个性化推荐系统的重要算法,学术界一般将这种类型的算法称为协同过滤算法。顾名思义,协同过滤就是指用户可以齐心协力,通过不断地和网站互动,使自己的推荐列表能够不断过滤掉自己不感兴趣的物品,从而越来越满足自己的需求。

协同过滤使用的主要数据都是用户对物品的评价。协同过滤可以分为以下3类:
基于领域的方法:基于用户的推荐(User-based Recommendation)、基于物品的推荐(Item-based Recommendation);
基于模型的方法:SVD、LFM等;
基于图的方法;

本节主要介绍基于邻域的方法。

1、概述

1.1 基于用户的协同过滤与基于物品的协同过滤的比较

见《推荐系统:技术、评估及高效算法》P30

  • 合理性(可解释性)

基于物品的推荐系统更具可解释性。

  • 计算复杂度

Item CF 和 User CF 是基于协同过滤推荐的两个最基本的算法,User CF 是很早以前就提出来了,Item CF 是从 Amazon 的论文和专利发表之后(2001 年左右)开始流行,大家都觉得 Item CF 从性能和复杂度上比 User CF 更优,其中的一个主要原因就是对于一个在线网站,用户的数量往往大大超过物品的数量,同时物品的数据相对稳定,因此计算物品的相似度不但计算量较小,同时也不必频繁更新。但我们往往忽略了这种情况只适应于提供商品的电子商务网站,对于新闻,博客或者微内容的推荐系统,情况往往是相反的,物品的数量是海量的,同时也是更新频繁的,所以单从复杂度的角度,这两个算法在不同的系统中各有优势,推荐引擎的设计者需要根据自己应用的特点选择更加合适的算法。

  • 适用场景

在非社交网络的网站中,内容内在的联系是很重要的推荐原则,它比基于相似用户的推荐原则更加有效。比如在购书网站上,当你看一本书的时候,推荐引擎会给你推荐相关的书籍,这个推荐的重要性远远超过了网站首页对该用户的综合推荐。可以看到,在这种情况下,Item CF 的推荐成为了引导用户浏览的重要手段。同时 Item CF 便于为推荐做出解释,在一个非社交网络的网站中,给某个用户推荐一本书,同时给出的解释是某某和你有相似兴趣的人也看了这本书,这很难让用户信服,因为用户可能根本不认识那个人;但如果解释说是因为这本书和你以前看的某本书相似,用户可能就觉得合理而采纳了此推荐。
相反的,在现今很流行的社交网络站点中,User CF 是一个更不错的选择,User CF 加上社会网络信息,可以增加用户对推荐解释的信服程度。

  • 推荐多样性和精度
    研究推荐引擎的学者们在相同的数据集合上分别用 User CF 和 Item CF 计算推荐结果,发现推荐列表中,只有 50% 是一样的,还有 50% 完全不同。但是这两个算法确有相似的精度,所以可以说,这两个算法是很互补的。

关于推荐的多样性,有两种度量方法:
第一种度量方法是从单个用户的角度度量,就是说给定一个用户,查看系统给出的推荐列表是否多样,也就是要比较推荐列表中的物品之间两两的相似度,不难想到,对这种度量方法,Item CF 的多样性显然不如 User CF 的好,因为 Item CF 的推荐就是和以前看的东西最相似的。
第二种度量方法是考虑系统的多样性,也被称为覆盖率 (Coverage),它是指一个推荐系统是否能够提供给所有用户丰富的选择。在这种指标下,Item CF 的多样性要远远好于 User CF, 因为 User CF 总是倾向于推荐热门的,从另一个侧面看,也就是说,Item CF 的推荐有很好的新颖性,很擅长推荐长尾里的物品。所以,尽管大多数情况,Item CF 的精度略小于 User CF, 但如果考虑多样性,Item CF 却比 User CF 好很多。

如果你对推荐的多样性还心存疑惑,那么下面我们再举个实例看看 User CF 和 Item CF 的多样性到底有什么差别。首先,假设每个用户兴趣爱好都是广泛的,喜欢好几个领域的东西,不过每个用户肯定也有一个主要的领域,对这个领域会比其他领域更加关心。给定一个用户,假设他喜欢 3 个领域 A,B,C,A 是他喜欢的主要领域,这个时候我们来看 User CF 和 Item CF 倾向于做出什么推荐:如果用 User CF, 它会将 A,B,C 三个领域中比较热门的东西推荐给用户;而如果用 ItemCF,它会基本上只推荐 A 领域的东西给用户。所以我们看到因为 User CF 只推荐热门的,所以它在推荐长尾里项目方面的能力不足;而 Item CF 只推荐 A 领域给用户,这样他有限的推荐列表中就可能包含了一定数量的不热门的长尾物品,同时 Item CF 的推荐对这个用户而言,显然多样性不足。但是对整个系统而言,因为不同的用户的主要兴趣点不同,所以系统的覆盖率会比较好。

从上面的分析,可以很清晰的看到,这两种推荐都有其合理性,但都不是最好的选择,因此他们的精度也会有损失。其实对这类系统的最好选择是,如果系统给这个用户推荐 30 个物品,既不是每个领域挑选 10 个最热门的给他,也不是推荐 30 个 A 领域的给他,而是比如推荐 15 个 A 领域的给他,剩下的 15 个从 B,C 中选择。所以结合 User CF 和 Item CF 是最优的选择,结合的基本原则就是当采用 Item CF 导致系统对个人推荐的多样性不足时,我们通过加入 User CF 增加个人推荐的多样性,从而提高精度,而当因为采用 User CF 而使系统的整体多样性不足时,我们可以通过加入 Item CF 增加整体的多样性,同样同样可以提高推荐的精度。

  • 用户对推荐算法的适应度

前面我们大部分都是从推荐引擎的角度考虑哪个算法更优,但其实我们更多的应该考虑作为推荐引擎的最终使用者 – 应用用户对推荐算法的适应度。
对于 User CF,推荐的原则是假设用户会喜欢那些和他有相同喜好的用户喜欢的东西,但如果一个用户没有相同喜好的朋友,那 User CF 的算法的效果就会很差,所以一个用户对的 CF 算法的适应度是和他有多少共同喜好用户成正比的。

Item CF 算法也有一个基本假设,就是用户会喜欢和他以前喜欢的东西相似的东西,那么我们可以计算一个用户喜欢的物品的自相似度。一个用户喜欢物品的自相似度大,就说明他喜欢的东西都是比较相似的,也就是说他比较符合 Item CF 方法的基本假设,那么他对 Item CF 的适应度自然比较好;反之,如果自相似度小,就说明这个用户的喜好习惯并不满足 Item CF 方法的基本假设,那么对于这种用户,用 Item CF 方法做出好的推荐的可能性非常低。

1.2 用户行为数据

《推荐系统实践》
用户行为在个性化推荐系统中一般分两种——显性反馈行为(explicit feedback)和隐性反馈行为(implicit feedback)。在很多网站中,很多用户甚至只有隐性反馈数据,而没有显性反馈数据。

很多关于互联网数据的研究发现,互联网上的很多数据分布都满足一种称为Power Law①的分布,这个分布在互联网领域也称长尾分布。 ① 参见“浅谈网络世界的Power Law现象”,地址为http://mmdays.com/2008/11/22/power_law_1/。 长尾分布其实很早就被统计学家注意到了。1932年,哈佛大学的语言学家Zipf在研究英文单词的词频时发现,如果将单词出现的频率按照由高到低排列,则每个单词出现的频率和它在热门排行榜中排名的常数次幂成反比。

一般认为,新用户倾向于浏览热门的物品,因为他们对网站还不熟悉,只能点击首页的热门物品,而老用户会逐渐开始浏览冷门的物品。

1.3 数学符号约定

我们参考《推荐系统:技术、评估及高效算法》的数学符号:

我们定义用户集合为 U U U,物品集合为 T T T,系统评分集合为 R R R,评分的可选集合为 S S S,如 S = { 1 , 2 , 3 , 4 , 5 } S = \{1,2,3,4,5\} S={ 1,2,3,4,5}

r u i r_{ui} rui表示用户 u ∈ U u \in U uU对于特定物品 i ∈ T i \in T iT的评分。

U i U_i Ui表示集合中已经对物品 i i i进行了评分的用户集合。

T u T_u Tu表示被用户 U U U所评分的集合。

T u v T_{uv} Tuv表示被用户 u u u v v v同时评论的物品集合。

U i j U_{ij} Uij表示同时对物品 i i i和物品 j j j做出评论的物品集合。

2、基于用户的协同过滤

2.1 基本原理

基于用户的协同过滤推荐的基本原理是,根据所有用户对物品或者信息的偏好,发现与当前用户口味和偏好相似的“邻居”用户群,在一般的应用中是采用计算“K-邻居”的算法;然后,基于这 K 个邻居的历史偏好信息,为当前用户进行推荐。

1.jpeg

上图示意出基于用户的协同过滤推荐机制的基本原理,假设用户 A 喜欢物品 A,物品 C,用户 B 喜欢物品 B,用户 C 喜欢物品 A ,物品 C 和物品 D;从这些用户的历史喜好信息中,我们可以发现用户 A 和用户 C 的口味和偏好是比较类似的,同时用户 C 还喜欢物品 D,那么我们可以推断用户 A 可能也喜欢物品 D,因此可以将物品 D 推荐给用户 A。

基于用户的协同过滤推荐机制和基于人口统计学的推荐机制都是计算用户的相似度,并基于“邻居”用户群计算推荐,但它们所不同的是如何计算用户的相似度,基于人口统计学的机制只考虑用户本身的特征,而基于用户的协同过滤机制可是在用户的历史偏好的数据上计算用户的相似度,它的基本假设是,喜欢类似物品的用户可能有相同或者相似的口味和偏好。

2.2 数学描述

见《推荐系统:技术、评估及高效算法》P28

基于用户的协同过滤计算用户 u u u i i i的评分 r u i r_{ui} rui的方法是:利用和用户 u u u兴趣相同的用户对物品 i i i的评分预估用户 u u u i i i的评分。

因此,2个核心的问题是:

  • 如何发现和用户 u u u兴趣相同的用户,即其近邻。
  • 如何使用近邻的评分预估用户 u u u i i i的评分。

我们用 ω u v \omega_{uv} ωuv表示用户 u u u v v v的相似程度;与用户最相似的 k k k个用户表示为 N ( u ) N(u) N(u),这些用户中对物品 i i i做了评分的用户表示为 N i ( U ) N_i(U) Ni(U)

我们预测 r u i r_{ui} rui为这些用户对物品 i i i的评分的平均值:

r u i ^ = 1 ∣ N i ( u ) ∣ ∑ v ∈ N i ( u ) r v i \hat{r_{ui}} = \frac{1}{|N_i(u)|}\sum_{v \in N_i(u)}{r_{vi}} rui^=Ni(u)1vNi(u)rvi

上述是最简单的计算 r u i r_{ui} rui的方式,但我们还应该考虑到用户 u u u与各个近邻间的相似程度其实是有差异的,他们对 r u i r_{ui} rui的影响也应该不同,我们对各个近邻的评分进行加权平均得出 r u i r_{ui} rui

r u i ^ = ∑ v ∈ N i ( u ) ω u v r v i ∑ v ∈ N i ( u ) ∣ ω u v ∣ \hat{r_{ui}} = \frac{\sum_{v \in N_i(u)}\omega_{uv}{r_{vi}}}{\sum_{v \in N_i(u)}|\omega_{uv}|} rui^=vNi(u)ωuvvNi(u)ωuvrvi
注意权重应该做标准化,以保证 r u i r_{ui} rui不超出评分标准范围。

还有一个问题,上面的方法没有考虑用户会使用不同的评分尺度,比如一个用户对所有物品都评分较高,而另一个用户对所有物品都评分较低,这种情况下,他们为同一个物品评3分是完全不同含义的。解决这个问题的办法是将近邻的评分 r v i r_{vi} rvi进行标准化转移 h ( r v i ) h(r_{vi}) h(rvi),因此最终的 r u i r_{ui} rui调整为:
r u i ^ = h − 1 ( ∑ v ∈ N i ( u ) ω u v h ( r v i ) ∑ v ∈ N i ( u ) ∣ ω u v ∣ ) \hat{r_{ui}} = h^{-1}(\frac{\sum_{v \in N_i(u)}\omega_{uv}{h(r_{vi}})}{\sum_{v \in N_i(u)}|\omega_{uv}|}) rui^=h1(vNi(u)ωuvvNi(u)ωuvh(rvi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值