Learing Notes

  • 首页
  • 归档
  • 分类
  • 标签
  • 关于
  • 搜索

BPR: Bayesian Personalized Ranking from Implicit Feedback

发表于 2018-09-27 | 分类于 论文阅读笔记

摘要

物品推荐是在物品集合中预测出个性排序列表的一项任务。从隐式反馈中做个性推荐的方法有很多,比如矩阵分解、k近邻等。虽然这些方法都可用于物品个性化推荐,但是他们都没有直接对排序做优化。这篇论文提出了一种通用的应用于个性化排序的优化方法,这种方法称为BPR-OPT。BPR-OPT是对问题做贝叶斯理论分析后,通过最大化后验概率进行排序。针对BPR-OPT模型,论文提出了一种基于SGD的自采样学习算法。
BPR是一种基于矩阵分解的排序算法,与funkSVD之类的算法比,它不是做全局的评分优化,而是针对每一个用户自己的商品喜好分贝做排序优化。因此在迭代优化的思路上完全不同。同时对于训练集的要求也是不一样的,funkSVD只需要用户物品对应评分数据二元组做训练集,而BPR则需要用户对商品的喜好排序三元组做训练集。
在实际产品中,BPR之类的推荐排序在海量数据中选择极少量数据做推荐的时候有优势,因此在某宝某东等大厂中应用也很广泛。

BPR模型

模型介绍

BPR基于矩阵分解模型,给定用户集U和物品集I,以及稀疏的用户-物品交互矩阵X,通过矩阵分解得到低维的用户矩阵W(|U|k)和物品矩阵H(|I|k)。通过优化算法使得X^尽可能与实际的X相近。

image

用户u对物品i的喜好程度通过用户向量wu和物品向量hi计算得到。
image

BPR优化算法

BPR算法中,三元组<u,i,j>表示对于用户u来说,物品i的排序比j靠前,>u表示用户u对应的所有物品的全序关系。BPR基于最大化估计P(W,H|>u)来求解模型参数W,H。

image

论文做了两个假设:

  1. 每个用户之间的偏好行为相互独立,即用户u在商品i和j之间的偏好和其他用户无关。
  2. 同一用户对不同物品的偏序相互独立,也就是用户u在商品i和j之间的偏好和其他的商品无关。

基于假设一,有:

image

那么现在求解分成两部分。

  • 第一部分

基于假设二,有:

image

P(i >u j|θ)可以通过以下式子求解:

image

σ(x)是sigmoid函数,σ里面的项我们可以理解为用户u对i和j偏好程度的差异,那么最简单的计算方法就是差值。

  • 第二部分
    论文使用贝叶斯假设,假设该概率分布符合正态分布。

image

基于以上推导,最终的最大后验估计函数为:

image

A Hybrid Collaborative Filtering Model with Deep Structure for Recommender Systems,AAAI 2017

发表于 2018-08-09 | 分类于 论文阅读笔记

背景

这篇论文是携程的研究人员发表的。论文指出,虽然已经有不少协同过滤方法应用了辅助信息来缓解冷启动和数据稀疏的问题,但是由于评分矩阵和辅助信息的稀疏性,导致学习到的潜在因子不是非常有效。为了解决这个问题,论文提出一种混合深度协同过滤模型,同时利用评分矩阵和辅助信息来学习潜在因子,最后使用矩阵分解还原评分信息。

模型

附加信息栈式去噪自编码器

image

  • 附加信息去噪自编码器(aDAE)

mDAE的模型结构如上图(a)所示,可以看成是改进的三层自编码器结构,其中:输入层是评分向量的损坏版本,也就是在原始的评分向量中加入了噪声,一般来说,有两种加入噪声的做法:加性各向同性高斯噪声或二进制掩蔽噪声。添加噪声的目的是为了学习到更具鲁棒性、更有效的特征表示。隐藏层的输入包含两个两方面,一部分来自输入层,另一部分来自辅助信息层,辅助信息层的输入是编码并做加入噪声后的辅助信息向量。输出层包含两个部分,分别是重构之后的评分向量以及辅助信息向量。编码解码过程如下所示,h其实就可以看作是用户或者物品的潜在因子。

image

  • 附加信息栈式去噪自编码器(aSDAE)

理解了上面的模型,那么aSDAE也就容易理解了。如上图(b)所示,可以看到aSDAE是在普通的aDAE的结构上,将多个aDAE堆叠起来构成的。这样做的原因主要是多层的神经网络可以在隐藏层产生更加丰富的表示,从而提升性能。

混合协同过滤模型

image

模型由三个组件构成:上面和下面分别是aSDAE模型,用于抽取用户和物品的潜在因子;中间是将利用aSDAE生成的用户和物品的潜在因子生成评分矩阵。

