DSP

naive bayes预估展示广告点击率

2019-07-13 20:53发布

Problem definition 计算广告的一个重要环节是对广告click through rate(CTR)的预估, 因为它直接决定了DSP公司对广告的出价。本文记载用naive bayes对CTR的预估。 假设收集到了足够的训练样本,每个样本中的输入x为一系列的特征(广告位特征,广告特征,用户特征等多个维度的交叉),输出y为标签(广告是否点击), 我们需要做的是根据样本构建一个模型,然后当一个新的输入x'出现时预测概率p(y'=1|x')。 Naive Bayes 根据 Bayes' Theorem:
p(y=1|x) = p(x|y=1) * p(y=1) / p(x)
where p(x) = p(x|y=1) * p(y=1) + p(x|y=0) * p(y=0)
此外,假设特征之间是独立的,                                                                                                                                                                         p(x|y=1) = p(x1|y)*p(x2|y)...p(xn|y),其中x1到xn为n个特征。                                                                                                                   对于某个特征xi而言,p(xi|y=1) = p(xi,y=1)/p(y=1) = count(xi, y=1)/count(y=1),  p(x|y=0) = p(x,y=0)/p(y=0) = count(x, y=0)/count(y=0)   其中count(y=1)为点击总数,count(xi, y=1)为该特征下的点击总数。同理count(y=0)为未点击总数(曝光-点击), count(xi, y=0)为该特征下的未点击总数。 根据上述方法,统计出需要的count代入公式即可计算出某个特征组合下的CTR了。

Laplace Smoothing naive bayes一个常见问题是预测数据可能会出现训练数据中没有特征,这时该特征下的点击count为0,使得乘法计算后的最终预测结果也为0。为解决这一问题,须采用Laplace Smoothing(LM),即为未出现的特征添加一些sudo count(默认的点击或未点击次数)。在LM下,对于某个特征xi:
p(xi|y=1) = p(xi,y=1)/p(y=1) = [count(xi, y=1)+n]/[count(yi=1)+kn], k为特征xi的class个数,n为当前特征class的sudo count(自己设定的变量)。 在文本分类计算word count时,n常取1,即假设新词出现了一次。而在ctr预估中有所不同,n为可能的点击数,可取一个较大的值(如200)。 此外,在CTR预估的情景下,p(x|y=1)和p(x|y=0)的LM取值有所不同且互相关联。因为在前者中的sudo count是默认的点击数而后者中的是默认的未点击数。二者的加和即为广告曝光数。所以如果曝光数为m,
p(xi|y=1)公式中添加的sudo count为n, 那么p(xi|y=0)公式中添加的sudo count应为m-n。即
p(xi|y=0) = p(xi,y=0)/p(y=0) = [count(xi, y=0)+m-n]/[count(y=0)+k(m-n)],其中k为特征xi的class个数。 Summary 当训练数据量足够大时,用naive bayes做预测往往可以有不错的效果,其本质是一个概率统计模型。