推荐系统的个性化排名

Personalized Ranking for Recommender Systems

在前几节中,只考虑了明确的反馈,并根据观察到的评分对模型进行了训练和测试。这种方法有两个缺点:第一,大多数反馈不是显式的,而是在实际场景中隐含的,并且显式反馈的收集成本可能更高。第二,完全忽略了可以预测用户兴趣的未观察到的用户项对,使得这些方法不适用于由于用户偏好而不是随机缺失评级的情况。未观察到的用户项对是真实的负反馈(用户对项目不感兴趣)和缺失值(用户将来可能与项目交互)的混合体。简单地忽略了矩阵分解和自回归中未观察到的对。显然,这些模型无法区分观察到的和未观察到的对,并且通常不适合个性化的排序任务。

为此,一类基于隐式反馈生成排名推荐列表的推荐模型得到了广泛的应用。一般来说,个性化的排名模型可以用逐点、成对或列表方式进行优化。点态方法一次只考虑一个交互,训练分类器或回归器来预测个人偏好。矩阵因子分解和自回归以点为目标进行优化。成对方法为每个用户考虑一对项目,并旨在近似该对项目的最佳排序。相对排序法更适合于任务的排序。列表方法近似于整个项目列表的排序,例如,直接优化排序指标,如标准化折扣累积收益(NDCG)。然而,与逐点或成对方法相比,列表方法更复杂,计算量更大。在本节中,将介绍两个成对的目标/损失,贝叶斯个性化排序损失和铰链损失,以及各自的实现。

  1. Bayesian Personalized Ranking Loss and its Implementation

Bayesian personalized ranking(BPR)[Rendle et al.,2009]是一种基于最大后验估计量的成对个性化排名损失。已被广泛应用于许多现有的推荐模型中。BPR的训练数据由正负两对(缺失值)组成。假设用户更喜欢积极的项目,而不是所有其未观察到的项目。
在形式上,训练数据是以元组(u,i,j)的形式构造的(which represents
that the user uu prefers the item ii over the item j),以后验概率最大化为目标的业务流程再造的贝叶斯公式如下:


将实现基类mxnet.gluon。Loss损失和覆盖的前向方法构造贝叶斯个性化排序损失。首先导入Loss类和np模块。

from mxnet
import gluon, np, npx

npx.set_np()

BPR的Loss实现如下:

#@save

class BPRLoss(gluon.loss.Loss):

def __init__(self, weight=None, batch_axis=0, **kwargs):super(BPRLoss, self).__init__(weight=None, batch_axis=0, **kwargs)def forward(self, positive, negative):distances = positive - negativeloss = - np.sum(np.log(npx.sigmoid(distances)), 0, keepdims=True)return

loss

5.2. Hinge Loss and its Implementation

排序的Hinge loss损失与通常用于SVM等分类器的gluon library库中的Hinge loss损失有不同的形式。推荐系统中用于排名的损失如下表所示。

m安全边际量大小。

目的是把消极的东西从积极的东西中推开。与BPR类似,目标是优化正样本和负样本之间的相关距离,而不是绝对输出,使其非常适合推荐系统。

#@save

class HingeLossbRec(gluon.loss.Loss):

def __init__(self, weight=None, batch_axis=0, **kwargs):super(HingeLossbRec, self).__init__(weight=None, batch_axis=0,  **kwargs)def forward(self, positive, negative, margin=1):distances = positive - negativeloss = np.sum(np.maximum(- distances + margin, 0))return loss

这两个损失是可互换的个性化排名推荐。

  1. Summary

· There are three types of ranking losses available for the personalized ranking task in recommender systems, namely, pointwise, pairwise and listwise methods.

· The two pairwise loses, Bayesian personalized ranking loss and hinge loss, can be used interchangeably.

