文 | bytecoder
源 | 知乎

背景

过去一周,我们探讨了搜索系统最核心的指标以及如何通过实验的方式来判断策略的好坏。但是影响一个实验的好坏除去策略本身的影响之外,还会受到一些反直觉的因素的影响;之前在做搜索,尤其是搜索系统成熟之后,曾经出现过一个非常诡异的情况,生产系统上的大多影响面正向的小流量实验都不约而同的出现了衰减(实验开始的第一天核心搜索指标显著正向,之后正向收益开始变窄,直到最后收益消失)

问题

为什么搜索系统的小流量实验会出现衰减,同样以小流量实验验证收益的推荐与广告是否也有类似的情况?这个是一个值得我们认真探究的一个问题,追根溯源还是需要我们综合业务理解和技术本身来对这个问题进行拆解分析。

思考

针对上述问题,我们可以从搜索要解决的问题出发,来进行问题拆解。搜索是一个以相关性为基础,辅助以吸引度、满意度、权威性、时鲜性、质量、多样性等多种不同目标为一体的复杂业务,整体要解决的问题更偏向于general,要求不同的人搜索得到的结果倾向于一致。

而用户检索query主题相关的page未必是一个最优解,我们还需要引入吸引度的概念,核心就是群众力量是伟大的,在相关性区分度不明显的前提下,引入吸引度从而将优质内容排序位置往前提(将吸引度好的page),为了刻画搜索的吸引度,我们引入的是搜索的点击信号(CTR),当相关性都是3分的时候,为了将优质3分的page往前顶,我们需要将那些CTR高的page排在更靠前的位置,通过普罗大众的行为特性来帮助我们的搜索系统将优质内容往前顶。

但是仅仅依靠吸引度其实容易导致我们的page会受到标题党的骗点击的作弊行为的影响,为了让优质内容得到更多的曝光,我们引入满意度来将劣质标题党的page打掉,常见的满意度的刻画可以依赖于停留时长或者完播率(视频搜索)。

我们以吸引度来举例,搜索的点击刻画是先验和后验的融合,先验更多是依赖于一个点击率预估的模型,主要是帮助我们对全局的Page进行点击预估,更偏向于吸引度刻画能够有强的泛化能力;而后验更多是依赖于统计信息,主要是帮助我们将具有置信点击行为的page往前提。如何将先验和后验融合的更好也是一个非常重要的topic,不作为我们本文讨论的重点。

在吸引度的刻画中,有一类特征非常重要,就是后用行为特征:

1. 过去1小时当前page的点击次数

2. 过去1天当前page的点击次数

3. 过去一周当前page的点击次数

回到刚才的问题,我们在做流量实验的时候,我们忽视了一点就是索引库中的所有的page是面向所有用户开放的,索引库没有针对不同的流量实验进行索引重建(索引动辄几百亿,成本过高),当我们的实验组上线一个非常好的策略,对应的page上会积累大量的实验组策略带来的用户点击行为。但是我们的对照组(线上策略)进行点击特征信号生成的时候,没有去排除对应的实验组的用户行为所造成的影响,这个时候就会发生点击穿越行为(实验组的用户行为会污染对照组点击特征信号统计)。

搜索里面还有一种重要的信号叫做CQ数据(Click Query),我们会将page的点击query作为一个强的信号引入我们的搜索系统中,当我们对于CQ数据应用的越重,那么上述的点击穿越行为就会越严重,因为实验组带来的收益很快会被对应的page cover住,而对照组和实验组在进行特征统计的时候没有进行区分,这样就会带来大量的穿越行为,从而将实验组的收益消费掉。

那么是否所有的CTR任务都会有这样的影响?答案是肯定的,但是与搜索系统有一点不同的是,推荐和广告更重个性化,相比于搜素更重视全局客观的结果,推荐和广告的点击更重局部,去看单个用户的行为更多,我们在推荐和广告的点击模型中引入了大量的uid的特征,相当于我们进行了用户隔离,整体的穿透问题就不是很大。

解决思路

搜索所面临的技术难题不是推荐和广告能够比拟的,在搜索系统里面只要用到点击信号,都会存在不同程度的穿越问题,哪怕你线上迭代的模块和点击没有任何关系,只要做AB实验,那么势必就会有点击穿越问题,真正去解决这种问题现今也没有特别好的方案,而我们唯一能做的就是拿空间来换,在空间维度进行流量区分,对照组的特征统计依赖于非实验组的用户行为特征,这样能缓解一些穿越问题,但是会带来资源的浪费和消耗。

总结

点击穿越问题是搜索系统里一个比较疼的问题,当我们的系统迭代初期,点击灵敏度不够的时候,穿越问题对我们系统的影响会稍小一些;一旦我们的系统逐步趋于完善,点击灵敏度变高后,这类问题就会非常严重了。纵观国内国外大厂,解决这种方法的手段也就让先验实验最多只有有限时间的收益(半天),或者通过资源来换(不优美,没有真正解决,线下流程变的繁琐)。搜索真的是一个非常难的问题,迭代过程中会遇到不少诡异的问题,需要我们结合业务属性和技术特点来进行分析,坑不少,不过确实很有趣。

后台回复关键词【入群

