广告计算——平滑CTR

2024-02-02 14:32
文章标签 计算 广告 平滑 ctr

本文主要是介绍广告计算——平滑CTR,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


广告计算——平滑CTR
flamen 发表于 5月前 (2016-01-12 10:15:27)  |  评论( 0)  |  阅读次数( 150)| 0 人收藏此文章,   我要收藏   

一、广告计算的基本概念

1、广告的形式

在互联网发展的过程中,广告成为了互联网企业盈利的一个很重要的部分,根据不同的广告形式,互联网广告可以分为:

  • 展示广告(display ads)
  • 赞助商搜索广告(sponsored search)
  • 上下文广告(contextual advertising)

2、竞价模型

对于在线广告,主要有如下的几种竞价模型:

  • 按展示付费(pay-per-impression):直观来讲,按展示付费是指广告商按照广告被展示的次数付费,这是一种最普遍的竞价模型;
  • 按行为付费(pay-per-action):按行为付费是指只有在广告产生了销售或者类似的一些转化时,广告商才付费;

当然,对于以上的两种竞价模型各有其局限性:在按展示付费模型中,压根没有考虑到广告的效果,只是按照广告流量进行售卖的模式;对于按行为付费模型,虽然其考虑到了广告效果,但其的条件是产生了某种转化,这种转化有时很难追踪和记录。此时,为了解决这两种模型的局限性,通常可以按照一个用户是否会点击广告作为最终的度量标准,即按点击付费模型(pay-per-click)。

  • 按点击付费(pay-per-click):根据用户是否会点击广告来付费。

这里便出现了一个重要的概念,便是广告点击率(the click-through rate, CTR)。

3、广告点击率(CTR)

广告点击率CTR是度量一个用户对于一个广告的行为的最好的度量方法,广告点击率可以定义为:对于一个广告的被点击(click)的次数于被展示(impression)的次数的比值。

CTR=#click#impression

广告点击率对于在线广告有着重要的作用,在网络中,对于有限的流量,通常要选择出最优质的广告进行投放,此时,CTR可以作为选择广告和确定广告顺序的一个重要的标准。

但是在计算CTR时,由于数据的稀疏性,利用上述的计算方法得到的CTR通常具有较大的偏差,这样的偏差主要表现在如下的两种情况:

  • 1、例如展示impression的次数很小,如 1 次,其中,点击的次数也很小(这里的很小是指数值很小),如 1 ,按照上述的CTR的计算方法,其CTR为 1 ,此时的点击率就被我们估计高了;
  • 2、例如展示的次数很大,但是点击的次数很小,此时,利用上述的方法求得的CTR就会比实际的CTR要小得多。

出现上述两种现象的主要原因是我们对分子impression和分母click的估计不准确引起的,部分原因可能是曝光不足等等,对于这样的问题,我们可以通过相关的一些广告的展示和点击数据对CTR的公式进行平滑处理。

二、CTR的平滑方法

1、数据的层次结构——贝叶斯平滑

假设有 N 个相同的账号 (a1,a2,,aN) ,对于网页 p ,对于这样的网页和账号组 (p,ai) 。假设 (C1,C2,,CN) 为观测到点击数据, (r1,r2,,rN) 为隐含的CTR的值,为点击率,点击率在此是一个隐含的参数,广告是否被点击满足二项分布,即 Binomial(Ii,ri) ,其中, Ii 表示广告被展示的次数。

贝叶斯思想认为,隐含的参数不是一个具体的值,而是满足某个分布,我们知道贝叶斯参数估计的基本过程为:

先验分布+数据的知识=后验分布

已知二项分布的共轭分布为Beta分布,对此,有以下的两点假设:

  • 1、对于一个广告,其点击 Ci 符合二项分布 Binomial(Ii,ri) ,其中, Ii 表示的是展示的次数, ri 表示的是广告被点击的概率;
  • 2、对于所有的广告,有其自身的CTR,其CTR满足参数是 α β 的贝塔分布 Beta(α,β)

