一、前言
在拥有了上篇文章得出的聚类结果后,本文章将构建推荐系统,为用户个性化推荐电影.
本系列文章使用MovieLens数据集进行机器学习综合实战。本文主要记录的是用户个性化电影推荐。由于平台有点鸡肋,不能显示运行代码块的结果,大家可以在评论区留言或私信我获取有结果显示的源码。文章和代码均是小编原创,为小编的期末实训项目。仅供大家参考,请勿全篇抄袭本文!!
数据集链接:https://files.grouplens.org/datasets/movielens/ml-1m.zip
文章目录:
MovieLens个性化电影推荐系统实战(一):数据探索(数据预处理、数据可视化)_movielens数据集下载-CSDN博客
MovieLens个性化电影推荐系统实战(二):用户群体划分(聚类)-CSDN博客
资料:
MovieLens个性化电影推荐系统实战——系列文章资料-CSDN博客
文章资源,百度网盘永久有效:
链接: https://pan.baidu.com/s/1P45bvnp6ezE-0J06Wjx2sQ?pwd=csdn 提取码: csdn 复制这段内容后打开百度网盘手机App,操作更方便哦
二、协同过滤算法
协同过滤(CF)简单来说就是根据已有数据来推测未知的数据的一种算法。在推荐系统中协同过滤算法一般是指在海量用户中发掘一小部分和你品味比较类似的,在协同过滤中,这些用户成为你的邻居,从而基于这些邻居的信息为你推荐商品。基于启发式的协同过滤算法可以分为基于用户的协同过滤算法和基于物品的协同过滤算法。
协同过滤算法核心步骤:收集用户偏好;找到相似的用户或物品;计算并推荐。
在协同过滤中,一个重要的环节就是如何选择合适的相似度计算方法,常用的相似度计算方法包括皮尔逊相关系数等。
另一个重要的环节就是计算用户对未评分商品的预测分值。
三、矩阵分解算法
矩阵分解算法,同时兼具了协同过滤,隐语义分析和有监督学习的特性,加上矩阵分解的易实现性和高拓展性,成为推荐领域非常经典的算法。
说到矩阵分解,往往最先想到的是解析几何中奇异值分解(SVD)这一概念。实际上,推荐系统中最初的矩阵分解算法也正是源于此。我们可以对用户-项目矩阵A直接进行矩阵分解。
然后通过选取用品序列中前k大的奇异值,就可以对原先较大的矩阵A进行压缩。要预测用户对物品的评分时,便可以直接从矩阵A中相对应的元素得到。其中,矩阵A存储用户对物品的评分。
四、用户个性化推荐
1、基于近邻的协同过滤算法
使用surprise库中的四种基于近邻的模型,分别为KNN基础版(KNNBasic)、KNN均值(KNNWithMeans)、KNN中心化(KNNWithZScore)、KNN基准线(KNNBaseline)。使用网格搜索这四种模型的最佳超参数,然后进行模型的对比。
四种模型网格搜索的超参数:k为邻域数量;name为相似度计算方法的名称;user_based为基于用户或基于电影进行相似度计算。
实验结果如下表所示:
近邻的模型实验结果
模型 |
RMSE1 |
RMSE2 |
FCP |
MAE |
KNNBasic |
0.907 |
0.899 |
0.602 |
0.692 |
KNNWithMeans |
0.890 |
0.884 |
0.655 |
0.674 |
KNNWithZScore |
0.893 |
0.888 |
0.658 |
0.670 |
KNNBaseline |