BPR算法详解

BPR [Bayesian Personalized Ranking] 算法详解

在推荐系统的实现中,几乎总会遇到从较多候选集中为用户选取特定的少数几个物品进行推荐,这本质上是一个Ranking问题。在推荐场景中用户更缺乏耐性,对推荐结果的消费也十分有限,所以排序的好坏直接决定了用户对一个准确率为90%的推荐候选集的满意度是否真的有90%。这里为大家介绍一种“基于贝叶斯后验优化的个性化排序算法”:Bayesian Personalized Ranking。
其本身并不优化用户对物品的评分,而只借由评分来优化用户对物品的排序 即:it is a real ranking algorithm.
BPR算法详解_第1张图片

BPR算法过程详解:

数据pair化预处理:
BPR算法将用户对物品的评分(显示反馈“1”,隐式反馈“0”)处理为一个pair对的集合,其中i为评分为1的物品,j为评分为0的物品。假设某用户有M个“1”的评分,N个“0”的评分,则该用户共有M*N个pair对。这样数据集就由三元组 表示,该三元组的物理含义为:相对于物品“j”,用户“u”更喜欢物品“i”。

数据假设:

每个用户之间的偏好行为相互独立
同一用户对不同物品的偏序相互独立
则优化问题为极大化如下目标:
BPR算法详解_第2张图片
其中theta为所求模型,具体包括:表示用户的隐含因子矩阵P,及表达物品的隐含因子矩阵Q。

其中关于似然部分
BPR算法详解_第3张图片
我们假设先验服从如下分布:

在这里插入图片描述
则先验的概率密度函数为:

在这里插入图片描述

基于上述假设,优化目标进一步展开得到:
BPR算法详解_第4张图片
对应的最小化问题为:——其中 λθ 为正则系数"model specic regularization parameters"。
在这里插入图片描述
采用SGD求解上述最小化问题,分别针对pu qi qj求偏导如下:

BPR算法详解_第5张图片
偏导即为梯度下降方向,模型迭代求解的公式如下:

BPR算法详解_第6张图片

其中α为学习速率。

关于偏序关系构造的问题:

基于pair-wise的偏序优化,可以避免point-wise模型在对feature-item进行预测时失效(因为feature-item在训练时全被标记为“0”)的问题。
而且feature-item包括两类:1,用户真正讨厌的;2,用户missing的。
对于某个用户来说,在训练时都被标为"0"的item,在预测时的评分也可以排序,因此不影响ranking任务的完成。

我认为:

即使用pair-wise的优化方式,可以对训练时标记为“0”的item在预测时进行ranking。

但这本身是“矬子里面拔高个”,且训练数据与用户的实际偏好不符。而且,从数据量考虑,也很不经济。

合理的做法:

一般推荐业务场景,都是将一个有限的物品集合(全部物品的子集,通常很小)提供给用户。

我们只将提供给用户,但用户未有反馈的物品标记为“0”。对“未知”给与足够的尊重。

而且,将数据pair化过程限制在某次交互(或某个session)内。

如下图示: ——用户U1同有两次交互,共10个item

BPR算法详解_第7张图片
则pair化后的数据为:
BPR算法详解_第8张图片

你可能感兴趣的:(Deep,Learning,算法,推荐系统,深度学习)