CTR建模常见的小知识

在知乎上看到一篇高质量有关ctr建模的文章,虽然很基础,但讲到很明白。原文链接:这里
本文是认真阅读后的笔记,大部分都是原文,有部分自己理解的删减。侵删。

1、CTR(Click-Rhrough Rate)

用户点击的概率,根据大数定律,在足够多的样本下,我们是能够知道这个概率的, p ( c l i c k = 1 ) = T N p(click=1)=\frac{T}{N} p(click=1)=NT,其中 T T T为发生的次数, N N N为整个样本量。然而,现实中没有足够多的样本。因此,这个概率只是个近似值。故在实践过程中是无法准确预测CTR。

2、CTR建模背后的假设

点击率 P E ( y = 1 ∣ x ) P_E(y=1|x) PE(y=1∣x)服从参数为 θ E ( x ) \theta_E(x) θE(x)的Bernoulli分布,其中 y y y表示事件 E E E的结果(label)。假设 θ E ( x ) \theta_E(x) θE(x)和单个事件 E E E本身无关,仅和事件的特征有关,即 θ E ( x ) = θ ( x ) \theta_E(x)=\theta(x) θE(x)=θ(x)。在整个数据集中,每个用户的点击行为不再是独立的,彼此之间存在一个共性规律,事件发生后是否被点击都服从参数为 θ ( x ) \theta(x) θ(x)的伯努利分布。因此,我们观测到的所有事件,就构成了对联合分布(X,Y)的独立同分布采样。这样,CTR建模就转化为对 p ( y ∣ x ) p(y|x) p(yx)这个条件分布的learning问题了。当然,对于不同的业务需求,会对我们的假设进行调整,如:

  • θ E ( x ) = θ ( x a d ) \theta_E(x)=\theta(x_{ad}) θE(x)=θ(xad),认为“是否发生点击”仅跟广告信息有关,此时则为非个性化推荐了,因为样本特征已经和用户没有关系了,只和广告内容有关。
  • θ E ( x ) = θ u s e r ( x ) \theta_E(x)=\theta_{user}(x) θE(x)=θuser(x),认为不同用户对“是否发生点击”的概率服从不同的分布,但是每个用户的所有行为是服从同一个分布的。

然而,我们预测CTR并不是要得到点击的分布,而是要预测一个用户在某时某刻是否发生点击的概率,很自然地可以使用分布的期望均值来表示。最后,可以得到这样一个这样结论:对于一个事件 E E E,特征为 x x x,它发生点击的概率为一个跟特征 x x x取值有关的量,并用数学模型表示成: p E ( y = 1 ∣ x ) = θ ( x ) p_E(y=1|x)=\theta(x) pE(y=1∣x)=θ(x),而 θ ( x ) \theta(x) θ(x)参数可以使用一个函数 f ( ⋅ ) f(·) f()进行学习所得。以上就是我们的CTR建模背后的原理。最终,我们得到的预测结果和真实结果距离取决于我们对 θ ( x ) \theta(x) θ(x)的假设和实际问题的相符程度

对CTR的预测为什么不用回归模型?
     因为CTR的预测本质上是对标签0和1的预测,就是一个二分类的问题。
逻辑回归得到的结果为什么可以当作CTR的概率?
     逻辑回归是通过sigmoid函数将线性回归映射到[0,1]之间的预测值: y = 1 1 + e − z , z = w T x + b y=\frac{1}{1+e^{-z}}, \quad z=w^Tx+b y=1+ez1,z=wTx+b经过数学变换得到: l n y 1 − y = w T x + b ln\frac{y}{1-y}=w^Tx+b ln1yy=wTx+b y y y表示样本 x x x作为正例的可能性, 1 − y 1-y 1y表示样本 x x x作为反例的可能性。两者的比值 y 1 − y \frac{y}{1-y} 1yy称之为“几率”,表示样本 x x x作为正例的相对可能性,取对数就得到“对数几率”( l n y 1 − y ln\frac{y}{1-y} ln1yy)。
所以,逻辑回归是用线性回归来拟合样本 x x x逼近真实标记的对数几率

3、CTR模型建模

CTR模型建模形式多种多样,但是其本质是: y = s i g m o i d ( f ( x ) ) y=sigmoid(f(x)) y=sigmoid(f(x))其中f(x)可以选择合适函数,如线性模型: f ( x ) = w T x + b f(x)=w^Tx+b f(x)=wTx+b,或者深度学习模型: f ( x ) = D N N ( x ) f(x)=DNN(x) f(x)=DNN(x),所以建模需要根据实际情况来决定用什么模型。因为不同模型对应的模型性能差异,代表着不同假设跟真实情况逼近程度的差异