损失函数

模型根据评分矩阵、用户和物品的评分向量、用户和物品的辅助信息来学习用户和物品的潜在因子表示,目标函数如下:

image

论文为了简单起见,将aSDAE的代价参数置为1,得到以下目标函数:

image

其中,I是指示矩阵,指示R中的非空矩阵元素,也就是说如果矩阵中的元素不为零,I 不等于 0;否则I 等于 0。a为代价参数,f是正则项用于避免过拟合。

image

论文使用SGD最优化目标函数。

实验

实验部分,作者使用movielens数据集(100k和1M)和Book-Crossing数据集,用RMSE和recall@K作为评价指标,baselines:PMF,CMF,CDL,DCF。实验结果如下:
image

image

LeetCode题解

发表于 2018-08-08 | 分类于 LeetCode

java基础

发表于 2018-08-08 | 分类于 Java

Neural Collaborative Filtering,Xiangnan He,www 2017

发表于 2018-08-07 | 分类于 论文阅读笔记

概述

这篇论文关注用神经网络技术解决基于隐式反馈的协同过滤问题。论文指出,通过矩阵分解得到的隐含特征,从某种意义来说,是用户或者物品的属性表示,属性之间存在一定的关系,直接用向量的点乘来描述二者的交互。因此,这篇论文提出两种方法:一种是向量的元素对应乘积,另一种是向量拼接然后输入到MLP,还有将二者进行结合。

问题背景

image

前提:用户物品交互矩阵,用Jaccard相似度度量用户之间的相似度,隐含空间用户的相似度用向量的点乘计算。根据图(a)可以得到:s23 > s12 > s13。在隐含空间如图(b)所示。新用户u4的加入,有s41 > s43 > s42。
然而在隐含空间已经不能表示出这种关系。所以论文指出,不能简单的用向量的点乘来表示用户物品交互函数,考虑到神经网络可以近似表示任意函数,论文考虑使用多层感知机来描述用户物品交互函数。

模型

image

输入层:用户和物品的one-hot编码
嵌入层:是一个全连接层,目的在于将稀疏表示的输入映射到一个稠密向量空间。该层神经元的个数等于隐含空间的维度K
神经协同过滤层(多层神经网络):将潜在向量映射到预测分数
输出层:最后一层是预测值,范围是[0,1],表示物品与用户的相关程度。

notes:
(1)可以通过辅助信息生成用户和物品的特征表示,用于缓解冷启动问题;
(2)模型训练目前用的是pointwise方法,也可以通过成对学习(pairwise learning)的方法进行训练,
比如:贝叶斯个性化排序、基于间隔的损失。论文目前这部分的工作是空白的。

模型分类

根据对用户和物品的潜在特征输入到协同过滤层之前操作的不同,分成GMF和MLP。GMF和MLP分别对用户和物品做Embedding操作,得到维度不同的隐含向量,原因主要是不同模型最优的Embedding维度也是不同的。GMF将用户和物品的隐含特征输入到神经协同过滤层,这里只有一层,对用户和物品的潜在特征向量做元素对应乘积,然后输出到输出层,这里主要通过元素对应乘积操作之后到输出层之间的参数和输出层的激活函数共同决定模型的性能;而MLP将用户和物品的隐含特征后输入到多层感知机,将二者做拼接之后,通过多层隐藏层来学习用户和物品隐含特征的交互函数。最后还有将两种模型结合起来的NeuMF模型,如下图所示。这种混合模型通过对两种模型进行预训练,得到模型的参数用于NeuCF模型的初始化参数。从下图可以看到有一层NeuCF层,这一层的作用是将两个模型的结果分别加权后做拼接,然后输出到输出层,从而得到最后的预测结果。

image

损失函数

损失函数使用交叉熵损失函数,用随机梯度下降算法(SGD)最优化损失函数

image

实验

实验部分作者使用留一法,主要做了三组对比实验,分别是:性能比较(Baselines:ItemPop,ItemKNN,BPR,eALS)、负样本数量的影响、MLP层数的影响、NeuCF两个模型有无预训练的影响。

Weicheng He

Weicheng He

与其担心未来,不如现在好好努力。这条路上,只有奋斗才能给你安全感。 别忘了答应自己要做的事,别忘记自己想去的地方,不管那有多难,有多远。

5 日志
3 分类
6 标签
RSS
GitHub E-Mail StackOverflow
友情链接
  • 鸟哥的Linux私房菜
  • 过往记忆
  • 美团点评技术团队
© 2018 Weicheng He
由 Hexo 强力驱动
|
主题 — NexT.Mist v5.1.4