概述
笔者在《深度学习在计算广告中的应用》一文中较体系化地介绍了效果广告整体投放流程以及深度学习在流程各环节中的应用,其中,排序环节会使用模型预估点击率、转化率,并使用以下公式计算:
最后再基于排序,选取排序靠前的广告胜出。
而在真实环境中,每个广告展现的真实点击率是不可观测的,如需计算某个广告展现的真实点击率,则需要在相同的上下文环境下,重复多次展现该广告,统计该广告的点击数,再基于大数定律,通过点击数除以展现数才能得到该广告在某个上下文环境下的后验真实点击率。
因此,目前在计算广告中,广告展现样本只会被标记是否进一步发生点击,而无法被标记真实点击率,而基于上述样本集进行点击率预估模型的学习时,点击率预估不是被建模为回归问题,而是被建模为分类问题,由分类头输出点击率预估值后,再根据一定的阈值判断,预估是否发生点击,模型学习时,损失函数一般采用交叉熵损失函数,评估指标一般采用AUC。
由于训练样本分布和推理样本分布是有偏差的,再加上广告及其竞价环境是不断变化的,通过上述方法训练得到的点击率预估模型,其在推理阶段预估的点击率和后验真实点击率可能存在一定偏差。在其他应用场景下,如果只考虑预估值相对序的准确性,则上述偏差可以忽略,而在计算广告应用场景下,如果预估值相对序是准确的,但预估点击率和后验真实点击率存在偏差,则会导致以下问题:
- 若预估点击率和后验真实点击率存在偏差,可能导致基于预估点击率和点击出价计算的序是错误的,从而导致选取错误的胜出广告;
- 目前常用的广告拍卖机制是GSP,其对当前竞胜广告的计价采用下一位的出价进行计算,即:,若预估点击率和后验真实点击率存在偏差,可能导致计价计算不准确,进而影响广告拍卖机制的正常运行,损害广告平台或广告主的利益。
为解决上述预估点击率和后验真实点击率存在偏差的问题,目前计算广告一般会采用以下两种解决方案进行预估值的校准:
- 在点击率、转化率预估后引入单独的校准模块,在模型输出预估值后,通过校准函数修正预估值和后验真实值之间的偏差,输出校准后的预估值;
- 在点击率、转化率预估后不引入单独的校准模块,而是直接在预估模型中进行校准,比如,训练时采用展现样本集,而推理时在召回样本(可能包含无展现样本)上进行预测,存在样本选择偏差,导致预估值和真实值存在偏差,针对上述问题,可采用逆概率加权对训练样本权重进行调整,从而消除样本选择偏差。
为了实现校准和预估的解耦,目前一般通过引入单独的校准模块进行预估值的校准,而校准模块一般会基于以下假设:
- 点击率、转化率预估模型的预估值相对序是准确的,只是预估值和后验真实值之间存在偏差;
- 若预估值相近,则后验真实值也相近;
校准函数的求解有多种经典算法,这些算法可分为两类:
- 参数算法,即假设预估值和后验真实值的映射满足特定分布,显式地使用特定分布函数表示校准函数,并求解分布函数中的参数,从而得到校准函数,而参数算法存在的问题是映射满足特定分布的假设和实际情况可能并不相符,从而导致校准不准确。
- 非参数算法,即相对于参数算法,并不显式使用特定分布函数表示校准函数,常用的非参数算法又包括以下几种:
- 保序回归(Isotonic Regression)算法,该算法求解一个单调递增函数对预估值进行校准,在保证校准后的预估值序不变的前提下,最小化校准后的预估值与后验真实值之间的方差;
- 分桶算法,该算法将样本按预估值划分为多个桶,计算各桶点击率、转化率的后验真实值,并将各桶的后验真实值作为该桶各样本校准后的预估值,而分桶算法存在的问题是如何合理设置分桶数,分桶数过大,则分桶内的样本较稀疏,分桶数较小,则按分桶粒度输出的校准值区分度不高;基于分桶算法进一步改进的BBQ算法则同时采用多个分桶数,并对不同分桶数输出的校准值进行加权求和。
本文主要是对其中阿里妈妈提出的算法——SIR的论文阅读笔记,若有不足之处,请指正。下一篇是对MBCT的阅读笔记。
SIR
《Calibrating User Response Predictions in Online Advertising》是阿里妈妈于2020年发表的一篇论文,该论文针对点击率预估值校准的问题,提出了SIR算法,SIR算法属于非参数算法,其结合分桶和保序回归算法,并在校准时引入插值算法进行平滑,该论文针对转化率预估校准的问题,在SIR算法的基础上,进一步引入PCCEM模型,基于点击后短期用户行为预测是否转化真实值的近似值,从而无需等待较长时间至所有延迟的转化发生,转化率预估值校准函数可以基于近期的样本(包含转化率预估值以及是否转化真实值的近似值)进行学习和更新,从而解决转化延迟问题;最后,该论文提出了新的校准评估指标,并在多个数据集上进行预估值校准的实验,相对于已有的校准算法,取得了更好的效果。
系统架构
论文首先介绍了效果广告整体系统架构和投放流程。笔者在《深度学习在计算广告中的应用》一文中较体系化地介绍了效果广告整体投放流程,这里再简单介绍一下论文中介绍的投放流程。效果广告系统针对每次广告请求,首先使用召回(AD SELECTION)模块从海量广告物料库中检索出与当前请求相匹配的多个候选广告,接着使用预估(PREDICTION)模块预估每个候选广告的点击率和转化率,再接着使用校准(CALIBRATION)模块对预估值进行校准,最后使用排序(RANKING)模块基于校准后的预估值和出价计算候选广告的eCPM,按eCPM排序后选择靠前的广告作为竞胜的广告展示给用户。用户的点击和转化事件会上报至广告系统,与展现事件合并生成展现样本集,广告系统离线基于展现样本集进行学习得到预估模型和校准函数。
论文这里提出在效果广告系统中进行点击率和转化率预估值的校准,面临以下两个问题:
- 数据稀疏,点击和转化事件相比展现事件比较稀疏,论文指出某些场景的点击率不足1%,某些商品的转化率不足0.1%;
- 数据延迟,转化事件相对展现、点击事件有较大的延迟,例如,下单转化有可能在点击广告的数天之后才会发生,如果只考虑短期的转化事件,则会导致转化率被低估,而如果还考虑长期的转化事件,则会导致校准函数更新不及时。
问题定义
首先对预估校准问题进行形式化地定义。
令表示预估值的取值空间,取值在0和1之间,作为广告发生点击或转化的概率,令表示真实值的取值空间,取值1表示广告发生点击或转化,取值0表示广告未发生点击或转化,令表示预估值,令表示真实值,定义给定时的的条件期望为:
而预估值和真实值的偏差可用下式表示:
令表示校准函数,其输入是校准前的预估值,输出是校准后的预估值,则校准函数的求解目标即求解一个最优的校准函数,使得预估值和真实值的偏差取得最小值,可用下式表示:
解决方案
论文提出的点击率和转化率预估值校准方案如图2所示。
对于立即发生的行为,比如点击,点击率预估值的校准采用SIR(Smoothed Isotonic Regression)算法,如图2红色区域所示。SIR算法属于非参数算法,其结合分桶和保序回归算法,并在校准时引入插值算法进行平滑。SIR算法在学习时,使用历史广告请求的点击率预估值和是否点击真实值作为样本进行点击率预估值校准函数的学习。SIR算法在推理时,输入点击率预估值,输出校准后的点击率预估值。
对于延迟发生的行为,比如下单转化,因为是否转化存在延迟,所以论文针对转化率预估校准的问题,在SIR算法的基础上,进一步引入PCCEM(Post-Click Conversion Estimation)模型,如图2蓝色区域所示,该模型基于点击后短期用户行为与最终转化相关这一现象,使用点击后短期用户行为预估是否转化并作为是否转化真实值的近似值。PCCEM模型在学习时,使用点击后短期用户行为和是否转化真实值作为样本进行模型学习。
PCCEM模型在推理时,输入点击后短期用户行为,输出是否转化真实值的近似值。随后,和点击率预估值校准相同,论文进一步使用历史广告请求的转化率预估值和是否转化真实值的近似值作为样本进行转化率预估值校准函数的学习。这里由于使用的是基于点击后短期用户行为预测的是否转化真实值的近似值,而非是否转化真实值,所以无需等待较长时间至所有延迟的转化发生,校准函数可以基于近期的样本进行学习和更新,从而解决转化延迟问题。和点击率预估值校准相同,SIR算法在推理时,输入转化率预估值,输出校准后的转化率预估值。
下面再分别详细介绍SIR算法和PCCEM模型。
SIR算法
SIR算法属于非参数算法,其结合分桶和保序回归算法,并在校准时引入插值算法进行平滑。前面已提到,点击率、转化率预估模型的预估值相对序是准确的,只是预估值和后验真实值之间存在偏差,而采用SIR算法,能够保证校准后的预估值相对序不变。
SIR算法的具体步骤可以分为三个阶段:分桶,用于分桶的保序回归和插值计算,下面分别介绍。
第一个阶段为分桶(Binning)。令样本集合为,其中包含个样本,对于其中第样本,为点击率预估值,为是否点击真实值,取值为0表示未点击,取值为1表示点击。 首先对样本集合中样本按照点击率预估值从小到大进行排序,得到排序后的样本列表,其中,。
然后对有序样本列表进行分桶,分桶数为,每个分桶中的样本数为,则,得到分桶列表。
对于分桶列表中的每个分桶,例如第个分桶,该分桶包含的样本的序号集合为,该分桶在分桶列表中的数据为,包含4项数据:
- 令分桶中最小的点击率预估值为,则。
- 令分桶中最大的点击率预估值为,则。
- 令分桶中的点击率真实值为,则。
- 令分桶中的样本数为,则。
最终,分桶列表包含个分桶的数据。
第二个阶段为用于分桶的保序回归。因为分桶列表是基于已按照点击率预估值从小到大进行排序的样本列表进行分桶的,所以中各分桶也是按照点击率预估值平均值从小到大进行排序。分桶列表虽然按照样本的点击率预估值单调递增,但按照分桶的点击率真实值(即分桶内样本发生点击数除以分桶内样本数)并不一定单调递增,而分桶算法使用分桶的点击率真实值作为推理时点击率预估值落在该分桶内的样本的点击率预估值的校准值,若分桶列表并不按照分桶的点击率真实值单调递增,则校准后的预估值序发生变化,而预估值序是准确的,校准算法需要保证校准后的预估值序不变,因此,SIR算法在第二阶段对分桶列表进行保序回归,使得调整后的分桶列表也按照分桶的点击率真实值单调递增,保序回归算法具体采用PAV(Pair Adjacent Violator)算法,关于保序回归和PAV算法的详细介绍可以阅读《【学习笔记】保序回归——适用于单调递增数据的统计回归方法》,论文在PAV算法的基础上进行升级,提出了用于分桶的PAV算法,如图4所示。
初始化新的空分桶列表。对于原分桶列表中的各分桶,如果各分桶的点击率真实值并不是严格升序,则进行分桶合并,最终合并后的分桶列表为,具体操作步骤如下。
遍历中的各分桶,对于第个分桶,其相关数据为,令,,,。
若为空,则直接将当前分桶的相关数据加入中。
若不为空,则进行以下循环。
从中取出末尾的分桶,若,说明分桶和当前分桶按点击率真实值并不是严格升序,则将分桶和当前分桶进行合并。
对于合并后的分桶的各项数据:
- ,因为分桶和当前分桶按点击率预估值是升序的,所以作为分桶中点击率预估值的最小值,肯定也是合并后分桶中点击率预估值的最小值;
- ,保持不变,因为作为当前分桶中点击率预估值的最大值,肯定也是合并后分桶中点击率预估值的最大值;
- ,样本数合并,即;
- ,点击率真实值重新计算,即。
然后将分桶从中删除。
接着继续从取出末尾的分桶作为新的分桶,若能取出且,则接着合并分桶,否则跳出当前循环,将最终当前分桶的各项数据加入。
通过上述过程,能够保证中各分桶满足按点击率预估值升序排序的同时,也满足按点击率真实值升序排序。
第三个阶段为插值计算。分桶算法使用分桶的点击率真实值作为推理时点击率预估值落在该分桶内的样本的点击率预估值的校准值,最终得到的校准值为若干离散值,并不平滑,因此,SIR算法在第三阶段通过插值计算对校准值进行平滑处理,如图5所示。
初始化新的空分桶列表。
遍历中的各分桶,对于第个分桶,分桶的点击率预估值的中位数,分桶的点击率预估值的中位数,令,,并将当前分桶加入中。
最后,若推理时,某个点击率预估值落入中的分桶,即,则点击率预估值的校准值可由函数计算:
即在两分桶真实点击率之间进行线性插值,从而平滑计算点击率预估值所对应的校准值。
PCCEM模型
真实环境中,广告竞价环境是不断变化的,上述SIR算法中的校准函数需要不断更新,若校准函数用于点击率预估值的校准,则每次更新需要收集最近一段时间的广告展现以及是否发生点击的样本(其中也包含广告的点击率预估值),若校准函数用于转化率预估值的校准,则每次更新需要收集最近一段时间内的广告展现以及是否发生转化的样本(其中也包含广告的转化率预估值),点击一般在广告展现后很快发生,而转化不同于点击,转化可能在广告展现后延迟很长时间才发生,例如用户浏览商品广告后,过了一段时间再下单购买,因此,若需要获取广告展现样本最终是否发生转化的结果,则需要等待较长时间至所有可能发生的转化都发生并收集相应的结果,再进行校准函数的学习,这样会导致转化率预估值校准函数的更新不及时。
论文提出PCCEM模型来解决上述问题。
论文首先介绍了电商广告中转化延迟发生随时间的分布,如图6所示,图左侧是分布函数,图右侧是累积分布函数,从中可以看出,只有8%的转化在点击后的1小时内发生,而有17%的转化在点击后的100小时后才发生。
论文进一步介绍了点击后短期用户行为和转化的正相关关系,如图7所示,图左侧是点击后落地页浏览时长和转化率的正相关关系,图右侧是点击后落地页浏览次数和转化率的正相关关系,从中可以看出,点击后落地页浏览时长越长,浏览次数越多,转化率越高。
因此,PCCEM模型基于点击后短期用户行为预测是否转化真实值的近似值,从而无需等待较长时间至所有延迟的转化发生,转化率预估值校准函数可以基于近期的样本(包含转化率预估值以及是否转化真实值的近似值)进行学习和更新,从而解决转化延迟问题。
需要注意的是,PCCEM模型虽然用于预测是否转化真实值的近似值,但其和广告在线竞价时所使用的转化率预估模型并不同,因为PCCEM模型的输入特征是广告展现、点击后的用户行为,而在线竞价时所使用的转化率预估模型是针对当前广告请求预估转化率,此时在广告展现前,并没有广告点击后的用户行为数据。
基于PCCEM模型和SIR算法对转化率预估值进行校准的步骤如图8所示。
首先训练PCCEM模型。在某个长时段内,收集并生成训练样本集,其中样本的特征是点击后用户行为数据,样本的标记为是否发生转化,基于训练样本集,训练模型,能够根据点击后用户行为数据预测是否转化真实值的近似值。
然后对于长时段内的每个短时段,例如短时段,对于短时段内的每个广告请求,例如广告请求,收集广告请求的点击后用户行为数据,使用模型预测是否转化真实值的近似值,生成广告请求的样本数据,从而得到短时段内所有广告请求构成的样本数据集。
最后基于样本数据集,使用SIR算法得到转化率预估值的校准函数,并使用该校准函数在后续广告请求时,对转化率预估值进行校准。
效果评估
效果指标
预估校准原先常用的效果指标是PCOC。PCOC是从整个数据集角度,计算校准值的平均值和真实值的比值。PCOC大于1,说明校准值偏高,PCOC小于1,说明校准值偏低,PCOC越接近1,说明校准值越接近真实值,校准效果越好。
但PCOC也存在不足,PCOC=1,只能说明从整个数据集角度,校准值的平均值和真实值相等,但是整个数据集中,有些样本的校准值可能大于真实值,有些样本的校准值可能小于真实值,这样也会导致校准值平均值和真实值相等,即PCOC=1,但并不能说明校准函数的效果好。论文给出了一个具体示例,若共有20000个样本,其中10000个样本,校准值为0.2,真实值为0.4,说明这部分样本校准值偏低,另外10000个样本,校准值为0.8,真实值为0.6,说明这部分样本校准值偏高,示例中的校准函数的效果并不好,但其。
因此,论文设计了一个新的效果指标——calibration-N(Cal-N),其将样本按校准值分成个桶,对每个分桶,例如第个分桶,分别计算,并将转化为,如下所示:
即表示与1的偏差,该值越接近0,说明效果越好。
然后汇总所有分桶的值,得到Cal-N值,如下所示:
该值越接近0,说明预估校准的效果越好。
根据上述定义,示例的Cal-N值(分桶数为2)计算过程如下:
论文这里给出的Cal-N值是2.4,但按上述计算过程得出的Cal-N值是0.75,在GitHub上也有人对论文计算结果的正确性提出疑问,后续论文参与者给出的答复是论文这里的确计算错误了。
在广告投放中,广告计划(campaign)是广告主表达投放诉求的最小单元,包含了出价、预算、定向、创意等设置,广告效果优化比较关注单个计划的效果指标,因此,论文进一步设计了另一个新的效果指标——grouped calibration-N(GC-N),其先分别计算各个广告计划的Cal-N值,再对各个广告计划的Cal-N值进行加权求和,如下所示:
其中,和分别是广告计划的Cal-N值和权重值,而广告计划的权重值可以采用该计划的样本数。CG-N值越接近0,说明预估校准的效果越好。
论文在后续的实验分析中采用CG-N作为效果指标。
实验分析
论文先分别离线评估使用SIR算法对点击率预估值进行校准的效果,和进一步使用PCCEM模型解决转化率预估值校准中转化延迟问题的效果,在在线实验验证预估校准对整体广告效果指标的提升。
离线评估使用SIR算法对点击率预估值进行校准的效果
论文使用了两个数据集,数据集A来自淘宝展示广告平台,其中包含了5千万条从2018年7月的线上日志中随机采样得到的展现样本,而每个展现样本包含点击率预估值和是否发生点击的真实值,数据集B来自品友互动,其中并包含点击率预估值,因此,论文先使用数据集B的训练集训练点击率预估模型,再对数据集B的测试集推理得到点击率预估值,后续只使用数据集B的测试集评估SIR算法。
评估方法的设计上,为真实模拟线上广告系统,论文每小时更新一次校准函数,校准函数的更新使用过去24小时的样本作为训练数据,并对未来1小时的样本的点击率预估值进行校准,计算校准的效果指标,最后再汇总所有小时的效果指标。
对比算法的选择上,论文覆盖了各类算法,非参数算法中的保序回归算法采用IR算法,非参数算法中的分桶算法采用BBQ算法,参数算法采用Beta Calibration算法。
各算法对点击率预估值进行校准的GC-N值如图9所示,从中可以看出,SIR在两个数据集上的GC-N值均优于其他算法。
离线评估进一步使用PCCEM模型解决转化率预估值校准中转化延迟问题的效果
数据集仍来自淘宝展示广告平台,其中包含了7百万条从2018年7月的线上日志中随机采样得到的点击样本,而每个点击样本包含点击前后的用户行为数据、转化率预估值和是否发生转化的真实值。
对比算法的选择上,论文这里主要评估使用PCCEM模型解决转化率预估值校准中转化延迟问题的效果,因此,在校准函数算法的选择上保持SIR算法不变,只是针对SIR算法训练时所需的是否发生转化的真实值,采用三种算法来分别获取:
- PCCEM模型,即论文提出的基于点击后短期用户行为预测是否转化真实值的近似值;
- Short-term Calibration(STC),只等待较短的时间,收集该时间内的转化,这样可以使用近期的点击样本用于SIR算法的训练,但点击样本存在转化延迟的假负样本,导致转化率预估值的校准值偏低;
- Long-term Calibration(LTC),等待较长的时间,收集该时间内的转化,这样点击样本不存在转化延迟的假负样本,但无法使用近期的点击样本用于SIR算法的训练,导致SIR算法训练所使用的样本存在滞后。
各算法对转化率预估值进行校准的GC-N值如图10所示,从中可以看出,PCCEM模型可以有效解决转化率预估值校准中的转化延迟问题,其GC-N值优于STC和LTC,而STC由于存在转化延迟的假负样本,导致转化率预估值的校准值偏低,GC-N值最差。
在线AB实验
论文最后在淘宝展示广告平台进行在线AB实验,对照组不对点击率、转化率预估值进行校准,实验组对点击率、转化率预估值采用论文提出的算法进行校准,最终,实验组在点击率、广告收入上均有一定的提升。