推荐系统(二)协同过滤
2017-02-19 17:56
281 查看
今天我们来看看推荐算法中最常见的协调过滤,并且把UserCF和ItemCF放在一起比较,基于用户的协同过滤算法就是推荐和他相似的用户的喜欢的物品,基于物品的协同过滤算法就是推荐他之前喜欢的物品相似的物品。这两种都可以算是基于领域的算法,简单的来说,一种是找到相似用户,一种是相似物品。
(一) 首先来说下相似度的计算
我们一般用余弦相似度计算
1. 基于用户的相似度计算:
Wuv=
但是我们还要惩罚用户u和用户v共同兴趣列表中热门物品对他们的相似度影响。因为如果两个人都买了《新华字典》,并不能说明他们的兴趣相似,如果两个人都买了《数据挖掘导论》,则说明他们兴趣度相似。
则改进的相似度公式为:
Wuv=
下面则是计算用户U对物品i的感兴趣程度:
P(u,v)=
其中,选择了与用户最接近的K个用户,Wui是用户u和用户v的相似度,Rvi是用户v对物品i的兴趣,因为使用的都是隐反馈数据所以都是1。
2. 基于物品的相似度计算
(1)下面的公式表示物品和物品之间的相似度:
Wij=
其中,分母是喜欢i物品的用户数,分子是同时喜欢物品i和物品j的用户数。可以理解成喜欢物品i的用户中有多少比例的用户是也喜欢物品j。但是这个却存在一个问题,如果物品j很热门,则该比例接近1,所以该公式会造成任何一个物品和热门物品都会有很大的相似度,为了避免推荐出热门物品,我们对公式进行了改进,惩罚了物品j的权重。
改进后的公式为:Wij=
如果两个物品属于很多用户的兴趣列表,那么它们可能属于同一个领域,因而有很大的相似度。
该公式还有一个改进的地方,因为每个用户的贡献度是不一样的,有的用户虽然活跃,但并不是出于自己的兴趣,比如当当网的进货员,所以这个用户对于他所买的书的两两相似度应该远远小于一个只买了几本书的青年。这种活跃用户的贡献度应该小于不活跃的用户,则公式为:
Wij=
最后计算用户u对物品j的兴趣:
Pij=
其中,Wij是j和i之间的相似度,Rui是用户对物品i的兴趣。对于隐反馈的数据,如果用户u对物品i有过行为,可记为1。
(2)物品相似度的归一化
归一化的好处不仅仅在于推荐的准备度,还提高可覆盖率和多样性,举个例子,不同类之间的相似度较小,同类之间的相似度较大,比如A类的相似度是0.5,B类的是0.6,那么对于一个喜欢5个A类和5个B类的人来说,就会推荐B,但是这样显然不是最好的推荐,在进行归一化后,即除以最大值,就会推荐A类和B类,就会提高了推荐的多样性。
(二)、userCF和itemCF的综合比较
UserCF需要一个很大的用户相似度矩阵,而itemCF需要一个很大的物品相似度矩阵,对于现在的互联网,用户数是远远大于物品数,并且物品的相似度相对于用户的相似度要稳定些,但是对于新闻类的推荐,新闻的更新非常快,对于ItemCF相似度的表也需要更新的很快,这在技术上很难实现,而对于新加入的用户,我们也可以给他们推荐最热门的新闻。UserCF的时效性强,可以用于用户个性化不太明显的领域,而itemCF长尾物品丰富,可用于用户个性化需求强烈的领域。
(一) 首先来说下相似度的计算
我们一般用余弦相似度计算
1. 基于用户的相似度计算:
Wuv=
但是我们还要惩罚用户u和用户v共同兴趣列表中热门物品对他们的相似度影响。因为如果两个人都买了《新华字典》,并不能说明他们的兴趣相似,如果两个人都买了《数据挖掘导论》,则说明他们兴趣度相似。
则改进的相似度公式为:
Wuv=
下面则是计算用户U对物品i的感兴趣程度:
P(u,v)=
其中,选择了与用户最接近的K个用户,Wui是用户u和用户v的相似度,Rvi是用户v对物品i的兴趣,因为使用的都是隐反馈数据所以都是1。
2. 基于物品的相似度计算
(1)下面的公式表示物品和物品之间的相似度:
Wij=
其中,分母是喜欢i物品的用户数,分子是同时喜欢物品i和物品j的用户数。可以理解成喜欢物品i的用户中有多少比例的用户是也喜欢物品j。但是这个却存在一个问题,如果物品j很热门,则该比例接近1,所以该公式会造成任何一个物品和热门物品都会有很大的相似度,为了避免推荐出热门物品,我们对公式进行了改进,惩罚了物品j的权重。
改进后的公式为:Wij=
如果两个物品属于很多用户的兴趣列表,那么它们可能属于同一个领域,因而有很大的相似度。
该公式还有一个改进的地方,因为每个用户的贡献度是不一样的,有的用户虽然活跃,但并不是出于自己的兴趣,比如当当网的进货员,所以这个用户对于他所买的书的两两相似度应该远远小于一个只买了几本书的青年。这种活跃用户的贡献度应该小于不活跃的用户,则公式为:
Wij=
最后计算用户u对物品j的兴趣:
Pij=
其中,Wij是j和i之间的相似度,Rui是用户对物品i的兴趣。对于隐反馈的数据,如果用户u对物品i有过行为,可记为1。
(2)物品相似度的归一化
归一化的好处不仅仅在于推荐的准备度,还提高可覆盖率和多样性,举个例子,不同类之间的相似度较小,同类之间的相似度较大,比如A类的相似度是0.5,B类的是0.6,那么对于一个喜欢5个A类和5个B类的人来说,就会推荐B,但是这样显然不是最好的推荐,在进行归一化后,即除以最大值,就会推荐A类和B类,就会提高了推荐的多样性。
(二)、userCF和itemCF的综合比较
UserCF需要一个很大的用户相似度矩阵,而itemCF需要一个很大的物品相似度矩阵,对于现在的互联网,用户数是远远大于物品数,并且物品的相似度相对于用户的相似度要稳定些,但是对于新闻类的推荐,新闻的更新非常快,对于ItemCF相似度的表也需要更新的很快,这在技术上很难实现,而对于新加入的用户,我们也可以给他们推荐最热门的新闻。UserCF的时效性强,可以用于用户个性化不太明显的领域,而itemCF长尾物品丰富,可用于用户个性化需求强烈的领域。
相关文章推荐
- 协同过滤介绍和简单推荐系统的实现
- 协同过滤介绍和简单推荐系统的实现
- 数据挖掘-matlab实现基于MovieLens数据集的协同过滤电影推荐系统
- 推荐系统:参数协同过滤
- 协同过滤推荐系统的R实现
- 【推荐系统】协同过滤之基于用户的最近邻推荐
- 推荐系统之协同过滤概述(转载)
- 推荐系统-协同过滤
- 推荐系统学习:协同过滤实现
- 协同过滤 推荐系统实战
- 推荐系统:协同过滤 之 Item-based Collaborative Filtering
- 推荐系统之协同过滤实现
- 推荐系统之协同过滤概述
- 推荐系统之协同过滤概述(转载)
- 协同过滤介绍和简单推荐系统的实现
- 推荐系统之协同过滤的原理及C++实现
- 协同过滤Item-based算法实现电影推荐系统
- Facebook推荐系统采用的是流行的协同过滤5
- 数据挖掘、数据分析之协同过滤、推荐系统、关联分析
- 推荐系统——协同过滤学习