ctr 平滑_CTR平滑的原理,包懂!!!附代码
为什么需要平滑?
某个物品CTR(click-Through-Rate)定义为“物品被点击的概率”。CTR是某个物品在其他条件保持不变下自身的属性。但是概率我们不好确定,能确定的是频率。根据大数定理,随着实验次数的增加,频率会逐渐稳定到概率附近。所以我们用一般物品被点击的频率
来表示它的CTR,即
(公式1)
我们当然希望CTR越大越好,由上面的公式我们可知CTR的大小实际上由两部分决定。首先是展示的次数,英文里用了impression,直译为给人留下的印象,我们可以理解为曝光并且被用户看到,是有效的曝光。其次是被点击的次数。如果有一件物品a 曝光了1次,并且被点了,那它的CTR就是100%。而另外一件物品b曝光了1000次,被点击了100次,它的CTR就是10%。那我们能说物品a的CTR比物品b的CTR更高吗?显然不能,一次被曝光并且被点击,这其中包含了很大的不确定性。根据大数定律,在实验次数不断增加下,频率才会稳定在概率附近。显示CTR等于100%这个数据,只是在一次实验中得到,它偏离真实CTR的可能性非常高。
那么怎么能获得更可靠的结论呢?一种显然的想法是提高物品a的曝光,增大实验次数,让频率更接近概率。但是大多数时候曝光不是你想增加,增加就能增加的。
指数平滑
另外一种朴素的想法是我们假定物品的CTR在一定时间内是不变的,我们可以利用历史的数据来修正今天的CTR。今天的CTR实际上CTR的观测值。根据这个思路我们首先想到了指数平滑
(公式2)
可以看出来随着时间的推移,历史的信息在很快的衰减。
为什么利用beta分布得到的结果是
beta分布是在0-1之间beta分布的概率密度函数
我们假设某件物品的CTR服从参数为
的beta分布,即有
(公式3)
那么每次曝光可以看成从服从
和
的beta分布里的一次随机抽样。显然被点击的次数服从参数为
和r的n重伯努利分布,其中
和r都是已知条件
(公式4)
曝光
和点击率是独立的,
(公式5)
明确我们的目标是要求在已知曝光
和点击
下点击率
的估计,根据贝叶斯公式
(公式6)
其中B表示Beta函数,可见新的点击率也服从Beta分布,当我们得到
之后,就可以确定点击率的分布了。
对于参数为
的Beta分布的它的众数是
,它的平均数是
。所以我们可以拿
或者
来作为平滑之后的CTR.
如何计算
?
假设我们拥有的是时间序列格式的数据,每天点击数独立同分布,所以有如下的概率密度函数,根据极大似然估计的原理。我们使下式取到最大值
(公式7)
上式对
求导有
其中
对
迭代求解
import scipy.special as special
def update(clicks,imps,init_alpha,init_beta,epoches,epsilon):
assert len(clicks) == len(imps), print("length not equal")
alpha, beta = init_alpha, init_beta
last_alpha = last_beta = 0
for i in range(epoches):
normalization = sum([special.digamma(imps[i]+alpha+beta) - special.digamma(alpha+beta) for i in range(len(clicks))])
alpha = alpha * (1/normalization) * sum([special.digamma(clicks[i] + alpha)-special.digamma(alpha) for i in range(len(clicks))])
beta = beta * (1/normalization) * sum([special.digamma(imps[i]-clicks[i]+beta)-special.digamma(beta) for i in range(len(clicks))])
if abs(last_alpha - alpha)
break
last_alpha = alpha
last_beta = beta
return alpha,beta
写在最后
计算
时用到的极大似然函数也可以用我们在推导平滑CTR用到的公式6,最后对
的迭代求求我也没太搞清楚,有兴趣的朋友可以看下第一个参考文献。
参考文献
Environmental I S . Click-Through Rate Estimation for Rare Events in Online Advertising[J]. Online Multimedia Advertising Techniques & Technologies, 2011.
ctr 平滑_CTR平滑的原理,包懂!!!附代码相关推荐
- 辗转相除法求最大公约数原理分析(附代码实现)
辗转相除法求最大公约数原理分析(附代码实现) 前言 解释 原理分析 代码 结语 前言 辗转相除法用起来很简单,但是其原理却自己想不明白.于是乎看了几篇有关辗转相除法原理的分析,在这里自己写下自己的理解 ...
- AlphaGoZero 原理讲解(附代码)
AlphaGoZero 原理讲解 前言 一.AlphaGoZero 棋盘编码器 二.AlphaGoZero树搜索算法 1. 树节点及其动作分支 2. 选择要探索的动作分支 3. 扩展搜索树 4. 选择 ...
- ctr 平滑_ctr平滑
在广告系统中,一个重要的指标是CTR.ctr=点击(Click)/曝光(Impression). 如果一个广告只有5次曝光,没有点击,是否表示它的ctr为0? 如果一个广告曝光了4次,却有3次点击,它 ...
- ctr 平滑_CTR平滑方法
一.Beta分布 从统计机器学习角度上讲,对于某个事件发生的概率,我们一般会假设其服从某一种先验分布. 举个例子,在棒球里可以把击球当做随机事件,只有击中和没击中两种状态,衡量棒球运动员职业技能的一个 ...
- matlab 平滑曲线连接_平滑轨迹插值方法之多项式插值(附代码)
前言 今天我们来聊聊轨迹插值,在机器人的运动规划和控制领域,参考轨迹的生成是一个历史悠久的问题,已经发展出了一系列的方法.今天我们就来聊一聊轨迹插值领域中最常见的轨迹插值方法:多项式插值. 说明:本文 ...
- 独家 | creditR 的基于实践的导论:一个神奇的改良信用风险评分和验证的R包(附代码)...
作者:Ayhan Dis 翻译:张睿毅 校对:丁楠雅 本文约3200字,建议阅读10+分钟. 本文介绍了关于creditR包的相关基础知识,并通过使用creditR深入研究一个全面的例子进行实际操作. ...
- 数据分析常用的python包_量化投资数据分析之常用的python包(附代码)
小伙伴们都知道python功能强大,在金融量化分析中运用广泛,python常用的数据分析包很多,下面先给大家简单列举一些(如果您刚开始学python觉得这东西很烦看不懂,那么请不要担心,直接忽视跳到第 ...
- 量化投资数据分析之常用的python包(附代码)
小伙伴们都知道python功能强大,在金融量化分析中运用广泛,python常用的数据分析包很多,下面先给大家简单列举一些(如果您刚开始学python觉得这东西很烦看不懂,那么请不要担心,直接忽视跳到第 ...
- 朴素贝叶斯算法和拉普拉斯平滑详细介绍及其原理详解
相关文章 K近邻算法和KD树详细介绍及其原理详解 朴素贝叶斯算法和拉普拉斯平滑详细介绍及其原理详解 决策树算法和CART决策树算法详细介绍及其原理详解 线性回归算法和逻辑斯谛回归算法详细介绍及其原理详 ...
最新文章
- nodejs -- promise的返回
- Hibernate的条件查询的几种方式
- 黄聪:解决Jquery在GET方式传递参数时gb2312中文编码乱码
- 空指针 java调用_java-变量引用与重复性get调用以避免空指针
- boost::hana::eval_if用法的测试程序
- nuxt中必须要知道的一点 关于 nuxt-link 和 a 标签的区别
- overlayfs高密 读性能_RFID读写器天线圆极化与线极化的性能区别
- python linux 上 RS485通信 Modbus协议
- matlab绘图如何居中,word中插入绘图表格怎样居中
- 《Cracking the Coding Interview程序员面试金典》----猫狗收容所
- Java随机更换背景图片_利用Java处理图片,更换背景
- easyx的使用(1)
- 等保三级收费-等保三级的办理流程
- caj文献里的参考文献拷贝到word中格式错乱问题
- web3.0 nft 是什么? nft的意义是什么?
- 微信小程序盲盒系统源码 附带教程
- 从线性模型到广义线性模型(2)——参数估计、假设检验
- 高德地图添加瓦片图层
- [Android学习] 1. 简易登录界面设计
- 计算机连接网络不稳定,造成网络连接不稳定的原因有哪些
热门文章
- Cloud for Customer workCenterLoader
- jMeter debug postprocessor的用法
- Smart Template tile的绘制原理
- Hybris开发环境的license计算实现
- SAP Cloud for Customer(C4C)和微信集成系列教程
- mysql coreseek_centos+php+coreseek+sphinx+mysql之一coreseek安装篇
- Android 省份城市搜索,android - 非常不错的 城市省份的选择组件: citypicker
- origin遇到不适当的参数_Origin教程|如何更改Lable和设置非均匀坐标
- vlan绑定_图文并茂深入了解VLAN工作原理,不能错过干货
- java radiobutton获取信息_如何获取JRadioButton的文本值