文章目录

  • 先验知识
  • 朴素Bandit算法
  • Epsilon-Greedy算法
  • 汤普森采样
  • UCB算法
  • LinUCB

Exploration and Exploitation(EE问题,探索与开发)是推荐领常见的问题,主要是为了平衡准确性和多样性。
Exploitation是指我们要迎合用户兴趣给他推荐他想要的,Exploitation指的是怕用户腻,所以要推一些新的东西,万一用户感兴趣呢是吧。

多臂老虎机问题就很像推荐这个场景,我们不知道每个机器吐钱的分布,只能根据现有的知识摇,如果一直摇所知最高的就是Exploitation,但这个吐钱最多的未必是真的,还需要通过Exploitation来探索。

先验知识

  1. 累积遗憾
    错误的选择到底有多少遗憾,累计遗憾如下

    t表示轮数,r表示回报。左边可以认为是最理想情况下的总收益,右边是自己策略的总收益。

  2. Beta分布
    beta分布可以看作一个概率的概率分布,当你不知道一个东西的具体概率是多少时,它可以给出了所有概率出现的可能性大小。

    a和b分别代表在a+b次伯努利实验中成功和失败的次数

朴素Bandit算法

先随机尝试若干次,统计每个臂的平均收益,选最多的那个一直摇

Epsilon-Greedy算法

选0-1间较小的数epsilon,每次以epsilon的概率选一个臂,以1-epsilon的概率选目前最好的臂,根据该次回报值对回报期望进行更新。
优点是有了探索的行为,并且可以调整权重,epsilon=0相当于完全不探索。
缺点是实际上epsilon理想情况下应该是动态的,前期多探索,等后期稳定了就少探索一点。

汤普森采样

使用了beta分布,假设每个臂都有一个吐钱的概率p,同时每个臂都可以维护一个beta分布。
诶次选择臂的方式是:用每个臂现有的beta分布产生一个随机数b,选择所有数中最大的那个摇

UCB算法

解决Epsilon-Greedy的缺点,因为之前提到了Epsilon-Greedy并没有利用到之前的信息,包括臂吐钱的概率和探索的次数。
根据当前每个臂探索的次数和吐钱的次数,其实可以计算出每个臂吐钱的观测概率P’,真实的概率假设是P,核心就是计算gap
我们先确定两个事实:(1)每个臂选择的次数越多,gap越小 (2)对于没被选中的老虎机,gap会随着轮数的增大而增大
ucb算法中p=p’+gap的计算如下:

T是目前的试验次数,n是臂被试次数

LinUCB

传统的实现方法存在很大的缺陷,主要是缺乏用附加信息刻画决策过程的机制。
在推荐系统中,通常把待推荐的商品作为MAB问题的arm。UCB是context-free类的算法,没有充分利用推荐场景的上下文信息,为所有用户的选择展现商品的策略都是相同的,忽略了用户作为一个个活生生的个性本身的兴趣点、偏好、购买力等因素,因而,同一个商品在不同的用户、不同的情景下接受程度是不同的。故在实际的推荐系统中,context-free的MAB算法基本都不会被采用。
在LinUCB中,每一个arm维护一组参数,用户和每一个arm的组合可以形成一个上下文特征(上下文特征的特征维度为d),那么对于一个用户来说,在每个arm上所能够获得的期望收益如下:

对于一个老虎机来说,假设收集到了m次反馈,特征向量可以写作Da(维度为md),假设我们收到的反馈为Ca(维度为m1),那么通过求解下面的loss,我们可以得到当前每个老虎机的参数的最优解:
其实就是岭回归,我们很容易得到最优解为:

既然是UCB方法的扩展,我们除了得到期望值外,我们还需要一个置信上界,但是,我们没法继续用Chernoff-Hoeffding Bound的定理来量化这个上界,幸运的是,这个上界已经被人找到了:

因此,我们推荐的item就能够确定了:

可以看到,我们在计算参数及最后推荐结果的时候,用到了以下几部分的信息:上下文特征x,用户的反馈c。而这些信息都是可以每次都存储下来的,因此在收集到了一定的信息之后,参数都可以动态更新,因此我们说LinUCB是一种在线学习方法。

