Handling Position Bias For Unbiased Learning To Rank In Hotels Search(ArXiv2020)

作者:一毛,公众号:炼丹笔记

背景

对给定查询的结果进行排序的模型和隐含的用户反馈(如点击数据)由于其丰富性和低成本而成为数据收集的主要来源,特别是对于大型互联网公司。然而,这种数据收集方法的一个缺点是数据可能有很大的偏差,其中最重要的偏差是位置偏差,用户倾向于点击排名较高的结果。

本文我们探讨在Tripadvisor酒店搜索的在线测试环境中正确处理位置偏差的边际重要性

我们提出了一个经验有效的方法来处理位置偏差,充分利用用户的行动数据。我们利用了这样一个事实:当用户点击一个结果时,他几乎可以肯定地观察到上面的所有结果,并且点击结果下面的结果的倾向性将通过一个简单但有效的位置偏差模型来估计。

在线A/B测试结果表明,该方法改进了搜索排序模型。

三种处理position bias的方案

1. 忽略position的影响

这种方法假设用户已经评估了所有的选项(items),对于相对较短的列表(比如Facebook广告推荐)来说是可以接受的.

2. 样本调整处理

只保留用户点击的最后一个结果以及之前的样本。这种方法假设用户从上到下依次查看结果,并在向下滚动和停止时单击第一个相关结果(类似于Cascade模型)。

该方法对于相对较长的list例如Airbnb搜索是非常有效的;但是这种做法是有系统的偏见,这将导致排名模式reverse现有的秩序。

3. 保留训练的所有数据并使用propensities作为权重

在训练数据中保留所有结果,但在损失函数中使用倾向作为权重。与前两种方法相比,该方法通过考虑倾向性来减少训练数据。他们已经证明,这种方法导致了一个无偏损失函数,从而形成了一个无偏模型,并将此框架称为无偏学习排名。

然而,这种方法尚未充分利用用户反馈数据(例如,当用户单击结果N时,该用户几乎肯定已评估结果1到结果N-1)。此外,这种方法需要倾向性估计(propensity estimation),这是另一项具有挑战性的任务。

propensity估计的工作

1. Position bias model

位置偏差模型(Position bias model)假设点击给定结果的概率是评估结果的概率和点击给定已评估结果的概率的乘积:

其中C表示一个结果是否被点击, E表示一个结果是否被检查, R表示一个结果是否相关,这种模型需要结果随机化实验来降低用户体验,尽管已经花费了很多精力来最小化这种降低效果。

2. 基于回归的EM算法

为了完全消除退化效应,Wang等人提出了一种无结果随机化的方法,从平时的点击中估计位置偏差。该方法采用基于回归的期望最大化(EM)算法同时提取位置偏差和结果相关性。

我们认为,这种方法倾向于根据一个结果与相同位置k的其他结果的相关性来分配相关性,可能忽略了这样一个事实,即排名靠前的结果通常比排名靠后的结果更好。

3. 估计点击倾向的方法

后来,Aslanyan等人提出了一种在不干预实时搜索结果的情况下估计点击倾向的方法。这种方法利用了在电子商务搜索中,同一query-document对可能随着时间的推移而自然地改变排名的事实,并使用出现在不同排名的query-document对来估计倾向性。

类似地,Agarwal等人提出了一种无需干预的估算方法,它使用来自不同排名函数的查询文档对。这两种方法都假设一个文档不会随时间发生太大的变化,并且倾向性是基于同一文档在不同位置的CTR来估计的。然而,尽管搜索引擎中的文档是相对静态的,但是酒店的价格是动态的,并且是用户做出点击/预订决策时需要考虑的关键因素之一,这使得酒店搜索很难生成配对。

方案

1. position bias处理

考虑一个隐式用户反馈的例子,如下图所示,列表中有五个酒店曝光,用户单击Hotel3。下面是我们将如何处理位置偏差。因为用户点击了Hotel 3,所以对Hotel 3进行了评估,我们假设Hotel 1-2也进行了评估,而Hotel 4-5处于未知的评估状态。因此,在准备训练数据时,将保留1-3家酒店,而4-5家酒店将根据其倾向进行抽样

扩展了经典的位置偏差模型,如公式1所示,当用户点击LastClickPos时,用户已经评估了LastClickPos上面的所有结果。

另一方面, 在LastClickedPos之后观测到的结果的propensity可以通过下面的式子计算得到:

2. propensity预估

基于结果随机化的倾向性估计降低了用户体验,而现有的基于规则点击的评价方法难以将酒店关联性与倾向性分离。在这项工作中,我们将使用一个简单的基于历史预订数量的相关性分配,这将被证明是足够好的,以评估酒店在某个位置上的平均相关性。根据位置偏差模型,我们有:

此处,我们令P =(R=1|Hotel,k)为在位置k的历史bookings的个数,我们发现对于在线旅行社(OTAs),历史预订数量是酒店相关性的一个非常强烈的信号,与我们的最终业务目标一致。下图显示了测量的点击曲线P(C=1 | k)vs 位置)和基于上面的灯饰计算的倾向曲线P(E=1 | k)与位置)。点击曲线证明了用户对点击排名较高的酒店有很大的偏好,而且由于点击曲线比计算出的倾向曲线更陡,这意味着我们的榜单已经将更多相关酒店推到了榜首。

实验

实验结果

  • 与Control模型相比,propensity抽样模型(测试2)的点击率提高了1.5%(统计显著)。
  • 在80%的恒定采样率(测试1)下,它的点击率比模型高出1.7%(统计显著)。
  • 80%抽样的模型与控制模型相比,结果差不大。

