User Browsing Model简介
搜索引擎的点击日志提供了很多有价值的query-doc相关性信息,但是这些信息是有偏的,因为对于用户没有点击过的doc,我们无法确定其是否真实地被用户浏览过。即日志中记录的展现信息与实际的展现信息之间是存在一定的差距的,日志中记录的展现doc在实际上用户并不一定真的看到,排序的位置对用户是否看到 & 点击也存在一定的影响。User Browsing Model(UBM) 即是在消除这些因素对CTR的影响,使得根据历史信息得到的CTR能更好的拟合doc原始的CTR。
User Browsing Model(UBM) 通过对用户在搜索结果页上的浏览行为和点击行为作出一定的假设,来预估每个doc被用户浏览过的概率。具体的方法是,构建出(query-doc的展现CTR:Display CTR)与(query-doc的展现概率:Examination和 query-doc的真实CTR:Attractiveness)这二者之间的关系,即Display CTR = Examination * Attractiveness。
在实际的使用中,User Browsing Model得到的模型的参数,可以有两种使用方向:
1)doc的展现概率:Examination,可以用于修正相应的doc的展现次数,进一步可以修正统计CTR,以及修正CTR预估模型的目标。
2)doc的真实CTR:Attractiveness,可以用于修正相应的doc的CTR数值,可以作为统计CTR来看待,也可以作为CTR预估模型的目标。
考虑这样的场景:当一个用户输入一个query后,搜索引擎返回给他一个搜索结果列表,用户从第一个结果开始按照排序结果的顺序进行浏览,对于每一个位置的结果,用户需要决定是否浏览这个结果,如果进行浏览行为了之后,再根据这个结果是否相关(或者说对于用户有吸引力)来决定是否进行点击。所以,如果最后用户对某个结果进行点击了,说明:
1)用户对该doc进行了“浏览”(Examination=1)
2)该doc与query“相关”(Attractiveness=1)

User Browsing Model中假设:
1)是否相关的概率则是由query(q)与doc(u)决定。
2)用户是否浏览某个doc的概率与该doc的的位置r,以及距离上一次点击的距离d有关(如果之前没有过点击行为,则认为是上一次点击的位置为0)。之所以考虑距离上一次点击的距离,是基于这样的假设:当用户看到一大段不相关的结果列表时,更倾向于放弃这次搜索行为。
因此,Attractiveness和Examination可以定义如下:
那么,一次点击行为序列则可以使用联合概率P(c,a,e|u,q,d,r)来表示:
为了计算一个观测组(c,u,q,d,r),则需要分别考虑点击与否的情况。
1)当c=1时,即当前发生一次点击,我们可以以此推断用户对该doc进行了“浏览”(Examination=1),同时该doc与query“相关”(Attractiveness=1)。与此相反,若当前没有发生点击,则说明用户对该doc没有进行“浏览”(Examination=0),或者该doc与query“不相关”(Attractiveness=0),综合来看,可以表述为:
为了求得参数α和γ的值,可以使用最大似然估计的方法,将观测结果分为两个集合,分别为点击集合
和未点击集合
,可以得到如下的似然函数:

