Press "Enter" to skip to content

Python基于神经协同过滤和深度学习实现的电影推荐服务

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

资源下载地址:https://download.csdn.net/download/sheziqiong/86158890

 

资源下载地址:https://download.csdn.net/download/sheziqiong/86158890

 

中间件实现技术课程作业——电影推荐服务

 

1.概述:

 

本project实现了一个web服务,基于深度学习实现电影推荐

数据集:movielens
推荐算法:神经协同过滤(neural collaborative filtering)
深度学习框架:pytorch
开发语言:python 3.7
web服务框架:django
数据库:mongodb

2.流程图

 

 

3.推荐算法介绍

 

3.1 相关论文

 

新加坡国立大学 何向南 团队的论文

 

Xiangnan He, Lizi Liao, Hanwang Zhang, Liqiang Nie, Xia Hu and Tat-Seng Chua (2017). Neural Collaborative Filtering. In Proceedings of WWW ’17, Perth, Australia, April 03-07, 2017.

 

https://arxiv.org/abs/1708.05031

 

https://github.com/hexiangnan/neural_collaborative_filtering

 

3.2 协同过滤

 

使用用户user与item之间的交互记录,计算用户之间相似度,用相似用户的对某个item的评分,预测某个用户对某个item的评分

 

 

3.3 矩阵分解

 

 

矩阵分解(MF,Matrix Factorization),为每个user和item找到一个隐向量,问题变为:

 

 

这里的 K表示隐式空间(latent space)的维度。正如我们所看到的,MF模型是用户和项目的潜在因素的双向互动,它假设潜在空间的每一维都是相互独立的并且用相同的权重将它们线性结合。因此,MF可视为隐向量(latent factor)的线性模型。

 

论文中给出了一个例子来说明这种算法的局限性:

 

 

1(a)是user-item交互矩阵,1(b)是用户的隐式空间,论文中强调了两点来理解这张图片:

 

1)MF将user和item分布到同样的隐式空间中,那幺两个用户之间的相似性也可以用二者在隐式空间中的向量夹角来确定。

 

2)使用Jaccard系数来作为真实的用户相似性。

 

通过MF计算的相似性与Jaccard系数计算的相似性也可以用来评判MF的性能。我们先来看看Jaccard系数

 

上面的示例显示了MF因为使用一个简单的和固定的内积,来估计在低维潜在空间中用户-项目的复杂交互,从而所可能造成的限制。解决该问题的方法之一是使用大量的潜在因子 K (就是隐式空间向量的维度)。然而这可能对模型的泛化能力产生不利的影响(e.g. 数据的过拟合问题),特别是在稀疏的集合上。论文通过使用DNN从数据中学习交互函数,突破了这个限制。

 

3.4 NCF

 

本文先提出了一种通用框架:

 

 

针对这个通用框架,论文提出了三种不同的实现,三种实现可以用一张图来说明:

 

 

4.部署与运行

 

4.1 django

 

demo项目,未使用nginx等服务器程序,直接run 即可运行

 

python manage.py runserver

 

调用接口

 

http://127.0.0.1:8000/getRecMovie/?uid=17

 

4.2 mongodb

 

安装MongoDB并配置如下 
mongodb.conf #端口号 
port = 27017 #数据目录
dbpath = /usr/local/mongodb/data/db
 \#日志目录
 logpath = /usr/local/mongodb/data/logs/mongodb.log 
 #设置后台运行行 
 fork = true
 \#日志输出方式
 logappend = true
 \#开启认证
 \#auth = true

 

4.3 训练

 

run NCF-master下的main.py即可

 

4.4 预测

 

run NCF-master下的predict.py即可

 

4.5 输出训练结果到mongodb

 

run NCF-master下的mongodb_util.py即可

 

5.可优化项目

 

5.1 流程

 

使用产业界成熟的方案(spark等),实现更自动化的更新输入数据和模型更新,

 

5.2 代码质量

 

5.3 embedding的预训练与模型调参

 

资源下载地址:https://download.csdn.net/download/sheziqiong/86158890

 

资源下载地址:https://download.csdn.net/download/sheziqiong/86158890

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注