假设有 N 个广告,广告被展示的次数为 (I1,I2,,IN) ,广告被点击的次数为 (C1,C2,,CN) ,上述的两个假设可以表示为如下的形式:

这里写图片描述

其对应的概率图模型为:

这里写图片描述

点击率 ri 不仅与 (Ii,Ci) 相关,而且与参数 α 和参数 β 相关,我们可以通过计算得到参数 α 和参数 β 的估计 α̂  β̂  ,一旦 α̂  β̂  被确定后,则 ri 的估计为:

ri=Ci+α̂ Ii+α̂ +β̂ 

所以,现在,我们需要求解参数 α 和参数 β 的估计 α̂  β̂ 

点击 C 的似然函数为: (C1,C2,,CNI1,I2,,IN,α,β) ,由于点击的次数以及展示的次数之间都是相互独立的,因此上式可以表示为:

(C1,C2,,CNI1,I2,,IN,α,β)=i=1N(CiIi,α,β)=i=1Nri(Ci,riIi,α,β)dri=i=1Nri(Ci,ri,Ii)(riα,β)dri

已知

(Ci,ri,Ii)=rCii(1ri)IiCi

(riα,β)=Γ(α+β)Γ(α)Γ(β)rα1i(1ri)β1

则上式可以写成:

=i=1Nri(Ci,ri,Ii)(riα,β)dri=i=1NrirCii(1ri)IiCiΓ(α+β)Γ(α)+Γ(β)rα1i(1ri)β1dri=i=1NriΓ(α+β)Γ(α)Γ(β)rCi+α1i(1ri)IiCI+β1dri=i=1NΓ(α+β)Γ(Ii+α+β)Γ(Ci+α)Γ(α)Γ(IiCi+β)Γ(β)

此时,我们需要求得该似然函数的最大值,首先,我们对上述的似然函数取对数,即为:

log(C1,C2,,CNI1,I2,,IN,α,β)=i=1NlnΓ(α+β)lnΓ(Ii+α+β)+lnΓ(Ci+α)lnΓ(α)+lnΓ(IiCi+β)lnΓ(β)

将上述的log似然函数分别对 α β 求导数,即为:

dlog(C1,C2,,CNI1,I2,,IN,α,β)dα=i=1NΨ(α+β)Ψ(Ii+α+β)+Ψ(Ci+α)Ψ(α)

dlog(C1,C2,,CNI1,I2,,IN,α,β)dβ=i=1NΨ(α+β)Ψ(Ii+α+β)+Ψ(IiCi+β)Ψ(β)

其中, Ψ(x)=ddxlnΓ(x) 。通过the fixed-point iteration方法,可以得到如下的结果:

αnew=αNi=1[Ψ(Ci+α)Ψ(α)]Ni=1[Ψ(Ii+α+β)Ψ(α+β)]

βnew=βNi=1[Ψ(IiCi+β)Ψ(β)]Ni=1[Ψ(Ii+α+β)Ψ(α+β)]

上述的求解过程是一个迭代的过程,一旦求出了参数 α 和参数 β 的估计 α̂  β̂  ,便可以求出点击率的估计:

ri=Ci+α̂ Ii+α̂ +β̂ 

2、数据在时间上的一致性——指数平滑

相比上述的贝叶斯平滑,指数平滑相对要简单点,对于CTR中的点击,这是个与时间相关的量,假设对于一个广告,有 M 天的点击和展示数据 (I1,I2,,IM) (C1,C2,,CM) 。若要估计第 M 天的CTR的值,我们需要对分别对 I C 进行平滑,得到平滑后的 Π Ĉ  。其计算方法如下:

