ctr 平滑_CTR平滑的原理,包懂!!!附代码

博客围绕CTR(点击通过率)展开,指出因概率难确定,常用频率代替,但单次实验得出的CTR有很大不确定性。为获更可靠结论,可增加曝光或利用历史数据修正。介绍了指数平滑法,还阐述了利用Beta分布计算CTR,新点击率也服从Beta分布,并提及计算方法。
摘要由CSDN通过智能技术生成

为什么需要平滑?

某个物品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之间

fdbe5fb1929d8ae1bec7a9103687be17.png
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)<epsilon or abs(last_beta-beta)<epsilon:
            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.

如何理解Beta分布和Dirichlet分布?-czxttkl-搜狐博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值