加入卖萌屋NLP/IR/Rec与求职讨论群

后台回复关键词【顶会

获取ACL、CIKM等各大顶会论文集!

浅谈点击信号对搜索的影响相关推荐

  1. 浅谈导航数据中POI搜索技术原理

    浅谈导航数据中POI搜索技术原理之一 王健 导航技术的应用已经成为现在生活中重要组成部分,为我们的生活提供了极大的便利.基本都有这样生活的体验,搜索自己位置附近的银行网点.餐馆.那么这些POI是如何快 ...

  2. 浅谈微信小程序对于房地产行业的影响

    前几日,我们曾经整理过一篇文章是关于微信小程序对于在线旅游业的影响的一些反思(浅谈微信小程序对OTA在线旅游市场的影响),近日由于生活工作的需要走访了一些房地产的住宅商品房,突然想到微信小程序对于房地 ...

  3. 计算机技术如何影响现代教育,浅谈信息技术时代对现代教育的影响

    摘要:随着二十一世纪的到来,知识经济.信息时代也相继以清晰的步伐迈入,在这个日新月异的时代,传统的计算机技术不断发展,而新兴的信息科学技术也推动计算机技术的大步前进,其发展更是一日千里.而现在已经普遍 ...

  4. 浅谈去哪儿算法,搜索结果打乱,_m_参数,headers,pre关键参数等

    前言 本文仅供学习参考,如有侵权,请私信删除 由于版权问题,本文所展示的代码并非完整代码,也不提供相关工具,关键参数只提供思路. 登录 登录的请求如下:https://user.qunar.com/m ...

  5. 知识丨浅谈轨道交通信号系统的测试类型与测试方法

    城市轨道交通信号系统是一个安全性.可靠性和可用性都很高的软硬件系统,整个开发周期和流程中涉及多个环节的测试过程,完善的测试是确保达成设计要求的必要保障.本文对测试过程进行简单的介绍和分类,探讨不同的测 ...

  6. 浅谈 串行信号 转换成 并行信号 原理

    注 :  文中讲述的原理是推理和探讨 , 和现实中的实现不一定完全相同 . 开始之前, 可以先参考看看我之前写的两篇文章 : <设计一个 硬件 实现的 Dictionary(字典)>  h ...

  7. 浅谈边缘计算对企业安全建设的影响及趋势

    边缘计算,作为一种将智能集成到边缘设备中的分布式技术,因其可以在数据采集源附近实时处理和分析数据,无需上传到云端或集中式数据处理系统等优势特点,受到企业的广泛关注.在去年的一份研究报告中,Gartne ...

  8. 产品网络推广方案浅谈网站的相关性对优化的影响!

    一般网站在做产品网络推广方案优化的时候,都会给网站进行相应的内容维护,不断的做强做好内容基础,才能逐渐给网站吸到更多好感,有助于网站排名提升,那么对于内容相关性会对网站优化有哪些影响呢?下面产品网络推 ...

  9. 浅谈大前端的代表技术及其影响,值得我们思考

    到底哪些是大前端的代表技术?从业务上来说,我认为终端 开发.网关设计.接口设计.桌面端的 工程化都可以算是大前端的业务范畴. 具体的技术,则是基于 HTML5.NodeJS 的通用技术,以及各平台的专 ...

最新文章

  1. 哑谜,回文和暴力之美
  2. 在 windows 7 和 MinGW 下编译 OpenOCD 过程
  3. Setting Gdb on Windows
  4. STM32中断优先级和开关总中断(很老很经典)
  5. HTML只言片语网站导航模板
  6. Eclipse之Undefined attribute name 警告解决办法
  7. 如何让html标签不转义
  8. 现任明教教主DM×××的3G链路备份
  9. 《剑指offer》面试题42——翻转单词顺序列
  10. linux shell grep 多个文件
  11. jdbc 生成建表语句_记录一次TDH的inceptor导出建表语句和数据
  12. office下载哪个版本比较好
  13. 用计算机计算三角函数角度,角度计算器
  14. 北大计算机图灵班,北大2019“图灵班”计划招60人,在北大什么条件才能进图灵班?...
  15. matlab作业 阳光的快乐老爹,霍思燕6岁儿子近照曝光,调皮起来超阳光,完美继承老爹容颜!...
  16. PCB EMC设计中的一些基本原则
  17. Any Takers For AIG's Asian Arm?
  18. 摩摩哒蓄势再起:最新自主研发产品摩舒椅上线小米有品众筹平台
  19. c语言程序 存款利息的计算,【c语言】存款利息的计算
  20. 如何从零开始训练BERT模型

热门文章

  1. UICollectionView下拉使header放大模糊
  2. js中this和回调方法循环-我们到底能走多远系列(35)
  3. VMWare serve 2.0 进入 RHEL Linux rescue模式
  4. 对std::listT的封装
  5. C和C++混合编程(__cplusplus 与 external c 的使用)
  6. 看完这篇文章,会让你对电容的作用更明白!
  7. 2个字符串相等 swift_Swift快速入门(一)之 Swift基础语法
  8. python高并发架构_python高并发的解决方案
  9. java cellvalue_Java Cell.getErrorCellValue方法代码示例
  10. python写xml文件_用python写xml文件