介绍

这次给大家介绍的是推荐系统的中的Select Bais与Exposure Bais。虽然这两种Bais一个是由系统造成的,一个是有用户的反馈造成的,但是本质上都是一样的:从一个小的样本中去估计一个整体的状态产生的偏差。

首先我们从一个小case中来介绍下Select Bais:

Case来源:Recommendations as Treatments: Debiasing Learning and Evaluation

假设我们有两个用户,一个是Horror Lovers,会给Horror类的电影打5分,会给Romance类的电影打1分。另外一个用户是Romance Lovers,和Horror Lovers打分会完全相反。同时这两个人会给Drama类的电影打三分。OOO可以认为是某一个人对某种类型电影打分的频次,Oui=1O_{ui}=1Oui​=1代表用户给某类电影进行打分了。PPP可以认为某一个去给某类电影评分的概率。假如我们现在有2个分类器,给出Y1Y_1Y1​和Y2Y_2Y2​的预测结果,那么哪个分类器更好呢?

其中R=1∣(u.i):Ou,i=1∣∑(u,i):Ou,i=1δu,i(Y,Y′)R=\frac{1}{|(u.i):O_{u,i}=1|}\sum_{(u,i):O_{u,i}=1}\delta_{u,i}(Y,Y^{'})R=∣(u.i):Ou,i​=1∣1​∑(u,i):Ou,i​=1​δu,i​(Y,Y′)

假设我们知道测试集是Y3Y_3Y3​是用户对新预测的打分频率(里面的每个1就是用户对该类型的电影进行打分),那么对造成Y1Y_1Y1​与Y2Y_2Y2​预测结果的两个分类器来说哪个好呢?答案就是Y2Y_2Y2​的预测结果要好,他在用户后续测试集中表现出的损失函数更小。但是从直观来说(我们事先是知道两个用户的偏好的),Y1Y_1Y1​的分类器应该是优于Y2Y_2Y2​的。造成这种结果的原因就是Select Bais:用户更倾向于对自己感兴趣的电影进行打分。从统计学的角度来说,由于大量样本缺失(很多用户根本没有对电影进行打分),用已有的样本来预测整体的情况带来的偏差。说人话就是训练样本与预测空间分布不一致。

与Select Bais不同的是Exposure Bais往往是推荐系统本身带来的。我们无法将所有的内容全部都曝光给用户让用户筛选,很多内容用户其实没有并没有机会接触,并不能代表用户不喜欢。Exposure Bais更容易使得推荐系统陷入局部最优,导致无法给用户推荐新的好内容。

解决方法

首先比较学术化的解决方法:

两种Bais都可以采用我们上篇文章说的IPW的方法来解决。还是和我们说的一样,在实际的推荐系统中其实不太容易操作的。如果写论文的朋友可以关注一下。

下面就是一些实际中可操作的方法:

Select Bais:

缺失值补充,用户没有给文章打分,那么我们可以预测用户可能的打分。但是这种操作起来其实也会引入新的偏差。

Exposure Bais:

在实际的推荐系统中,其实Exposure更容易出现。而且推荐系统可能会加剧这种现象,具体来说就是给用户看的内容陷于局部最优,比如一直给Horror Lovers推荐Horror类的电影。

其实这种情况由于目前推荐系统的多路召回其实在一定程度上就缓解了。在我们常见的双塔召回中,它是通过对负样本采样来解决的,既然你没有见过,那么强行让你见过。此外类似于阿里的ESMM的方法也有涉及。

从实用的角度出发,我可能更倾向于样本的方法,或者是数据的方法。更多的用户数据能够帮助我们发掘更多的用户兴趣,即使陷入局部最优,也是一个比较大的局部。这也是多场景画像成为大厂突破局部最优的最有效方案的原因。

结语:本来写这个bais系列的时候,只是对于各种bais和比较常见的解决方法或者规则有一定的了解。经过几天深入地了解后,对bais产生的原因有了更深入地了解,从而了解到了更加理论化的解决方案,但是理论化的方案其实很难应用于推荐系统之中,与我深入了解的出发点有出入,因此这个系列就到这里了。其余的Popularity Bias和Unfairness就不具体展开讲了。之后如果有了更深地了解再深入探讨。

推荐系统中的bais系统(二)—Select Bais和Exposure Bias相关推荐

  1. 知人知面需知心——论人工智能技术在推荐系统中的应用

    作者:洪亮劼,Etsy数据科学主管,前雅虎研究院高级经理.长期从事推荐系统.机器学习和人工智能的研究工作,在国际顶级会议上发表论文20余篇,长期担任多个国际著名会议及期刊的评审委员会成员和审稿人. 本 ...

  2. JAVA中获取当前系统时间

    JAVA中获取当前系统时间 转自:http://www.cnblogs.com/Matrix54/archive/2012/05/01/2478158.html 一. 获取当前系统时间和日期并格式化输 ...

  3. 全新的深度模型在推荐系统中的应用

    文章作者:周浩 第四范式 研究员 编辑整理:汪方野 出品平台:第四范式天枢.DataFunTalk 导读:如今,在电子商务.物联网等领域,推荐系统扮演着越来越重要的地位.如何根据用户的历史行为和项目的 ...

  4. 在推荐系统中,我还有隐私吗?联邦学习:你可以有

    2020-11-19 15:38:41 机器之心分析师网络 作者:仵冀颖 编辑:H4O 在推荐系统无所不在的网络环境中,用户越来越强烈地意识到自己的数据是需要保密的.因此,能够实现隐私保护的推荐系统的 ...

  5. AutoML 在推荐系统中的应用

    AutoML 在推荐系统中的应用 http://blog.sina.com.cn/s/blog_cfa68e330102zfe3.html 今天,推荐系统的模型和应用已经相当成熟,然而部署一套全新的推 ...

  6. 联邦学习怎样应用在推荐系统中?

    来源:知乎丨羊老头 说起联邦学习,大家再熟悉不过了,由于其能在数据不移动的前提下协同训练一个全局共享的模型,迅速成为了人工智能安全领域的一个研究热点.推荐系统作为人工智能领域最振奋人心的应用之一,与联 ...

  7. 万字总结,知识蒸馏如何在推荐系统中大显身手?

    来源:AI科技评论 作者 | 张俊杰 编辑 | 丛 末 本文首发于知乎 https://zhuanlan.zhihu.com/p/143155437 随着深度学习的快速发展,优秀的模型层出不穷,比如图 ...

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

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

  9. ML之XGBoost:XGBoost参数调优的优秀外文翻译—《XGBoost中的参数调优完整指南(带python中的代码)》(二)

    ML之XGBoost:XGBoost参数调优的优秀外文翻译-<XGBoost中的参数调优完整指南(带python中的代码)>(二) 目录 2. xgboost参数/XGBoost Para ...

  10. 【推荐系统】推荐系统中的排序学习

    " 本文首先介绍排序学习的三种主要类别,然后详细介绍推荐领域最常用的两种高层排序学习算法框架:BPR和LambdaMART.因为排序学习的算法和实践大都来源于信息检索,一些理论也必须从信息检 ...

最新文章

  1. 爬虫之selenium标签页的切换
  2. 解决Visual Code安装中文插件失败问题
  3. lazada开店平台费用都有哪些,产品如何来做定价?
  4. 51nod 1445 变色DNA ( Bellman-Ford算法求单源最短路径)
  5. 解惑烟草行业工控系统如何风险评估
  6. extjs6 引入ux_关于UX以及如何摆脱UX的6种常见误解
  7. ONE-ReactNative
  8. visual studio哪一款比较好用_电脑桌面上使用的工作便签软件下载哪一款好用?...
  9. mac上使用python 安装anaconda和pycharm
  10. 用HTML5/CSS3/JS开发Android/IOS应用
  11. [SCM]源码管理 - perforce的trigger和daemon
  12. 国际通用计算机编码,计算机中的编码知识
  13. 纠错码与魔术(一)——纠错码与汉明码简介
  14. 一天一大 lee(计数二进制子串)难度:简单-Day20200810
  15. 除中国中医药数据库官网外-必备5个其它常用中国中医药数据库
  16. 【Matlab学习手记】三维矢量场图
  17. 判断司机是否酒后驾车
  18. web 移动端开发基础
  19. Anaconda安装说明
  20. 理解 OpenStack + Ceph (3):Ceph RBD 接口和工具 [Ceph RBD API and Tools]

热门文章

  1. [android]so easy实现根据viewpager、edittext、时间使背景动态渐变色效果~
  2. P1488 肥猫的游戏 题解
  3. 日语动词+动词类型+动词活用
  4. hive: size与spilt连用
  5. 双活数据中心负载均衡理解
  6. MAC使用技巧之苹果电脑新手最容易犯的20个错误
  7. 修改植物大战僵尸游戏存档(Java实现版)
  8. Altium Designer如何批量修改SCH名称,数值,封装
  9. angular directive 入门
  10. 把故事收回到一杯茶里,不知不觉,茶已经凉了