小结

虽然在LTR模型的训练中没有一种被广泛接受的处理位置偏差的方法,但是处理这种偏差的重要性不容忽视

在本文中,我们提出了一种简单易用的方法,充分利用用户行为的倾向性抽样,并通过在线实验证明了该方法的有效性。在线测试结果表明,该方法显著提高了系统的性能。与支持更复杂模型的基础设施上的大量投资相比,这种方法需要最少的effort,而不需要更高级别的模型复杂性,但仍然能够显著提高搜索排名。

更多干货,请关注微信公众号:炼丹笔记

搜索推荐炼丹笔记:酒店搜索位置偏差的边际重要性相关推荐

  1. 搜索推荐炼丹笔记:点击位置偏差的经验比较

    An Experimental Comparison of Click Position-Bias Models (WSDM08) 作者:一元,公众号:炼丹笔记 这是一篇经典的文章,引用800+,虽然 ...

  2. 搜索推荐炼丹笔记:位置偏差里的惊喜

    PAL: A Position-bias Aware Learning Framework for CTR Prediction in Live Recommender Systems (RecSys ...

  3. 搜索推荐炼丹笔记:Transformer在搜索推荐中的应用

    作者:九羽,公众号:炼丹笔记 BERT等Transformer模型在自然语言处理领域大放异彩之后,将Transformer应用在各个领域变成了一种潮流,包括之前文章中介绍的Image Transfor ...

  4. 搜索推荐炼丹笔记:CVR预估中的延迟反馈问题

    CVR预估中的延迟反馈问题 一元@炼丹笔记 问题描述 在很多推荐搜索的建模中,我们经常会使用D+1天的数据作为label,从1~D天的数据中的进行特征抽取等工作,和我们时间序列问题建模类似,但和很多其 ...

  5. 搜索推荐炼丹笔记:评论是怎么影响推荐的?

    原来有这个算法,让点评体验如此好! 作者:十方,公众号:炼丹笔记 十方周末出去找吃的,一定会打开点评,去选择评分高的餐厅.虽然十方很少写评价,但是十方在选择餐厅的时候,一定会选择评分高且评论基本都是正 ...

  6. 搜索推荐炼丹笔记:单网络内部集成学习

    Intra-Ensemble in Neural Networks 作者:一元,公众号:炼丹笔记 背景 提高模型效果一直是机器学习(包括深度学习)中的关键问题.然而,独立神经网络在层数较多的情况下,往 ...

  7. 搜索推荐炼丹笔记:融合GNN、图谱、多模态的推荐

    作者:十方,公众号:炼丹笔记 说到推荐系统,就不得不面对数据稀疏和冷启动问题,怎么解决呢?美团这篇论文<Multi-Modal Knowledge Graphs for Recommender ...

  8. 2020年度「炼丹笔记」搜索推荐系统干货集锦

    公众号:炼丹笔记 炼丹笔记在8月8日更新了第一篇文章<2020年推荐系统工程师炼丹手册>之后,开启了在推荐领域伟大航路的征程.在伟大航路的前半段,我们公众号主要做三件事情,学术界推荐算法研 ...

  9. 聊一聊搜索推荐中的 Position Bias

    作者 | Chilia 哥伦比亚大学 NLP搜索推荐 整理 | NewBeeNLP 在搜索推荐系统中,Bias可以说无处不在.之前我们整理过搜索.推荐.广告中的曝光偏差问题,今天来看看 positio ...

最新文章

  1. html5 canvas 学习
  2. export default (imported as router) was not found_HTC 5G Hub 流动Router 评测分享
  3. Windows 8.1 Windows Phone 开发环境安装遇到的问题
  4. 用git提交代码到远程仓库遇到的问题
  5. 如何查看linux下的环境变量
  6. C#多线程学习-求和
  7. archman linux教程,Archman GNU/Linux 2020-01 发布,基于Arch的Xfce桌面发行版
  8. mysql ansi导入_mysql导入csv的4种报错的解决方法
  9. F2FS源码分析-3.1 [F2FS 文件创建和删除部分] 一般文件的创建
  10. SECS/GEM如何开发
  11. mysql 如何避免间隙锁_mysql 间隙锁
  12. 新知实验室 TRTC实时音视频通讯方案在业内的QoS水平
  13. pgm图像修改java_【转】 PGM图像处理方法详解
  14. Centos8.5.211降级为Centos8.4-1.2105
  15. MFC 获取硬盘序列号、IP地址、MAC地址
  16. 第一章 行列式 第七节 克拉默法则
  17. 树结构工具-TreeUtil使用
  18. 蓝牙基带 比特流处理
  19. Windows下最简洁的Linux远程连接软件
  20. 建木入选开源GitOps产业联盟生态图第一版

热门文章

  1. Java 读书笔记 (十一) Number Math 类
  2. ThinkPHP之MVC简析
  3. Android开发——异步任务中Activity销毁时的问题
  4. Unity3D 游戏引擎之IOS高级界面发送消息与Unity3D消息的接收(九)
  5. 常规操作中浏览器缓存检测与服务器请求机制总结
  6. 历史客人-报表记录信息
  7. python 时序数据库_时序数据库InfluxDB
  8. 70条WB, IHC常见实验问题解决方案汇总
  9. 2021蛋白组学研究常用数据库汇总整理
  10. 基金评审人总结的15条写作技巧