使用评分+电影类型信息进行电影推荐(附代码)

本篇中的推荐算法中电影相似度矩阵的建立除了依据原有的用户-电影评分信息之外,还加入了电影相似度信息弥补矩阵的稀疏性。本文主要的思想参考来源于论文《基于评分偏好和项目属性的协同过滤算法》。具体实验过程如下:

1) 读取电影信息表及电影评分数据

本文使用的MovieLens_100K数据源地址:https://grouplens.org/datasets/movielens/100k/

使用评分+电影类型信息进行电影推荐(附代码)_第1张图片

后续为了验证模型的准确性,需要划分训练数据和测试数据。数据源中已经提供了5种划分方法,这里我们使用第一组训练数据和测试数据。

使用评分+电影类型信息进行电影推荐(附代码)_第2张图片

2) 对用户评分数据进行归一化,修正用户-评分矩阵

因为每个人的评分规则不一样,所以需要对用户-评分数据进行归一化。此次使用的归一化公式为:

使用评分+电影类型信息进行电影推荐(附代码)_第3张图片

使用评分+电影类型信息进行电影推荐(附代码)_第4张图片

 3) 根据电影属性信息,构建物品相似度矩阵

使用评分+电影类型信息进行电影推荐(附代码)_第5张图片

使用评分+电影类型信息进行电影推荐(附代码)_第6张图片

4) 根据修正的用户-评分矩阵,建立物品相似度矩阵

物品相似度计算公式如下(不过这里先暂时不考虑时间权重因子):

使用评分+电影类型信息进行电影推荐(附代码)_第7张图片

  • 先把需要用到的数据拼接到一张DataFrame里

使用评分+电影类型信息进行电影推荐(附代码)_第8张图片

  •  依据用户评分计算电影相似度

使用评分+电影类型信息进行电影推荐(附代码)_第9张图片

5) 仅依据评分偏好信息进行电影推荐

这篇论文的创新点在于加入了电影属性信息来构造相似度矩阵,这一部分不考虑先不考虑电影相似度信息(主要是为了跟后续实验作对比)。这里TOP-N及召回率(Recall)的计算方式参考https://blog.csdn.net/yeshang_lady/article/details/105493206

使用评分+电影类型信息进行电影推荐(附代码)_第10张图片

最后的总体召回率如下:

使用评分+电影类型信息进行电影推荐(附代码)_第11张图片

6) 依据评分+属性信息进行电影推荐

先依据评分+属性信息构造电影相似度矩阵,然后剩下过程与第5步类似。

使用评分+电影类型信息进行电影推荐(附代码)_第12张图片

 结果发现,加了电影属性之后,召回率反而下降了。论文里面当i=0.05时召回率提升很大。首先,我这里用的召回率计算方法和论文里的召回率计算方法不同。其次,这里只用了一组训练集和测试集。

你可能感兴趣的:(机器学习)