基于用户的协同过滤推荐算法

------基于用户的协同过滤推荐算法-------

基本思路:
    选取某个用户A的具有相似品味的邻居用户集合, 
    从邻居用户集合的历史评分以及用户A的历史评分综合考虑预测用户A给其未评价过的项目的评分结果,
    选取预测分大于指标的项目推荐给用户A.

1.选择的查找相似用户用到的算法:
     k近邻算法、皮尔森相关系数法
    (1)皮尔逊相关系数是余弦相似度在维度值缺失情况下的一种改进:
    https://www.cnblogs.com/charlesblc/p/8336765.html
    (2)k近邻选择时,用到推排序,选取相似度最高的前k个
   【1】k近邻(knn)和k-means聚类,有什么区别,哪一个比较适合用于协同过滤推荐系统?
   【2】需要做svd吗?
2.预测评分的策略是:【我自己对这个地方有点疑问,这种预测方式是否可行?】
    计算相似用户对该项目的评分的加权平均分加上用户的历史平均分
3.推荐结果选取的策略是:【是否有更好的方式?】
    选取预测分数大于用户历史平均分的项目作为推荐结果
4.评价指标是:【是否还需要其他评价指标,如果有多个评价指标,如何选取较优方案】
    计算系统平均绝对误差 = sum(每个用户的平均绝对误差)/用户总数

Tips:
1.数据集:movieLens,从训练集中得出相似用户,去预测测试集中的评分,再与实际评分作对比
2.环境:
    (1)语言:python 3.8, 用到的库:【几乎没用到什么库】;
    (2)IDE:pycharm;
    (3)系统:Windows 7;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
我可以为您提供基于用户协同过滤推荐算法的代码示例。以下是一个简单的Python代码示例: ```python import numpy as np def get_user_ratings(user_id): # 获取特定用户的评分数据 # 返回值是一个字典,键是电影id,值是评分 pass def get_movie_ratings(movie_id): # 获取特定电影的评分数据 # 返回值是一个字典,键是用户id,值是评分 pass def get_similar_users(user_id, num_users, min_common_movies): # 获取与给定用户评分相似的用户列表 # num_users是返回的用户数量 # min_common_movies是这些用户必须共同评价的电影数量 pass def get_recommendations(user_id, num_movies): # 获取给定用户的电影推荐列表 # num_movies是返回的电影数量 user_ratings = get_user_ratings(user_id) similar_users = get_similar_users(user_id, num_users=10, min_common_movies=5) # 计算权重加权平均评分 weighted_ratings = [] for movie_id in range(num_movies): movie_ratings = [] for similar_user in similar_users: if movie_id in get_user_ratings(similar_user): movie_ratings.append(get_user_ratings(similar_user)[movie_id]) if len(movie_ratings) >= 3: movie_mean = np.mean(movie_ratings) # 计算给定用户对该电影的评分偏差 deviation = 0 if movie_id in user_ratings: deviation = user_ratings[movie_id] - movie_mean weighted_ratings.append((movie_id, movie_mean + deviation*0.1)) # 对加权评分进行排序,并返回前num_movies个电影 weighted_ratings.sort(reverse=True, key=lambda x: x[1]) return [movie_id for (movie_id, _) in weighted_ratings[:num_movies]] ``` 该示例代码实现了一个简单的协同过滤推荐算法,并使用Python的numpy库进行矩阵计算。但是需要注意的是,实际应用中可能需要对该算法进行更多的优化和改进,以提高推荐准确度和效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值