4、矛盾样本

训练集中常常会出现矛盾样本(x相同但y取值不同)。例如:同一个用户很短时间里面看了同一个广告2次,一次发生了点击,另一次没有,而在这个时间段里特征x的取值没有发生任何变化(实践中这是很有可能的,因为通常x都是以静态特征为主,缺乏反映用户状态的实时信息)。矛盾样本的根源来自于:我们强行抹掉了每一个独立时间本身的属性,假设所有事件独立同分布(即假设 θ E ( x ) \theta_E(x) θE(x)跟单个事件 E E E本身无关,仅跟事件的特征有关)。如果把每个事件唯一区分,如精确度纳秒的时间发生时间作为特征加入到x中,就能避免这种矛盾样本。换个角度来看,其实矛盾样本就是我们常说噪音,从而导致模型的准确率不可能达到100%。这在传统机器学习理论中,因数据存在噪声分类器有个最小错误率的界,即贝叶斯错误率(Bayes error rate)。

前文提到:不同模型模型对应的模型性能差异,代表着不同假设跟真实情况逼近程度的差异。而特征的设计则是从另外一个角度引入了对问题的逼近误差。 p ( y = 1 ∣ x ) = f ( x ) p(y=1|x)=f(x) p(y=1∣x)=f(x)这个建模框架中,x的设计决定了简化问题的能力天花板, f ( x ) f(x) f(x)的设计决定了逼近天花板的程度。

5、CTR模型评估

为什么使用auc评估CTR模型?两个CTR模型的好坏,我们无法从微观层面对每个样本的预测值进行度量,因为我们也不知道样本的真实值。一个可行的选择是从宏观层面对样本的比较关系进行度量,一个样本如果实际发生了点击,那么Y=1的预测概率应该大于Y=0的预测概率;反之亦然。因此,对于所有的样本,正样本的预测概率大于负样本的预测概率,模型的预测序尽可能逼近真实序。这就是AUC的物理意义:“任意给一个正类样本和一个负类样本,正类样本的score大于负类样本的score” 的概率值

6、AUC的理论上界

AUC理论上界的计算逻辑:对于给定的训练数据集 ( x , y ) {(x,y)} (x,y),由于矛盾样本的存在,一定有同一个x但不同y的情况。对数据集做个归并操作:所有 x x x相同的样本,统计其CTR 值(统计N个重复样本里面y=1的个数T,CTR=T/N;如果x不存在重复,即N=1时,CTR=y即可),将这个值作为一个理论最优分类器的预测值,计算此时模型的AUC,得到的就是理论AUC上界。AUC上界对应于传统机器学习里的贝叶斯错误率,是有噪声数据下模型学习能够达到的最高水平。理论AUC上界度量的是样本中的混淆度(即矛盾样本出现的程度),它是给定数据集后模型能力的天花板,可以用来判断模型迭代的边际收益。本质上,理论AUC上界取决于特征的设计。举个例子,如果特征仅仅跟AD有关,与用户或者场景信息无关,这个时候模型其实就退化为一个简单的、广告维度的统计模型,非个性化,显然在这种特征空间下,模型能够达到的AUC天花板将远低于个性化的情况。另一方面,过高的理论AUC上界也不是好事。例如,将每一个样本id加入到特征里面,原则上理论AUC=1。但这种过细的、不具备泛化能力的特征,会对模型的学习过程造成强烈的干扰,尤其是对DNN这样解空间巨大、局部点遍布的函数簇,反而可能导致模型的性能下降。

后续问题:

  • 虽然由于坐标系不同,预测的pCTR值跟真实CTR值可以有偏差,但为什么有些维度的特征没有偏差,有些维度偏差却很大?特别地,一些粗粒度特征的偏差一般都不大,为什么?
  • 模型为什么容易高估?往往离线评估预测值/统计观测值基本接近1,而在线服务时高于1
  • CTR模型的样本来自模型自身的选择,持续的循环是否会导致系统陷入局部陷阱?如何判断?
  • CTR模型真的要解决bias问题吗?尽管我对大量长尾的、竞价失败的广告甚至都没有见过其样本,我需要花大力气去优化他们吗?
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值