ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

推荐系统----协同过滤算法

2021-12-25 11:03:18  阅读:157  来源: 互联网

标签:协同 矩阵 用户 ---- 算法 过滤 相似 物品


目录

1 算法概述

协同过滤算法(collaborative filtering)的主要目标是通过用户物品交互产生的协同(collaborative)信息,从而计算用户与用户之间的相似度、物品与物品之间的相似度。通过相似度的加权求和,计算用户对于物品的评分。

根据相似度计算的出发点的不同,协同过滤可以分为用户协同过滤(userCF)以及物品协同过滤(itemCF)。

  • 交互信息

共现矩阵(用户-物品交互的0/1矩阵)

例如,用户1与物品1、2产生过交互,用户2与物品3产生过交互,用户3未和任何一个物品产生交互,则共现矩阵如下所示:

物品1物品2物品3
用户1110
用户2001
用户3010
  • 相似度

(1)余弦相似度(cosine similarity)

余弦相似度多用于衡量向量之间的相似性。其物理含义是向量的夹角越小,则余弦相似度越大。当向量之间重合时,余弦相似度为1。

c o s ( a ⃗ , b ⃗ ) = a ⃗ ⋅ b ⃗ ∣ ∣ a ⃗ ∣ ∣ ⋅ ∣ ∣ b ⃗ ∣ ∣ cos(\vec{a}, \vec{b}) = \frac{\vec{a} \cdot \vec{b}}{||\vec{a}|| \cdot ||\vec{b}||} cos(a ,b )=∣∣a ∣∣⋅∣∣b ∣∣a ⋅b

(2)皮尔逊相似度

s i m ( j , i ) = ∑ p ∈ P ( R i , p − R i ‾ ) ( R j , p − R ‾ j ) ∑ p ∈ P ( R i , p − R ‾ i ) 2 ∑ p ∈ P ( R j , p − R ‾ j ) 2 sim(j, i) = \frac{\sum_{p \in P}(R_{i, p} - \overline{R_i})(R_{j, p} - \overline R_j)}{\sqrt{\sum_{p \in P}(R_{i, p} - \overline R_i})^2\sqrt{\sum_{p \in P}(R_{j, p} - \overline R_j})^2} sim(j,i)=∑p∈P​(Ri,p​−Ri​ ​)2∑p∈P​(Rj,p​−Rj​ ​)2∑p∈P​(Ri,p​−Ri​​)(Rj,p​−Rj​)​

* 减小用户偏置的影响

2 用户协同过滤(UserCF)

1、通过共现矩阵,得到用户表示向量。例如用户1 = [1, 1, 0], 用户3 = [0, 0, 0]

2、两两之间计算用户向量的相似度,得到用户相似度矩阵(用户-用户矩阵),这里以余弦相似度为例。

用户1用户2用户3
用户110 1 / 2 1 / \sqrt{2} 1/2
用户2010
用户3 1 / 2 1 / \sqrt{2} 1/2 01

3、获取Top n的相似用户,计算用户u对物品p的评分。用户u与相似用户的相似度乘上用户对于物品p的评分。

R u , p = ∑ s ∈ S ( w u , s ⋅ R s , p ) ∑ s ∈ S w u , s R_{u, p} = \frac{\sum_{s \in S}(w_{u, s} \cdot R_{s, p})}{\sum_{s \in S} w_{u, s}} Ru,p​=∑s∈S​wu,s​∑s∈S​(wu,s​⋅Rs,p​)​

缺点

1、在真实场景中,用户增长速度一般大于物品增长速度,因此用户数量可能远大于物品数量,存储用户相似度矩阵的存储开销过大

2、用户的历史数据稀疏,大部分用户交互的物品占总物品的比例很低,所以找到相似用户的准确率不高, 不适用用户交互反馈稀疏的场景

3 物品协同过滤(ItemCF)

1、通过共现矩阵,得到物品表示向量。例如物品1 = [1, 0, 0], 物品2 = [1, 0, 1]

2、两两之间计算物品向量的相似度,得到物品相似度矩阵(物品–物品矩阵)

3、获取Top k的相似物品,计算用户u对物品p的评分

R u , p = ∑ h ∈ H ( w p , h ⋅ R u , h ) R_{u, p} = \sum_{h \in H} (w_{p, h} \cdot R_{u, h}) Ru,p​=h∈H∑​(wp,h​⋅Ru,h​)

其中,H是用户u正反馈的物品集合。

4 应用场景分析

  • UserCF

更容易追踪兴趣相似的人喜欢什么,社交属性强,同时相对于关注物品的类型,捕捉热点的能力强。

  • ItemCF

更适用于兴趣变换稳定的应用,如电商、视频等。

5 传统协同过滤的缺陷

处理稀疏向量的能力弱,头部效应明显,对长尾物品不利。

例如两个冷门物品,交互的用户都不多,相乘等于零的概率大。但是对热门物品,跟大部分的物品都有交互,因此基本上都会有得分,更容易被推荐为相关物品,出现马太效应。

6 参考材料

《深度学习推荐系统》 王喆

标签:协同,矩阵,用户,----,算法,过滤,相似,物品
来源: https://blog.csdn.net/weixin_45504064/article/details/122139839

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有