大数据,机器学习,人工智能机器学习与数据挖掘程序猿阵线联盟-汇总各类技术干货

UserCF原理及其实现

2019-11-06  本文已影响0人  七八音

基于用户的协同过滤的原理及其实现.使用数据来自MoviesLens.之后行为结构,先介绍MoviesLens数据集,然后介绍基于用户的协同过滤UserCF算法原理,最后使用MoviesLens数据集实现一个简单的电影推荐系统.

MoviesLens数据集

MovieLens数据集包含多个用户对多部电影的评分数据,也包括电影元数据信息和用户属性信息。这里使用ml-1m数据,解压后有4个文件:movies.dat, users.dat, ratings.dat以及README介绍文件.

movies.dat是电影数据信息文件,表明每个电影的信息,每行数据格式为:

MovieID::Title::Genres
# 电影编号::电影标题::电影分类

users.dat是用户信息文件,包含用户的ID,性别,年龄,职业,邮编地址

UserID::Gender::Age::Occupation::Zip-code

ratings.dat是用户对电影评分数据文件.每行数据格式为:

UserID::MovieID::Rating::Timestamp

UserCF原理

基于用户的协同过滤算法.基本思想是针对用户u来说,先根据用户历史行为数据(这里指用户的电影评分数据)找到跟用户u相似的一个用户集,然后对用户u没有评分的电影,使用用户集的行为数据,根据用户u与用户群体中用户的相似度做加权平均,得到一个用户u没有看过电影的评分,根据评分排序,选择topK个电影作为用户u的推荐结果.

实现UserCF主要关注几个点:

users-items矩阵

通过ratings.dat文件构建users-items矩阵,行表示用户u对所有电影的评分,范围是1-5;如果为0表示用户u还没有看过该电影

用户相似度计算

通过用户之间的相似度计算,可以得到一个用户相似度矩阵.

电影评分

对于用户u,

  1. 根据用户相似度矩阵选择topK相似用户,形成集合S;
  2. 集合S中的用户评分过的电影中筛选掉用户u看过的电影,得到候选电影集N;
  3. 用户集合S和候选电影集N,推测用户u对没看过电影j的评分公式为
    • 其中,S(u,K)表示和用户u最相似的topK个用户
    • N(i):表示候选电影集

代码实现

实现效果

流程

为了实现上述的效果,我们需要读入电影数据movies.dat以及用户评分数据ratings.dat.

具体参见代码:repo地址

Code References

推荐系统实战(二)--movieslens数据集实现UserCF算法

上一篇 下一篇

猜你喜欢

热点阅读