机器学习-推荐系统之基于用户的协同过滤

本文介绍了基于用户的协同过滤推荐系统,阐述了其基本原理和方法,包括用户相似性计算(皮尔逊、余弦、杰卡德相关系数),并详细讲解了User CF的实现步骤,如构建相似度矩阵、推荐指数函数,以及面临的数据稀疏性和用户兴趣变化等局限性。
摘要由CSDN通过智能技术生成

人以群分 – 基于用户的协同过滤(User Collaborative Filtering,简称User CF)

生活中可能有这样的朋友:他喜欢的书、电影,你也喜欢;
他喜欢的衣服款式、美食餐厅你也十分推崇;
……
在这里插入图片描述

基本原理:

  • 通过用户对不同内容(物品)的行为,来评测用户之间的相似性,找到“邻居”基于这种相似性做出推荐:
  • 这种推荐的本质是,给相似的用户推荐其他用户喜欢的内容;
  • 这就是我们经常看到的:和你类似的人还喜欢如下内容。
    在这里插入图片描述

基本方法:

① 找到和目标用户兴趣相似的用户集合(关键在于计算两个用户之间的兴趣相似度);
② 找到这个集合中的用户所喜欢的,并且目标用户没有听说过的物品推荐给目标用户。

如何找到和你相似的人?

类比于KNN中K个“邻居”的寻找方法——通过距离衡量相近程度。
在这里插入图片描述在这里插入图片描述在这里插入图片描述 闵 科 夫 斯 基 距 离 闵科夫斯基距离

用户相似性计算指标:

皮尔逊相关系数

在这里插入图片描述

余弦相关系数

在这里插入图片描述

杰卡德相关系数

在这里插入图片描述

User CF步骤

在这里插入图片描述• 读入用户评分
• 计算用户相似性
• 根据用户相似性排序选择前K个邻居
• 根据K个邻居的评分项目预测用户评分
• 选择预测评分最高的前N个项目作为推荐列表

代码实现

import numpy as np
import pandas as pd
#读取数据文档
df = pd.read_csv('example.csv')
df.head()

在这里插入图片描述

#建立关系矩阵rating
dfpivot= df.pivot_table(index="用户id",columns="物品id",values="评分",fill_value=0)
dfpivot

在这里插入图片描述

#获取关系矩阵
freq_matrix = dfpivot.values
freq_matrix
array([[1, 0, 2, 0, 0, 1],
       [0, 0, 4, 2, 0, 0],
       [3, 5, 0, 4, 4, 3],
       [0, 4, 1, 0, 3, 0],
       [0, 0, 2, 5, 4, 3],
       [5, 0, 0, 0, 2, 0],
       [0, 4, 3, 0, 0, 0],
       [0, 0, 0, 4, 0, 2],
       [5, 0, 4, 0, 0, 0],
       [0, 2, 3, 0, 0, 0],
       [4, 1, 5, 2, 2, 4],
       [0, 3
  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值