参考论文

https://arxiv.org/ftp/arxiv/papers/1205/1205.2618.pdf

背景介绍

在常规的推荐系统统计算法中,我们通常是通过现有数据集去计算获取用户对所有商品的得分,但大多情况下我们只需要关系极少数的商品的优先级,而不是所有的商品的排序,并且一些基于矩阵分解和KNN的推荐算法,是没有对排序方法进行优化的,而BPR损失函数能够满足我们的需求。

分类

显式反馈:用户对物品的评分,如电影评分
隐式反馈:用户对物品的交互行为,如浏览,购买等,现实中绝大部分数据属于隐式反馈,可以从日志中获取。
BPR是基于用户的隐式反馈,为用户提供物品的推荐,并且是直接对排序进行优化。隐式反馈的优点是从用户的一系列行为中去隐式地挖掘出用户的偏好,相比于显式数据能过够发现隐含的关系并且对数据集的要求更低。

思想

BPR Loss 的思想很简单,就是让正样本和负样本的得分之差尽可能达到最大,是一种个性化推荐。利用矩阵分解和用户商品评分矩阵,通过贝叶斯最大后验概率进行优化。

其训练的数据集是多个三元组的<u,i,j>的条目,其含义表示的是用户u对i的选择优先级要高于j。在BPR算法中,我们将任意用户u对应的物品进行标记,如果用户u在同时有物品i和j的时候点击了i,那么我们就得到了一个三元组<u,i,j>,它表示对用户u来说,i的排序要比j靠前。

如果对于用户u来说我们有m组这样的反馈,那么我们就可以得到m组用户u对应的训练样本。其中用到了如下假设(完整性,反对称性,传递性):

根据提供数据所形成的用户物品评分矩阵往往是稀疏的,即有很多未知项目,通过矩阵分解的方法分解出用户矩阵W和物品矩阵H,根据这两个矩阵得到未知项目的评分:

由于BPR是基于用户维度的,所以对于任意一个用户u,对应的任意一个物品i我们期望有:

最终我们的目标,是希望寻找合适的矩阵W和H,让X\widetilde{X}相似。

参数学习

根据贝叶斯后验概率来估计参数,如下:

其中\Theta表示我们求取的参数,>_{u}可以认为是一个排序,用户对商品偏好的排序。由于数据集是由三元组组成的,所以我们可以将P\left ( > _{u}|\Theta \right )通过如下形式估计:

其中:

获取数据集<u,i,j>即通过自举(bootstrap)的方式获取数据集,先从用户做出过交互的条目中选取一件商品作为正例,然后随机从其他为交互的商品中选取反例(这里认为有过交互的商品为正例,否则为负例) 。

此外,我们假设p\left ( \Theta \right )是服从正态分布的:

由此我们可以得到对数形式的BPR-OPT的公式为:

将该公式作为损失函数进行梯度下降的训练:

其中:

效果评估

AUC

相比于典型的基于用户的随机梯度下降方法和BPR,BPR的收敛速度和效果都要更优。

对于X_{uij}的结果也可使使用其它的方法,这里使用最简单的直接相减,我们可以看出是用对i的兴趣分数减去j的兴趣分数,由于i为正例,j为负例,直接相减是有效的。

总结

(1)BPR的出发点是优化用户对商品的偏好排序,这使得它可以和其他推荐系统方法合并使用。

(2)通过用户商品评分矩阵的分解实现类似于embedding的操作,从而获取用户的隐式评分。

(3)通过贝叶斯最大后验概率估计进行参数学习。

(4)使用bootstrap的方法sample数据集。

(5)隐式的协同过滤推荐算法。