推荐系统的个性化排名相关推荐

  1. BPR:个性化排名推荐系统

    BPR 推荐模型基于贝叶斯理论在先验知识下极大化后验概率,实现从一个用户-项目矩阵训练出多个矩阵,且一个矩阵表示一个用户的项目偏好情况来获得用户多个项目的偏序关系下来进行排名的推荐系统. 目前比较主流 ...

  2. [推荐系统]基于个性化推荐系统研究与实现(1)

    目  录 一.搜索引擎与推荐系统 二.推荐系统原理与算法 2.1 Jaccard系数 2.2 余弦相似度 三.数据定向爬取及电影数据集 3.1 爬取近七日天气预报数据存入DB数据库,分为五步完成. 3 ...

  3. VBPR(视觉贝叶斯个性化排名)论文总结

    一.引 这篇文章提出一种可扩展的因子分解模型,这种模型可以将视觉信号融入到预测器中.该文利用深层网络(CNN)从产品图像中提取视觉特征,进而从中挖掘人们的反馈.这种做法不仅可以使得模型更准确,而且可以 ...

  4. 推荐系统 | (2) 个性化推荐系统研究热点

    原文地址 本文作者:谢幸.练建勋.刘政.王希廷.吴方照.王鸿伟.陈仲夏 推荐系统作为一种过滤系统,不仅能够帮助用户在海量的信息中快速寻找到自己需要的内容,也能帮助商家把自己的商品更精准地推荐给用户,增 ...

  5. CPFair:推荐系统的个性化消费者和生产者公平重新排序

    摘要 最近,人们越来越意识到,当机器学习 (ML) 算法用于自动化选择时,他们可能会不公平地对待/影响个人,具有法律.道德或经济后果.推荐系统是此类 ML 系统的重要示例,帮助用户做出高风险的判断. ...

  6. 实战十三:基于BPR算法实现个性化排名推荐 代码+数据

    任务描述:以用户的历史购买行为为基础,针对每个用户,推荐其可能购买的商品排序 方法概述: BPR 首先使用BPR(Bayesian Personalized Ranking)推荐模型.BPR中文名称为 ...

  7. 个性化推荐系统:“网络爬虫+相似矩阵”技术运作流程

    今日头条这类资讯聚合平台是基于数据挖掘技术,筛选和推荐新闻:"它为用户推荐有价值的.个性化的信息,提供连接人与信息的新型服务,是国内移动互联网领域成长最快的产品服务之一". 自从2 ...

  8. 重读经典 | 亚马逊“一键下单”的背后——个性化推荐系统的发展历程

    一般都认为,亚马逊的成功要归功于它鼎鼎大名的"一键下单"功能,但"一键下单"的背后,还需要一个成单量极高的智能推荐系统,来驱动消费者不停地在亚马逊上" ...

  9. 达观数据于敬:个性化推荐系统实践

    达观数据于敬:个性化推荐系统实践 在DT(data technology)时代,网上购物.观看视频.聆听音乐.阅读新闻等各个领域无不充斥着各种推荐,个性化推荐已经完全融入人们的日常生活当中.个性化推荐 ...

最新文章

  1. Python 快速生成 web 动态展示机器学习项目!
  2. 终于放弃了单调的 Swagger 了,选择了这款神器 Knife4j
  3. VTK:PolyData之PointSource
  4. 机器学习:使用numpy实现数据增强(Data Augmentation)
  5. 启动tomcat遇到的问题整理
  6. 使用临时文件mkstemp和输出errno对应的错误描述信息strerror
  7. WPF中应用字体图标
  8. python怎么导出数据_如何用python将数据导出
  9. 模糊综合评价模型(下:多级)
  10. 计算机网络(入门知识点最全整理)
  11. 射频功放学习之ADS原理图版图联合仿真
  12. 在线电子书阅读微信小程序 毕业设计(1)首页
  13. 每日一题.PYTHON面向对象编写模拟人生屌丝逆袭游戏(登录类/角色类/场景类)?
  14. QQ、微信、新浪 利用refresh_token重新登录
  15. mysql联合索引案例_mysql多个联合索引的案例分析
  16. 【新闻早报简报】早上微信里发的那些新闻早报哪里来的
  17. 35岁的程序员:第26章,回家
  18. excess elements in scalar initializer
  19. 《金融行业应用解决方案白皮书》发布,金融自主创新未来可期!
  20. laravel身份证验证_简单的Laravel登录身份验证

热门文章

  1. 利用dom4j将实体类转换为对应的xml报文
  2. 【Kaggle Learn】Python 1-4
  3. 初试linux编译(ubuntu+vim)+玩转智能蛇
  4. HTTP服务器端常用推送技术
  5. 阿里云服务器部署项目
  6. 北京大学开源分词工具pkuseg 初试与使用感受
  7. LeetCode简单题之二进制矩阵中的特殊位置
  8. 自研GPU之火(续)
  9. TVM如何训练TinyML
  10. 基于Jittor框架实现LSGAN图像生成对抗网络