推荐系统-基于userCF推荐模型

时间:2017年5月
出处:http://blog.csdn.net/csearch/article/details/71244282
声明:版权所有,转载请联系作者并注明出


1.UserCF原理

基于用户的协同过滤推荐算法先使用统计技术寻找与目标用户有相同喜好的邻居,然后根据目标用户的邻居的喜好产生目标用户的推荐。
基本原理就是利用用户访问行为的相似性来互相推荐用户可能感兴趣的资源,如下图所示:
这里写图片描述
上图示意出基于用户的协同过滤推荐机制的基本原理,假设用户A喜欢物品A、物品C,用户B喜欢物品B,用户C喜欢物品A、物品C和物品D;
从这些用户的历史喜好信息中,我们可以发现用户A和用户C的口味和偏好比较类似的,同事用户C还喜欢物品D,那么我们可以推断用户A可能也喜欢物品D,因此可以将物品D推荐给用户A。

基于用户协同过滤算法主要包括两个步骤:
(1)找到和目标用户兴趣相似的用户集合。
(2)找到这个集合中的用户喜欢的,且目标用户没有听说过的物品推荐给目标用户。

2.Python版本代码示例

2.1.读取数据集

from collections import defaultdict
# data_path = "../data/ml-1m/ratings.dat";sep = "::"
data_path = "../data/ml-100k/u1.base";sep = "\t"
fp = open(data_path, "r")
user2item_matrix = defaultdict(defaultdict) # 用户到物品的评分矩阵
item2user_matrix = defaultdict(defaultdict) # 物品到用户的倒排评分矩阵
# UserID \t MovieID \t Score \t Time
for line in open(data_path):
    lines = line.strip().split(sep)
    userID, movieID, score = lines[0],lines[1],lines[2]
    user2item_matrix[userID][movieID] = float(score)
    item2user_matrix[movieID][userID] = float(score)
fp.close()
print("totol users:",len(user2item_matrix))
print("totol items:",len(item2user_matrix))

输出
(‘totol users:’, 943)
(‘totol items:’, 1650)

2.2.计算用户-用户相似度矩阵

步骤(1)的关键就是计算两个用户的兴趣相似度,协同过滤算法主要利用行为的相似度来计算兴趣的相似度。
给定用户u和用户v,令N(u)表示用户u曾经有过正反馈的物品集合,令N(v)为用户v曾经有过正反馈的物品集合。
那么,可以通过如下的Jaccard公式简单地计算u和v的兴趣相似度:

w
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值