推荐系统笔记(一):BPR Loss个性化推荐相关推荐

  1. 计算机视觉产品推荐,个性化推荐:人工智能中的计算机视觉、NLP自然语言处理和个性化推荐系统哪个前景更好一些?...

    这个问题直接回答的话可能还是有着很强的个人观点,所以不如先向你介绍一些这几个领域目前的研究现状和应用情况(不再具体介绍其中原理)你自己可以斟酌一下哪方面更适合自己个性化推荐. 一.所谓计算机视觉,是指 ...

  2. BPR贝叶斯个性化推荐算法—推荐系统基础算法(含python代码实现以及详细例子讲解)

    BPR贝叶斯个性化排序算法 一.问题导入 二.显示反馈与隐式反馈 2.1 显式反馈与隐式反馈基本概念 2.2 显式反馈与隐式反馈的比较 2.3 显式反馈与隐式反馈的评价方法 2.3.1 显式反馈数据模 ...

  3. Python推荐系统学习笔记(3)基于协同过滤的个性化推荐算法实战---ItemCF算法(下)

    本文在 Python推荐系统学习笔记(2)基于协同过滤的个性化推荐算法实战---ItemCF算法 一文的基础上,对其基本的ItemCF算法做出改进. 一.相关概念 1.ItemCF中,基于行为(喜好) ...

  4. Python推荐系统学习笔记(5)基于协同过滤的个性化推荐算法实战---UserCF算法(下)

    本文在 Python推荐系统学习笔记(4)基于协同过滤的个性化推荐算法实战---UserCF算法(上) 一文的基础上,对其基本的UserCF算法做出改进. 一.相关概念 1.UserCF中,基于行为( ...

  5. Python推荐系统学习笔记(1)基于协同过滤的个性化推荐算法实战---隐语义模型

    一.相关概念: 1.隐语义模型(LFM) 通过矩阵分解建立用户和隐类之间的关系,物品和隐类之间的关系,最终得到用户对物品的偏好关系. 假设我们想要发现 F 个隐类, 我们的任务就是找到两个矩阵 U 和 ...

  6. 【阅读笔记】联邦学习实战——联邦个性化推荐案例

    联邦学习实战--联邦个性化推荐案例 前言 1. 引言 2. 传统的集中式个性化推荐 2.1 矩阵分解 2.2 因子分解机 3. 联邦矩阵分解 3.1 算法详解 3.2 详细实现 4 联邦因子分解机 4 ...

  7. 【推荐系统】深度学习大行其道,个性化推荐如何与时俱进?

    作者|携程基础业务研发部 编辑|Emily AI 前线导读:携程作为国内领先的 OTA,每天向上千万用户提供全方位的旅行服务,如何为如此众多的用户发现适合自己的旅游产品与服务,挖掘潜在的兴趣,缓解信息 ...

  8. 推荐系统[八]算法实践总结V0:淘宝逛逛and阿里飞猪个性化推荐:召回算法实践总结【冷启动召回、复购召回、用户行为召回等算法实战】

    搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排).系统架构.常见问题.算法项目实战总结.技术细节以及项目实战(含码源) 专栏详细介绍:搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排 ...

  9. 个性化推荐系统原理介绍(基于内容推荐/协同过滤/关联规则/序列模式/基于社交推荐)...

    个性化推荐根据用户兴趣和行为特点,向用户推荐所需的信息或商品,帮助用户在海量信息中快速发现真正所需的商品,提高用户黏性,促进信息点击和商品销售.推荐系统是基于海量数据挖掘分析的商业智能平台,推荐主要基 ...

最新文章

  1. 检验两组数据是否显著差异_SPSS非参数两个相关样本检验
  2. [CSS3]环形进度条
  3. Nosql and Mongodb 介绍
  4. Yarn ResourceManager High Availability
  5. 以太坊虚拟机EVM的缺陷与不足
  6. spring mvc学习(20):RequestHeader(获取请求头中某一部分值)
  7. 新媒体运营的“钱途”在哪里?
  8. “深度学习已死,可微编程万岁!”LeCun老师为何又语出惊人?
  9. 计蒜客——双重回文数
  10. 在苹果Mac上Word、Excel 界面变黑如何解决?
  11. 手把手教你自学单片机,三个步骤请做好笔记
  12. 3、搭建rtmp视频推流服务器
  13. 魔咒词典 HDU - 1880 (字符串hash 单hash转int或者 双hash )
  14. HITB CTF 2018 gundam 做题笔记
  15. HTML5之HTML+CSS3代码(二)
  16. WebLogic 性能监控
  17. 【应用案例】AGV小车的运动控制方案
  18. UJN_c++_Contest4735
  19. 洛谷P2903 [USACO08MAR]麻烦的干草打包机The Loathesome Hay Baler
  20. 合肥计算机专业大学排名23,计算机专业大学排名.doc

热门文章

  1. QT调试技巧-使用静态代码检测工具Cppcheck检测代码
  2. Hololens2-OpenXR开发(四)-坐标系同步
  3. Git中三大区的划分
  4. 汉字英雄游戏项目(C#为例)思路建议
  5. mysql html t 制表符_制表符的html
  6. 总结几个对象转数组的方法
  7. 碧蓝航线8.20服务器维护,【碧蓝航线】8月20日维护公告
  8. 怎么把外部参照合并到图纸_为什么在CAD图纸中插入外部参照后会出现多余图形?...
  9. 面试后要请你吃饭_面试官:老板请吃饭,却要你结账,你会咋做?男子智答,被录用...
  10. java转换字符串为时间_JAVA字符串转日期或日期转字符串