问题描述
每个用户都有自己的喜好,会给一个电影进行打分,且每个用户的评判标准是不一样的。这里根据用户观看过的电影以及对电影的打分作为基础,为其推荐其没看过但与其看过的高分电影相似度高的电影。
实验数据
MovieLens 是历史最悠久的推荐系统。它由美国 Minnesota 大学计算机科学与工程学院的 GroupLens 项目组创办,是一个非商业性质的、以研究为目的的实验性站点。MovieLens 主要使用 Collaborative Filtering 和 Association Rules 相结合的技术,向用户推荐他们感兴趣的电影。
https://grouplens.org/datasets/movielens/
数据集:ml-latest-small.zip中包括700个用户对9000部电影的100000条评价。
主要步骤
采用二分网络模型,对ml-1m文件夹中的“用户---电影”打分数据进行建模;
用户对自己看过的电影打分1-5分,其中1分表示最不喜欢,5分表示最喜欢。假设分数大于3分的,表示用户喜欢这部电影。-
计算资源配额矩阵;
计算资源配额矩阵W中的元素wij表示产品j愿意分配给产品i的资源配额。假设一个用户选择过的商品j都有向该用户推荐其他产品i的能力。
kj表示产品j的度(被多少用户评价过),kl表示用户l的度(用户选择过多少产品)。
-
对给定用户,按照其喜欢程度,对电影进行排名,进行电影推荐;
目标用户的资源分配矢量f。初始时,将他选择过的电影对应项资源设置为1,其他为0,得到初始n维0/1向量。则最终的资源分配矢量:
将用户所有没看过的电影按照 中对应项的得分进行排序,推荐排序靠前的电影给该用户。
算法预测准确性预测;
将二部图中的边随机分为两部分,期中90%归为训练集,10%归为测试集。
对给定用户i,假设其有Li个产品是未选择的,如果在测试集中用户i选择的电影j,而电影j依据向量 被排在第Rij位,则计算其相对位置:
越精确的算法,给出的rij越小。对所有用户的rij求平均值 来量化评价算法的精确度。