推荐系统三十六式
刑无刀
“贝壳找房”资深算法专家,8年推荐系统工程师
立即订阅
11433 人已学习
课程目录
已完结 39 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 用知识去对抗技术不平等
免费
第1章 概念篇 (3讲)
【概念篇】你真的需要个性化推荐系统吗?
【概念篇】个性化推荐系统那些绕不开的经典问题
【概念篇】这些你必须应该具备的思维模式
第2章 原理篇 (20讲)
【内容推荐】画鬼容易画人难:用户画像的“能”和“不能”
【内容推荐】从文本到用户画像有多远
【内容推荐】超越标签的内容推荐系统
【近邻推荐】人以群分,你是什么人就看到什么世界
【近邻推荐】解密“看了又看”和“买了又买”
【近邻推荐】协同过滤中的相似度计算方法有哪些
【矩阵分解】那些在Netflix Prize中大放异彩的推荐算法
【矩阵分解】Facebook是怎么为十亿人互相推荐好友的
【矩阵分解】如果关注排序效果,那么这个模型可以帮到你
【模型融合】经典模型融合办法:线性模型和树模型的组合拳
【模型融合】一网打尽协同过滤、矩阵分解和线性模型
【模型融合】深度和宽度兼具的融合模型 Wide and Deep
【MAB问题】简单却有效的Bandit算法
【MAB问题】结合上下文信息的Bandit算法
【MAB问题】如何将Bandit算法与协同过滤结合使用
【深度学习】深度学习在推荐系统中的应用有哪些?
【深度学习】用RNN构建个性化音乐播单
【其他应用算法】构建一个科学的排行榜体系
【其他应用算法】实用的加权采样算法
【其他应用算法】推荐候选池的去重策略
第3章 工程篇 (10讲)
【常见架构】典型的信息流架构是什么样的
【常见架构】Netflix个性化推荐架构
【常见架构】总览推荐架构和搜索、广告的关系
【关键模块】巧妇难为无米之炊:数据采集关键要素
【关键模块】让你的推荐系统反应更快:实时推荐
【关键模块】让数据驱动落地,你需要一个实验平台
【关键模块】 推荐系统服务化、存储选型及API设计
【效果保证】推荐系统的测试方法及常用指标介绍
【效果保证】道高一尺魔高一丈:推荐系统的攻防
【开源工具】和推荐系统有关的开源工具及框架介绍
第4章 产品篇 (3讲)
【产品篇】推荐系统在互联网产品商业链条中的地位
【产品篇】说说信息流的前世今生
【团队篇】组建推荐团队及工程师的学习路径
尾声与参考阅读 (2讲)
推荐系统的参考阅读
【尾声】遇“荐”之后,江湖再见
推荐系统三十六式
登录|注册

【矩阵分解】如果关注排序效果,那么这个模型可以帮到你

刑无刀 2018-03-30
矩阵分解在推荐系统中的地位非常崇高,恐怕本专栏介绍的其他算法模型都不能轻易地撼动它。
它既有协同过滤的血统,又有机器学习的基因,可以说是非常优秀了;但即便如此,传统的矩阵分解无论是在处理显式反馈,还是处理隐式反馈都让人颇有微词,这一点是为什么呢?

矩阵分解的不足

