Java教程

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

本文主要是介绍推荐系统----协同过滤算法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

目录

    • 1 算法概述
    • 2 用户协同过滤(UserCF)
      • 缺点
    • 3 物品协同过滤(ItemCF)
    • 4 应用场景分析
    • 5 传统协同过滤的缺陷
    • 6 参考材料

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 参考材料

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

这篇关于推荐系统----协同过滤算法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!