python10大核心算法:基于用户的协同过滤推荐算法实践
python10大核心算法:基于用户的协同过滤推荐算法实践Step 3:建立与目标用户最相近的Top K用户列表Step 2.2:建立movieid到userid的排查表Step 2:建立用户评分字典和movieid到userid的排查表Step 2.1:建立用户评分字典形如userid_dict[1]=[(2 3.5) (29 3.5)...],表示userid为1的用户对movieid为2的电影评分为3.5,对movieid为29的电影评分为3.5,以此类推
前言在《推荐系统系列之协同过滤》笔记中,小编简单介绍了下基于用户和物品的协同过滤,现在小编将基于MovieLens数据来实践一把,如有错误烦请更正哦!
一、主要步骤Step 0:加载包
Step 1:读取数据
输出的数据格式为数据框,三列,分别是userid, movieid和rating
Step 2:建立用户评分字典和movieid到userid的排查表
Step 2.1:建立用户评分字典
形如userid_dict[1]=[(2 3.5) (29 3.5)...],表示userid为1的用户对movieid为2的电影评分为3.5,对movieid为29的电影评分为3.5,以此类推
Step 2.2:建立movieid到userid的排查表
Step 3:建立与目标用户最相近的Top K用户列表
Step 3.1:建立与目标用户所看过的电影有交集的用户列表
先筛选出与目标用户所看过的电影有交集的用户列表,然后再计算目标用户与这些用户的相似性,目的是为了避免计算目标用户与所有用户两两之间的相似性,对于没有交集的用户,相似性为0,可降低计算量
Step 3.2:定义用户间的相似性度量方式
此处采用夹角余弦 衡量数据是两用户对共同浏览过的电影的评分
Step 3.3:提取相似性Top k的用户名单
Step 4:针对最相似用户看过的电影进行打分
这部分的打分规则灵活性比较大,最简化的一种打分规则是看过该电影的最相似用户的相似度之和,另外若要考虑到用户对该电影的喜爱程度,可将打分规则修改成看过该电影的最相似用户的相似度和该用户对该电影的打分的乘积的和,下面的函数仅考虑这两种打分方法