前面我讲过的两种矩阵分解,本质上都是在预测用户对一个物品的偏好程度,哪怕不是预测评分, 只是预测隐式反馈,也难逃这个事实,因为算法展现出来的目标函数就出卖了这一切。
得到这样的矩阵分解结果后,常常在实际使用时,又是用这个预测结果来排序。所以,从业者们口口声声宣称想要模型的预测误差最小化,结果绕了一大圈最后还是只想要一个好点的排序,让人不禁感叹:人心总是难测。
这种针对单个用户对单个物品的偏好程度进行预测,得到结果后再排序的问题,在排序学习中的行话叫做 point-wise,其中 point 意思就是:只单独考虑每个物品,每个物品像是空间中孤立的点一样。
与之相对的,还有直接预测物品两两之间相对顺序的问题,就叫做 pair-wise,pair,顾名思义就是成对成双,也许恐怕这类模型对单身的人士不是很友好。
前面讲的矩阵分解都属于 point-wise 模型。这类模型的尴尬是:只能收集到正样本,没有负样本,于是认为缺失值就是负样本,再以预测误差为评判标准去使劲逼近这些样本。逼近正样本没问题,但是同时逼近的负样本只是缺失值而已,还不知道真正呈现在用户面前,到底是不喜欢还是喜欢呢?
虽然这些模型采取了一些措施来规避这个问题,比如负样本采样,但是尴尬还是存在的,为了排序而绕路也是事实。
既然如此,能不能直面问题,采用 pair-wise 来看待矩阵分解呢?当然能,不然我也不会写出这一篇专栏文章了。
其实人在面对选择时,总是倾向矮子中选高个子,而不是真的在意身高到底是不是 180,因此,更直接的推荐模型应该是:能够较好地为用户排列出更好的物品相对顺序,而非更精确的评分。
这个问题已经有可爱的从业者们提出了方法,就是本文的主角:贝叶斯个性化排序,简称 BPR 模型。下面,我就带你一探这个模型的究竟。

贝叶斯个性化排序

在前面的专栏文章中,有一个词叫做均方根误差,被我提过多次,用于评价模型预测精准程度的。那么现在要关注的是相对排序,用什么指标比较好呢?答案是 AUC,AUC 全称是 Area Under Curve,意思是曲线下的面积,这里的曲线就是 ROC 曲线。

AUC