推荐系统中的EE问题——Bandit算法相关推荐

  1. Doc2vec在推荐系统中的应用(含算法原理、代码实现)

    点击标题下「智能推荐系统」可快速关注 Doc2vec是Mikolov2014年提出的论文,也被成为Paragraph Vector,下面的内容分为三方面进行介绍,分别为: Doc2vec的原理 Doc ...

  2. 低秩矩阵补全算法matlab实现,推荐系统中的矩阵补全算法

    最基本的问题,以用户电影评分为例,也就是这个用户-电影矩阵. 表中是用户多电影的评分,但评分有缺失,因为用户不可能对所有电影作出评价. 那么推荐问题就是给用户合理推荐一个没看过的电影,合理是指,预测用 ...

  3. 【推荐实践】Bandit算法在携程推荐系统中的应用与实践

    文章作者:携程技术团队 编辑整理:Hoh 出品平台:DataFun 导读:携程作为全球领先的 OTA 服务平台,为用户提供诸多推荐服务.下面我们介绍几个在实际推荐场景中面临的问题: 假设一个用户对不同 ...

  4. 推荐系统系列教程之十七:简单却有效的Bandit算法

    编者按:之前推出了<推荐系统系列教程>,反响不错,前面已经推出了十六期,今天按约推出第十七期:简单却有效的Bandit算法.希望粉丝朋友们多点"在看",多多转发,我会在 ...

  5. Bandit算法与推荐系统

    作者简介:陈开江,天农科技CTO,曾任新浪微博资深算法工程师,考拉FM算法主管,个性化导购App<Wave>和<边逛边聊>联合创始人,多年推荐系统从业经历,在算法.架构.产品方 ...

  6. 聊一聊推荐系统中ExploitExplore算法

    Exploit:利用 Explore:探索     推荐系统中,如果片面优化用户的喜好,推荐系统可能会造成信息茧房问题.也就是推荐的东西都是用户喜欢的东西,千篇一律.这时候不仅仅需要Exploit,还 ...

  7. 从0到1详解推荐系统中的嵌入方法,原理、算法到应用都讲明白了

    (图片由AI科技大本营付费下载自视觉中国) 作者丨gongyouliu 编辑丨lily 来源 | 大数据与人工智能(ID:) 前言 作者曾在这篇文章中提到,矩阵分解算法是一类嵌入方法,通过将用户行为矩 ...

  8. SVD在推荐系统中的应用详解以及算法推导

    转载请声明出处http://blog.csdn.net/zhongkejingwang/article/details/43083603 前面文章SVD原理及推导已经把SVD的过程讲的很清楚了,本文介 ...

  9. 推荐系统中常用算法 以及优点缺点对比

    推荐系统中常用算法 以及优点缺点对比 2014/09/20 [Martin导读]随着互联网特别是社会化网络的快速发展,我们正处于信息过载的时代.用户面对过量的信息很难找到自己真正感兴趣的内容,而内容提 ...

最新文章

  1. SqlServer索引的原理与应用
  2. 1024程序员福利日 | 网易云送暖心礼包,只要你是程序员
  3. SasSHRM中基于shiro的认证授权:需求分析
  4. 使用EasyNetQ组件操作RabbitMQ消息队列服务
  5. YBTOJ:比赛得分(期望)
  6. ctype函数_PHP Ctype(字符类型)函数
  7. bootstrap 富文本_入坑吗?说说几个富文本编辑器
  8. 四.Windows I/O模型之重叠IO(overlapped)模型
  9. java 使用logback进行日志输出
  10. CCF CSP201912-1 报数
  11. 类型配置命名空间 —— XML schema
  12. 第三堂:Java程序流程控制
  13. Android自定义View—刮刮卡效果
  14. linux apache 依赖包,利用 yum 解决 Linux 软件包的依赖关系
  15. linux 远程扫描仪,扫描仪Web远程控制
  16. POJ 3764 The Xor-longest Path 题解
  17. 轻量级数据格式 —— JSON
  18. 解决:windows电脑连接iphone手机热点,iphone锁屏后热点会自动断开
  19. MATLAB 图像嵌入水印图像程序
  20. 电子工程师必备(电子书版3本全):

热门文章

  1. 单调函数有界性类题目解法
  2. 计算机系统中设置保护系统还原,如何对电脑进行系统还原
  3. 拒绝拖延症的8种方法
  4. 在我方某前沿防守地域 matlab,[matlab]Monte Carlo模拟学习笔记
  5. iOS dismissViewController到指定页面或dismiss多层
  6. 光刻技术-无掩模高精度激光直写
  7. 你怀疑过“温水煮青蛙”的故事吗
  8. 超高性价比 光纤互联解决方案良心推荐
  9. eNSP仿真企业网络路由器、交换机实验总结(PART_1)
  10. 【中秋快乐】是什么让友小盟选择在中秋节加班?