其中,q代表query,u代表一个宝贝id,r代表宝贝排序的位置,
代表未点击样本的集合,d代表宝贝排序与上一次点击的距离,γ代表在位置r,距离d时被用户看到的概率,α表示宝贝被点击的实际概率。
由于得到的似然函数是凸函数,因此可以使用梯度下降的方式来进行求解,分别对两个参数计算梯度,使得似然函数取得极大值即可。
User Browsing Model简介的更多相关文章
- (3)Gojs model简介
(3)Gojs model简介 在GoJS中,model用来存储表的基本数据,包括node.link等具体对象和属性,与其在视觉上的展示效果不相关.model中往往只保存相对简单的数据,最方便且持久化 ...
- Sentry 监控 - Snuba 数据中台架构(Data Model 简介)
系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Maps Sentry For ...
- Office Add-in Model 简介
原文地址:http://simpeng.net/office-add-in/office-add-in-model-%e7%ae%80%e4%bb%8b/ , 为了本博客内容的完整性,转载至此. Of ...
- POM (Project Object Model)简介
1 概念介绍 一个项目所有的配置都放置在 POM 文件中:定义项目的类型.名字,管理依赖关系,定制插件的行为等等.比如说,你可以配置 compiler 插件让它使用 java1.5 来编译. < ...
- 在c++中使用Outlook Object Model发送邮件
一.Outlook Object Model简介 Outlook Object Model(OOM)是outlook为开发者提供的一个COM组件,我们可以在程序中使用它来发送邮件.管理邮箱等.相关介绍 ...
- ASP.NET MVC 3 Model【通过一简单实例一步一步的介绍】
今天主要讲Model的两个方面: 1. ASP.Net MVC 3 Model 简介 通过一简单的事例一步一步的介绍 2. ASP.Net MVC 3 Model 的一些验证 MVC 中 Model ...
- Attention Model(注意力模型)思想初探
1. Attention model简介 0x1:AM是什么 深度学习里的Attention model其实模拟的是人脑的注意力模型,举个例子来说,当我们观赏一幅画时,虽然我们可以看到整幅画的全貌,但 ...
- asp.mvc展示model
1. ASP.Net MVC 3 Model 简介 通过一简单的事例一步一步的介绍2. ASP.Net MVC 3 Model 的一些验证 MVC 中 Model 主要负责维持数据状态,将数据从数据存 ...
- Django Model模型
Model简介 模型准确且唯一的描述了数据.它包含您储存的数据的重要字段和行为.一般来说,每一个模型都映射一张数据库表. 每个模型都是一个 Python 的类,这些类继承 django.db.mode ...
随机推荐
- 用C++11实现C++17的apply(动态数组用作函数参数)
标题有点错误,apply是用tuple做参数,调用一个函数.这个标题是为了能更好的适配搜索关键字. 动态数组用作函数参数更适合嵌入了脚本环境的C++程序,比如lua或javascript(js). 若 ...
- Min Stack leetcode
Design a stack that supports push, pop, top, and retrieving the minimum element in constant time. pu ...
- 用php+mysql+ajax+jquery做省市区三级联动
要求:写一个省市区(或者年月日)的三级联动,实现地区或时间的下拉选择. 实现技术:php ajax 实现:省级下拉变化时市下拉区下拉跟着变化,市级下拉变化时区下拉跟着变化. 使用chinastates ...
- 深度剖析Spark分布式执行原理
让代码分布式运行是所有分布式计算框架需要解决的最基本的问题. Spark是大数据领域中相当火热的计算框架,在大数据分析领域有一统江湖的趋势,网上对于Spark源码分析的文章有很多,但是介绍Spark如 ...
- canvas的使用
1.概念 canvas一般就是用来绘制图像的 2.基本知识 上下文对象 var canvas = doucment.getElementById("canvas") ...
- TIME_WAIT问题总结
最近用http_load做压测,跑出来一大串"Cannot assign requested address "的错误,查了一下,是TIME_WAIT过多导致的.因为短时 ...
- Java 中的数组
1.声明数组String [] arr;int arr1[];String[] array=new String[5];int score[]=new int[3]; 2.初始化数组://静态初始化i ...
- 微信JS图片上传与下载功能--微信JS系列文章(三)
概述 在前面的文章微信JS初始化-- 微信JS系列文章(一)中已经介绍了微信JS初始化的相关工作,接下来本文继续就微信JS的图片上传功能进行描述,供大家参考. 图片上传 $(function(){ v ...
- 机器学习 - pycharm, pyspark, spark集成篇
AS WE ALL KNOW,学机器学习的一般都是从python+sklearn开始学,适用于数据量不大的场景(这里就别计较“不大”具体指标是啥了,哈哈) 数据量大了,就需要用到其他技术了,如:spa ...
- Vue.js 2.2 卡片api
给vue开发者和爱好者发送点福利! 卡片上一共117个api,方便查阅 网址: https://vuejs-tips.github.io/cheatsheet Github: https://gith ...