{Ĉ j=CjĈ j=γCj+(1γ)Ĉ j1 if j=1 if j=2,,M

{Πj=IjΠj=γIj+(1γ)Πj1 if j=1 if j=2,,M

其中, γ 称为平滑因子,且 0<γ<1 。对于上述的公式,若要计算第 M 天的平滑点击,可以得到下面的公式:

Ĉ M=γCM+(1γ)Ĉ M1=γCM+(1γ)(γCM1+(1γ)Ĉ M2)=γCM+γ(1γ)CM1++γ(1γ)jCMj++γ(1γ)M1C1

参考文献

  • Click-Through Rate Estimation for Rare Events in Online Advertising.Xuerui Wang, Wei Li, Ying Cui, Ruofei (Bruce) Zhang, Jianchang Mao Yahoo! Labs, Silicon Valley United States

这篇关于广告计算——平滑CTR的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/670998

相关文章

如何用Java结合经纬度位置计算目标点的日出日落时间详解

《如何用Java结合经纬度位置计算目标点的日出日落时间详解》这篇文章主详细讲解了如何基于目标点的经纬度计算日出日落时间,提供了在线API和Java库两种计算方法,并通过实际案例展示了其应用,需要的朋友... 目录前言一、应用示例1、天安门升旗时间2、湖南省日出日落信息二、Java日出日落计算1、在线API2

poj 1113 凸包+简单几何计算

题意: 给N个平面上的点,现在要在离点外L米处建城墙,使得城墙把所有点都包含进去且城墙的长度最短。 解析: 韬哥出的某次训练赛上A出的第一道计算几何,算是大水题吧。 用convexhull算法把凸包求出来,然后加加减减就A了。 计算见下图: 好久没玩画图了啊好开心。 代码: #include <iostream>#include <cstdio>#inclu

uva 1342 欧拉定理(计算几何模板)

题意: 给几个点,把这几个点用直线连起来,求这些直线把平面分成了几个。 解析: 欧拉定理: 顶点数 + 面数 - 边数= 2。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#inc

uva 11178 计算集合模板题

题意: 求三角形行三个角三等分点射线交出的内三角形坐标。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vector>#include <

XTU 1237 计算几何

题面: Magic Triangle Problem Description: Huangriq is a respectful acmer in ACM team of XTU because he brought the best place in regional contest in history of XTU. Huangriq works in a big compa

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显

计算数组的斜率,偏移,R2

模拟Excel中的R2的计算。         public bool fnCheckRear_R2(List<double[]> lRear, int iMinRear, int iMaxRear, ref double dR2)         {             bool bResult = true;             int n = 0;             dou

Golang支持平滑升级的HTTP服务

前段时间用Golang在做一个HTTP的接口,因编译型语言的特性,修改了代码需要重新编译可执行文件,关闭正在运行的老程序,并启动新程序。对于访问量较大的面向用户的产品,关闭、重启的过程中势必会出现无法访问的情况,从而影响用户体验。 使用Golang的系统包开发HTTP服务,是无法支持平滑升级(优雅重启)的,本文将探讨如何解决该问题。 一、平滑升级(优雅重启)的一般思路 一般情况下,要实现平滑

Golang服务平滑重启

与重载配置相同的是我们也需要通过信号来通知server重启,但关键在于平滑重启,如果只是简单的重启,只需要kill掉,然后再拉起即可。平滑重启意味着server升级的时候可以不用停止业务。 我们先来看下Github上有没有相应的库解决这个问题,然后找到了如下三个库: facebookgo/grace - Graceful restart & zero downtime deploy for G

GPU 计算 CMPS224 2021 学习笔记 02

并行类型 (1)任务并行 (2)数据并行 CPU & GPU CPU和GPU拥有相互独立的内存空间,需要在两者之间相互传输数据。 (1)分配GPU内存 (2)将CPU上的数据复制到GPU上 (3)在GPU上对数据进行计算操作 (4)将计算结果从GPU复制到CPU上 (5)释放GPU内存 CUDA内存管理API (1)分配内存 cudaErro