但是,我不打算继续解释什么是 ROC 曲线了,那是它的原始定义,而我想跟你悄悄说的是另一件事,AUC 这个值在数学上等价于:模型把关心的那一类样本排在其他样本前面的概率。最大是 1,完美结果,而 0.5 就是随机排列,0 就是完美地全部排错。
听到这个等价的 AUC 解释,你是不是眼前一亮?这个非常适合用来评价模型的排序效果,比如说,得到一个推荐模型后,按照它计算的分数,能不能把用户真正想消费的物品排在前面?这在模型上线前是可以用日志完全计算出来的。
AUC 怎么计算呢?一般步骤如下。
用模型给样本计算推荐分数,比如样本都是用户和物品这样一对一对的,同时还包含了有无反馈的标识;
得到打过分的样本,每条样本保留两个信息,第一个是分数,第二个是 0 或者 1,1 表示用户消费过,是正样本,0 表示没有,是负样本;
按照分数对样本重新排序,降序排列;
给每一个样本赋一个排序值,第一位 r1 = n,第二位 r2 = n-1,以此类推;其中要注意,如果几个样本分数一样,需要将其排序值调整为他们的平均值;
最终按照下面这个公式计算就可以得到 AUC 值。
我在文稿中放了这个公式,你可以点击查看。
这个公式看上去复杂,其实很简单,由两部分构成:
第一部分: 分母是所有我们关心的那类样本,也就是正样本,有 M 个,以及其他样本有 N 个,这两类样本相对排序总共的组合可能性,是 M x N;
第二部分: 分子也不复杂,原本是这样算的:第一名的排序值是 r1,它在排序上不但比过了所有的负样本,而且比过了自己以外的正样本。
但后者是自己人,所以组合数要排除,于是就有 n - M 种组合,以此类推,排序值为 rM 的就贡献了 rM - 1,把这些加起来就是分子。
关于 AUC,越接近 1 越好是肯定的,但是并不是越接近 0 就越差,最差的是接近 0.5,如果 AUC 很接近 0 的话,只需要把模型预测的结果加个负号就能让 AUC 接近 1,具体的原因自行体会。
好了,已经介绍完排序的评价指标了,该主角出场了,BPR 模型,它提出了一个优化准则和学习框架,使得原来传统的矩阵分解放进来能够焕发第二春。
那到底 BPR 做了什么事情呢?主要有三点:
一个样本构造方法;
一个模型目标函数;
一个模型学习框架。
通过这套三板斧,便可以脱离评分预测,来做专门优化排序的矩阵分解。下面详细说说这三板斧。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《推荐系统三十六式》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(14)

  • 曾阿牛
    算法通过短文的方式理解较费劲,有参考书籍/开源代码推荐吗?
    2018-03-30
    23
  • lfn
    看完之后不太明白,私下里找了两个讲解的比较清楚的博客,分享给看不明白的小伙伴:
    https://www.cnblogs.com/gatherstars/p/6084696.html ROC曲线和AUC值
    https://www.cnblogs.com/pinard/p/9128682.html 贝叶斯个性化排序
    2018-09-28
    8
  • 张方
    这句话 和公式不匹配。。。 但后者是自己人,所以组合数要排除,于是就有 n - M 种组合,以此类推,排序值为 rM 的就贡献了 rM - 1,把这些加起来就是分子。
    2018-06-06
    6
  • 林彦
    谢谢陈老师的分享。我在手机端查看。请问AUC公式的“可以点击文稿查看”是指在电脑端可以点击,会打开参考文献的链接吗?

    文中BPR pair wise在真实场景应用中优化的目标函数是(1)AUC值还是(2)先验概率与似然概率的乘积值?

    似然概率值是在矩阵参数上一步的估计值/初始值确认后用文中提到的sigmoid函数计算出来的吗?

    最后文中的延伸问题是指BPR算法如何应用于计算KNN的场景吗?手机端搜索和查阅自己不熟悉领域的文献慢些,之后有时间用电脑检索。
    2018-03-31
    3
  • 林彦
    我看了好一会的Adaptive k-Nearest-Neighbor的英文公式,总算有点理解。也就是先用一个传统的距离算法计算每个用户曾经有过交互的物品中的相似度值或距离值,然后对于任意上述物品集合中的一对物品,仿照矩阵分解中sigmoid 函数的计算方法由相似度值或距离值的差值来推导Θ,在由Θ优化目标函数。

    如果理解有误盼望老师能指出。

    上次的问题我现在明白了。文稿查看是针对录音。目标函数是先验概率与似然概率的乘积,它与AUC值有相似性。似然概率值是用sigmoid函数计算出来,原文中相当于sigmoid函数值的连乘。

    作者回复: 你理解是正确的。赞你的认真态度!

    2018-04-06
    1
    2
  • 山药
    关于AUC不错的一种解释https://tracholar.github.io/machine-learning/2018/01/26/auc.html
    2019-07-01
    1
    1
  • 麦子
    AUC公式分子讲解的不太清楚,看不懂文字跟公式间的联系。
    2018-09-30
    1
  • zgl
    老师,请问对于音频推荐来说,排序负样本如何构建?只有点击日志没有曝光日志
    2018-04-20
    1
  • neohope
    老师,近邻模型做排序的话,可不可以直接通过相似度排序,然后排除买过的物品就可以呢?
    感觉每一部分都能勉强看懂,但还是前后串不起来。
    希望能多提供一些例子,或者能提供一些代码。
    2019-12-05
  • 夜白
    有一个问题是BPR的优化算法为什么需要结合重复采样呢,文章中写道后面还是使用随机梯度下降法,也就是随机采样一个样本,那前面做的从全量样本中做有放回的采样不就多此一举吗,请老师指点谢谢!
    2019-07-15
  • 陈松林
    auc计算的时候只选正样本?

    作者回复: 正负样本一起。

    2018-10-27
  • 张飞
    老师想问下数据少的话,到底能做推荐系统不?
    2018-04-13
  • 吴文敏
    如果仅是top 1推荐,而且既有点击数据又有曝光未点击数据,是否还有必要用pair-wise算法?
    2018-04-10
  • 刘大猫
    学到的是相对排序 跟全局排序还是有些不太一样
    2018-03-30
收起评论
14
返回
顶部