100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 推荐系统学习(二)--UserCF与ItemCF推荐算法

推荐系统学习(二)--UserCF与ItemCF推荐算法

时间:2021-11-27 10:47:08

相关推荐

推荐系统学习(二)--UserCF与ItemCF推荐算法

文章目录

基于近邻的推荐算法UserCF算法原理1. 构建用户物品评分表2. 相似度度量3. 计算推荐结果4. 惩罚热门物品ItemCF算法原理1. 计算物品之间的相似度1. 建立用户物品倒排表2. 构建同现矩阵3. 构建评分矩阵2. 计算推荐结果UserCF与ItemCF的对比分析

基于近邻的推荐算法

基于近邻的推荐算法是比较基础的算法,应用较为广泛,这里的近邻算法指的是协同过滤算法。包含基于用户的协同过滤算法(UserCF)基于物品的协同过滤算法(ItemCF)

协同过滤的核心思想就是基于相似性度量。

UserCF算法原理

核心思想:先找到相似用户,再找到他们喜欢的物品。

给用户推荐“和他兴趣相投的用户”喜欢的物品。

1. 构建用户物品评分表

这里以用户A、B、C、D对五个物品a、b、c、d、e的评分情况建立一张表:

2. 相似度度量

采用余弦相似度衡量用户之间的相似度,计算公式如下:

Wuv=∣N(u)∩N(v)∣∣N(u)∣∗∣N(v)∣W_{uv}=\frac{|N(u)\cap N(v)|}{\sqrt{|N(u)|*|N(v)|}}Wuv​=∣N(u)∣∗∣N(v)∣​∣N(u)∩N(v)∣​

上述公式中,u、v分别代表两个用户,N(u)表示用户u有过评分的物品集合。

下面计算用户C与其他用户的相似度:

WCA=∣{b,e}∩{a,b,d}∣∣{b,e}∣∗∣{a,b,d}=16W_{CA}=\frac{|\{b,e\}\cap \{a,b,d\}|}{\sqrt{|\{b,e\}|*|\{a,b,d\}}}=\frac{1}{\sqrt{6}}WCA​=∣{b,e}∣∗∣{a,b,d}​∣{b,e}∩{a,b,d}∣​=6​1​

WCB=∣{b,e}∩{a,c,e}∣∣{b,e}∣∗∣{a,c,e}=16W_{CB}=\frac{|\{b,e\}\cap \{a,c,e\}|}{\sqrt{|\{b,e\}|*|\{a,c,e\}}}=\frac{1}{\sqrt{6}}WCB​=∣{b,e}∣∗∣{a,c,e}​∣{b,e}∩{a,c,e}∣​=6​1​

WCD=∣{b,e}∩{b,d,e}∣∣{b,e}∣∗∣{b,d,e}=26W_{CD}=\frac{|\{b,e\}\cap \{b,d,e\}|}{\sqrt{|\{b,e\}|*|\{b,d,e\}}}=\frac{2}{\sqrt{6}}WCD​=∣{b,e}∣∗∣{b,d,e}​∣{b,e}∩{b,d,e}∣​=6​2​

所以我们得出D用户与C用户的相似度最大

3. 计算推荐结果

用户C进行评分的物品是b和c。那么接下来计算用户C对物品a、c、d的偏好程度:

P(C,a)=wCA∗3.0+WCB∗4.0+WCD∗0=2.858P(C,a)=w_{CA}*3.0+W_{CB}*4.0+W_{CD}*0=2.858P(C,a)=wCA​∗3.0+WCB​∗4.0+WCD​∗0=2.858

P(C,c)=wCA∗0+WCB∗4.5+WCD∗0=1.837P(C,c)=w_{CA}*0+W_{CB}*4.5+W_{CD}*0=1.837P(C,c)=wCA​∗0+WCB​∗4.5+WCD​∗0=1.837

P(C,d)=wCA∗3.5+WCB∗0+WCD∗3.5=4.287P(C,d)=w_{CA}*3.5+W_{CB}*0+W_{CD}*3.5=4.287P(C,d)=wCA​∗3.5+WCB​∗0+WCD​∗3.5=4.287

根据偏好程度给用户C推荐物品的顺序依次为d>a>c。

4. 惩罚热门物品

对于热门物品比如《高等数学》,并不能说明两个用户的喜好相似,所以要对热门物品进行一定的惩罚。可以用如下的公式进行计算:

Wuv=∑i∈N(u)∩N(v)1lg(1+N(i))∣N(u)∣∗∣N(v)∣W_{uv}=\frac{\sum_{i\in N(u)\cap N(v)} \frac{1}{lg(1+N(i))}} {\sqrt{|N(u)|*|N(v)|}}Wuv​=∣N(u)∣∗∣N(v)∣​∑i∈N(u)∩N(v)​lg(1+N(i))1​​

其中,N(i)是对物品i有过评分行为的用户集合。

ItemCF算法原理

核心思想:先找到用户喜欢的物品,再找到这些物品的相似物品。

给用户推荐他之前喜欢物品的相似物品。

1. 计算物品之间的相似度

1. 建立用户物品倒排表

仍采用上例中的数据,首先建立用户物品倒排表

A-a-b-d

B-a-c-e

C-b-e

D-b-d-e

2. 构建同现矩阵

同现矩阵表示同时喜欢两个物品的用户数,根据用户物品倒排表计算得到:

采用如下公式计算item之间的相似度:

wij=∣N(i)∩N(j)∣N(i)w_{ij}=\frac{|N(i)\cap N(j)|}{N(i)}wij​=N(i)∣N(i)∩N(j)∣​

分母中N(i)是喜欢物品i的用户数,分子表示同时喜欢物品i和j的用户数。

根据上述公式可以计算得到物品之间的相似度矩阵,这里略去。

3. 构建评分矩阵

用户C的评分矩阵:

2. 计算推荐结果

构建相似度矩阵之后,ItemCF通过如下公式计算用户u对物品i的兴趣:

P(u,i)=∑j∈S(i,K)∩N(u)wijrujP_{(u,i)}=\sum_{j \in S(i,K)\cap N(u)}w_{ij}r_{uj}P(u,i)​=j∈S(i,K)∩N(u)∑​wij​ruj​

N(u)是用户u喜欢的物品集合。

S(i,K)是和物品i最相似的K个物品集合。

wijw_{ij}wij​是物品i和j的相似度。$

r_{uj}$使用户u对物品j的兴趣,若用户u对物品j有过行为,则令其为1。

推荐结果为相似度矩阵和评分矩阵的乘积:

那么除去b和e之外,为用户C推荐顺序为d>a>c。

UserCF与ItemCF的对比分析

适用场景上当用户数量远远超过物品数量时,可以考虑ItemCF算法,例如购物网站和博客网站,其物品和博客数量一般相对稳定。当物品数量远超过用户数量时,可以采用UserCF算法,更适合新闻类和短视频类快消素材网站,因为其内容一般更新较快。推荐系统多样性上,从单用户多样性上考虑,ItemCF算法不如UserCF算法丰富,因为ItemCF推荐的是相似物品,覆盖面较小;而从系统多样性上考虑,ItemCF算法更能覆盖所有的物品。用户特点上,UserCF要求用户能够找到兴趣相同的邻居;而ItemCF则需要用户喜好的自相似度较大,即他自身的喜好是相似的。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。