Datawhale学习打卡课节1: Paddle开发深度学习模型快速入门 NCF

论文阅读笔记-Neural Collaborative Filtering

WWW’17 Xiangnan He et al.

文章内容

前置知识

  • 协同过滤CF
    地位:推荐系统经典方法之⼀,甚至有人把推荐系统和协同过滤画等号。
    思想:根据历史交互行为找到⼀群口味很相似的用户;然后根据相似的用户再和你没见过的物品产生了什么交互,把这些推荐给你。这就是人们常说的人以群分,你是什么人,你就会遇到什么人,构成群体。在群体内互帮互助,利用集体智慧推荐。
  • 矩阵分解MF
    地位:推荐系统Base Line方法之⼀
    宏观:把user–item交互矩阵分为两个子矩阵,用两个子矩阵相乘来重构关联矩阵,优化目标是使重构矩阵和真实矩阵之间的误差最小。常用的损失函数是均方误差。
    微观:每个user/item被投影到⼀个潜在空间,用潜在的向量表示。

本文切入点

  1. 深度神经网络火热的当下,协同过滤方面之前还是对latent feature做内积来建模user-item交互,得到预测打分。

  2. 内积在复杂的交互行为建模中,存在如下图所示的局限性,即只靠单纯的线性变换会存在⼀定的排序误差。
    线性变换局限性例子

  3. 深度神经网络火热的当下,协同过滤方面之前还是对latent feature做内积来建模user-item交互,得到预测打分。
    内积在复杂的交互行为建模中,存在如下图所示的局限性,即只靠单纯的线性变换会存在⼀定的排序误差。
    深度神经网络理论上可以拟合任意函数,可以更好地建模user-item之间复杂的交互过程。

本文贡献

本文用深度神经网络代替内积,实现对user-item的交互建模,并设计了⼀个通用的Neural Collaborative Filtering(NCF),在此基础上提出了三种实例: Generalized Matrix Factorization(GMF),Multi-Layer Perceptron(MLP)和Neural Matrix Factorization(NeuMF)。

通用框架NCF

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Paddle实践

好的编程习惯

  1. import 放最开头
  2. config统一放置,防止漏更新

一些小点

  • 计算用户的交互次数,把太少记录的用户认为是噪音数据,剔除掉,以求模型学到稳定的表征。
    df['user_count'] = df['user_id'].map(df['user_id'].value_counts())
    df = df[df['user_count']>20].reset_index(drop=True)
    
  • 训练用的是1:3采样,测试用的是1:100
  • 学到了pandas可以直接出rank
    
    test_df['ranking'] = test_df.groupby(['user_id'])['y_pre'].rank(method='first', ascending=False)
    
  • 别的跟torch几乎没差别
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>