<h2>项目名称:基于Neural Collaborative Filtering的影视推荐</h2>
<br>
<h3>1.项目简介:</h3>
----根据2017年WWW顶会论文(Neural Collaborative Filtering,[论文地址](https://arxiv.org/pdf/1708.05031.pdf),基于神经网络的协同滤波),阅读并掌握论文中的三种基于神经网络的模型:GMF(Generalized Matrix Factorization)、MLP(Multi-Layer Perceptron)、NeuMF(Fusion of GMF and MLP)。<br>
----基于对论文模型的理解,完成所提供pytorch代码的三个缺失部分,每个缺失部分对应一个项目子任务,补充完善后最终得到可运行成功的三个推荐模型。<br>

<h3>2.作业提交:</h3>
----上传完成的项目代码文件一份和作业小报告一份。报告中含有缺失代码的完善版本,含有三个模型运行成功的截屏(如下图所示)和最后运行成功的实验性能结果。<br>

<img src = '123.png'></img><br>

<h3>3.项目准备:</h3>
<h4>---3.1环境搭建</h4>
&emsp;conda create -n py36_torch14 python==3.6.10<br>
&emsp;conda activate py36_torch14<br>
&emsp;conda install pytorch<br>
&emsp;pip install pandas scipy joblib tqdm<br>
<h4>---3.2数据集下载</h4>
&emsp;[数据集](http://snap.stanford.edu/data/amazon/productGraph/categoryFiles/reviews_Movies_and_TV_5.json.gz)(约700M)<br>
&emsp;[百度网盘](https://pan.baidu.com/s/1kB4HGyfBjl5ZIGcJPWezNA)(提取码:bc2y)<br>
&emsp;数据集下载后存放在代码所在的根目录下即可<br>

<h3>4.项目实施:</h3>
<h4>---4.1第一步:数据处理</h4>
<br>&emsp;执行Python prepare_data.py <br>
&emsp;在当前目录下生成数据文件。<br>
<h4>---4.2第二步:运行GMF模型(含任务1)</h4>
<br>&emsp;任务1:根据论文中GMF模型描述,补充完善gmf.py文件中GMF类forward前传函数输出值preds的计算过程,请用2-3行代码补充完整。 <br>
&emsp;补充完善后,执行Python gmf.py,可根据需要设置超参数。<br><br>
<img src = '234.png')</img><br>
<h4>---4.3第三步:运行MLP模型(含任务2)</h4>
<br>&emsp;任务2:根据论文中MLP模型的描述,针对mlp.py文件中MLP类__init__函数的self.out网络层所在行,填入被抠去的两个数字,实现正确的网络输出层。 <br>
&emsp;补充完善后,执行Python mlp.py,可根据需要设置超参数。<br><br>
<img src = '345.png')</img><br>
<h4>---4.4第四步:运行NeuMF模型(含任务3)</h4>
<br>&emsp;任务3:根据论文中NeuMF模型的描述,针对neumf.py文件中NeuMF类forward函数的emb_vector所在行,选择用代码中的两个张量去替换掉’tensor1’和’tensor2’,实现正确的级联向量。 <br>
&emsp;补充完善后,执行Python neumf.py,可根据需要设置超参数。<br><br>
<img src = '567.png')</img><br>
<h4>---4.5第五步:实验和结果对比展示</h4>
<br>&emsp;感兴趣的同学可根据run_experiments.sh脚本的参数,利用三个模型进行多次实验,调整模型的超参数,使用results_summary.ipynb对模型的实验结果进行分析和展示。 <br>



&emsp;