展示广告延迟反馈建模实战:级联拆分中间行为与最终转化

发布时间:2026/10/18 11:54:44
展示广告延迟反馈建模实战:级联拆分中间行为与最终转化 展示广告的延迟反馈问题我断断续续摸了快两年。最典型的一个场景用户点了广告进了落地页逛了一圈没下单你以为没戏了结果三天后他回来直接付款。广告系统必须在点击发生后的几十毫秒内决定要不要继续出价、这笔流量值多少钱可是真正能证明流量价值的转化信号往往要等好几天才回来。如果只是“晚一点”也就算了麻烦在于从点击到最终转化之间往往还隔着加购、激活、留资这些中间动作每一层都有自己的延迟节奏叠在一起以后整个“点击到付费”的等待时间根本不是一条漂亮的单峰曲线。我们团队最近在展示推广场景里落地了一套级联延迟反馈建模框架核心思路很直接不再把“点击→最终转化”当成一个黑盒延迟来学而是先预测中间行为比如加购/激活会不会发生再预测中间行为发生后最终转化会不会发生同时对这两段的延迟分布分别建模。听起来就是拆两步但真要做到离线训练和在线推理都能稳定上线中间全是坑。这篇把整个设计、样本处理、工程落地的细节和踩坑记录完整复盘一遍给同样在做延迟反馈建模的朋友一个参考。1. 多重延迟不是“等一等”那么简单业务与模型的双重困境1.1 一个点击的四次心跳哪怕只看一次最简单的展示广告点击用户的行为节奏也比大多数人想象中复杂得多。点击广告本身是第一个动作通常在毫秒级紧接着落地页加载、用户浏览、开始考虑这是第二个动作可能持续几十秒到几分钟然后可能出现加购、注册、激活这类中间行为时间可能发生在点击后几分钟到几天最后才是支付、付费、成交这类最终转化又要再隔一段时间。对广告系统来说真正的问题不是“转化回传得慢”而是不同环节的延迟互相叠加。假设某类流量从点击到加购平均需要2小时从加购到支付平均需要5小时那么点击到支付的平均等待时间绝不是简单取这两个数字的某种平均值而是两段分布卷积之后的结果。如果只用“点击→支付”这一个宏观标签去拟合延迟分布相当于拿一条简单曲线去描述一个实际上的复合过程参数会被两头拉扯最后预测出来的延迟既不像快转化人群也不像慢转化人群。我见过不少团队一开始都试图用一个大窗口不管三七二十一把窗口内没回传的样本都标成负例。这种做法在延迟很低、数据量很小的场景下还能跑但到了规模化展示广告以后会出大问题上午点击的流量下午可能陆续回传转化可模型已经拿“未回传”当负例学了一轮把大量原本能转化的样本学成了“低质量流量”。1.2 单窗口建模的错误代价先说说传统单窗口方案到底错在哪。假设我们把观察窗口设成7天第7天没回传转化的一律标负。看起来合理实际上第8天、第9天回传的转化也不少尤其是高客单价的品类用户从决策到下单周期长晚期转化占比可能接近三成。这些“晚到”的转化样本被当成了负样本模型得到的学习信号就是点击特征和早期转化特征有相关性但和晚期转化特征没有相关性。于是模型对很多真实会转化的流量群体给了一个偏低的估计后续预算分配自然也不合理。后来业界的常规优化是引入延迟生存建模或者延迟校正不对所有未转化样本一视同仁而是估算“这个样本未来还会不会转化”。具体做法是根据已经等待的时间、转化延迟的分布密度计算一个右截断权重把负例的置信度调低。这一步确实有效但它仍然没有充分利用中间行为信息。1.3 级联思路把“最终转化”拆成“中间行为”与“条件转化”级联延迟反馈建模的核心是引入一个甚至多个中间事件把最终转化概率变成一个概率链。用最简单的一级级联举例中间行为记为M最终转化记为F整体预测可以写成P(F1|x) P(M1|x) × P(F1|x, M1) P(M0|x) × P(F1|x, M0)如果只保留第一项等于默认“没有中间行为就不会有最终转化”这在很多场景下是错的用户完全可能不经过加购直接支付。所以实务上通常保留M0的分支或者把两条路径合并成条件期望。这看起来和常见的多任务学习没有本质区别区别在于延迟结构的处理。多任务模型通常只是让中间行为和最终转化共享底层特征然后各接一个分类头级联延迟反馈建模还会为每一段延迟分别建模点击到M的延迟时间T1M到F的延迟时间T2。这样模型可以回答两个更具体的问题这个流量大概多久会发生中间行为发生了中间行为之后又要多久才会走到最终转化这种拆分在业务上有直接用途——比如有的流量中间行为很快但离成交很远有的流量中间行为慢但一旦发生很快付款两者在出价策略上应该完全不同。2. 级联结构里的建模细节概率链、延迟分布与样本权重2.1 建模目标与符号定义先把形式化定义理清楚。一个训练样本由以下信息组成特征向量 x用户属性、媒体属性、广告创意属性、上下文特征等是否点击C建模时通常限定在已点击样本上是否发生中间行为M例如加购、下载激活、注册、留资是否发生最终转化F例如支付、付费、有效线索观察窗口内记录到的中间行为时间 t_m以及最终转化时间 t_f决策阶段需要输出的是 P(F1 | x, C1)。由于我们只在已点击样本上建模后面省略C。目标是让这个概率既能用于排序也能用于出价。如果M和F都能被准确观察到经验上可以用P(F1|x) P(M1|x)·P(F|M1,x)直接拆。但真实系统里M的观测是不完美的所以必须处理缺失和右截断。2.2 延迟分布怎么进入级联结构延迟分布是整个框架最容易被低估的模块。很多人以为延迟分布就是给每个转化样本附一个“等待时间”然后回归实际完全不是这么回事。我们需要的是给定已经过去了t时长且尚未发生下一个事件这个样本在未来某个时间点发生事件的概率。对中间行为这一段我倾向于用对数正态分布或Weibull分布来拟合T1的密度函数。对数正态的好处是参数可解释性强均值μ和方差σ可以通过网络输出且支持点击后早期概率很低、后期逐渐抬升再下降的形态。对最终转化这一段类似地拟合T2。处理“叠加”是级联建模的关键。观察到的“点击→最终转化”的总时长T T1 T2。如果T1和T2都服从已知参数分布T的分布是卷积积分。常规实现不会真的去算闭式卷积而是对每个样本做离散化积分先把时间轴切成小时粒度的桶从0到观察窗口逐步累加。比如点击后已经过了30小时还没发生M那么需要计算在剩余时间T_max − 30内发生M的概率同时考虑M发生后F的条件概率。这个积分过程在训练时成本不低但带来两个直接收益。第一模型对“早期转化”和“晚期转化”的区分能力强很多因为不同特征可以分别影响T1和T2的参数第二在线推理时可以回答“再等24小时这条流量有多大可能完成转化”这对接预算节奏非常有价值。2.3 训练样本的分桶与权重设计级联结构需要更精细的样本分类不能只按“是否转化”分正负。我按观察窗口内的状态把样本拆成四类样本类型观察到的状态处理方式AF1已观察到最终转化中间行为M是否观察到都行正样本权重1BF0但M1弱负样本权重需根据“M发生后F在剩余时间仍未发生”的概率来调CF0M0且观察时间远超典型延迟强负样本可以放心给低权重DF0M0但观察时间很短不能当负样本未来可能转化需要右截断处理C和D的处理是整个样本设计的核心。D这类样本在点击后几小时内就进入训练集如果直接当负样本会严重压制高转化但慢热的流量。实践里我用的是“软化负例权重”针对每个样本根据当前已等待时间t估计“未来仍可能转化”的概率然后用它把负例损失打一个折扣。具体公式不需要写得太复杂可以直接借助前一轮模型输出p_suppress F_hat(x, T_max) − F_hat(x, t)也就是预计在完整窗口内转化概率减去截止当前已转化的概率。当p_suppress大时负例权重就设小一些避免模型把“还没到转化时间”的样本误学成“永远不会转化”。2.4 损失函数为什么要拆开优化很多团队上来就把两个分支的损失加起来做多任务联合训练结果发现M分支学得稀烂。原因很朴素最终转化F的标签本身就带延迟和噪声把噪声反向传播到M分支会让M分支学到一些奇怪的偏好。我在实践中采用分阶段策略。第一阶段只用M标签训练中间行为预测头M标签的噪声远小于F标签也相对及时第二阶段固定M头的梯度训练F头此时F头把M预测值当作特征或者门控乘子上线稳定以后再打开M头的梯度做端到端微调。这样既保留了级联带来的结构先验又不至于让噪声毁掉中间行为信号。损失函数这里还有一个容易被忽略的细节M和F的样本分布差异可能很大。M相对高频F相对低频如果两个损失直接相加最终模型的优化重心会偏向M。我在两个头的损失上各放了一个可学习的权重或者直接按业务目标做权衡如果业务关心“深度付费”F头权重就要更高如果业务关心“促活”M头权重更高。3. 离线评估与在线推理的落地细节3.1 离线评估不能只看AUC延迟反馈模型最误导人的地方在于离线评估。如果直接对第二天回流的数据跑一遍AUC你会发现级联模型和普通多任务模型差别没有想象中大因为排序能力确实提升有限。真正的差异在时间稳定性上。我习惯用时间切片评估方式。取某一天点击的样本分别在第1天、第3天、第7天、第15天各做一次快照每次用同一份模型打分然后观察预测的“完整窗口转化概率”是否随时间漂移。理想的模型应该是样本刚点击进来时预测一个较高的未来转化率随着时间推移如果转化没发生预测的剩余概率逐渐下降如果转化发生了预测值保持高位。那些只会“等转化发生才输出高概率”的模型本质上是在记忆标签对出价没有帮助。除了概率校准还要看延迟分布的拟合质量。例如预测的T1分布和实际回传的中间行为时间直方图之间KL距离或者分组误差应该保持在一个稳定范围。如果某个渠道的中间行为回传时间明显变慢了但模型分布没有跟上那就是分布漂移信号需要及时刷新分布参数。3.2 在线推理的实时改造在线点击发生时绝大多数用户还没有产生中间行为所以系统真正用来出价的分数是边缘化之后的组合概率。有两种近似做法。第一种是把M0路径直接算出来P(F) ≈ P(M1|x)·P(F1|x,M1) P(M0|x)·P(F1|x,M0)另一种做法是简化为只预测“点击后未来完整窗口内F1”的边缘概率并把M分支作为特征增强项。两者都可行但要注意在线和离网络径必须保持一致否则离线调参全部失效。级联结构在在线侧有个天然优势如果用户点击后短时间内真的发生了中间行为系统可以实时切换分支。例如点击后10分钟检测到用户加购了这时候再把“用户加购”这个状态写进特征直接走M1的路径预测的转化概率会跳升一截比重新跑完整模型要快得多。这种“按状态切换概率分支”的设计在实时竞价场景下非常实用。3.3 阈值的敏感性广告模型输出的绝对值比排序排名更加重要因为出价公式里要用CVR预测值去乘以期望扣费。级联结构有个天然的坑两个小于1的概率相乘结果会往小偏。P(M1|x)如果是0.1P(F|M1)如果也是0.5连乘下来只有0.05而真实付费率可能是0.08。这个系统性低估会让出价变成过于保守。解决办法不是回到单模型而是在日志空间做组合log P(F) log P(M1|x) β·log P(F1|x,M1) C其中β是压缩指数用来调节两个概率的尺度。β偏小时模型更依赖M分支做排序β偏大时更依赖F分支。这个参数我一般手动调节用业务口径的校准损失来做选择而不是网格搜索几十组因为线上成本曲线太敏感。3.4 监控体系要覆盖什么级联模型上线以后监控不能只看最终转化率的波动。我拆成三层监控M层监控中间行为回传率是否下降M预测概率是否漂移M延迟分布是否变化F层监控F预测概率是否校准最终转化延迟分布是否变化组合层监控最终输出的预算消耗速度、成本曲线、边际ROI尤其是M层的不一致问题很多时候线上成本波动并不是F模型变差了而是某个渠道的中间行为回传率突然从80%降到40%导致样本标签里的M大量缺失M头预测概率跟着下降连锁反应到最终输出。这种情况如果不分层监控排查起来会非常痛苦。4. 我们在真实流量中踩过的坑四个典型问题4.1 中间行为回传不一致导致样本噪声这是我认为整套框架里最容易踩、也最隐蔽的坑。不同渠道对“加购”“激活”这类中间行为的定义和回传能力完全不一样。有的媒体SDK能稳定回传加购事件有的渠道因为技术链路问题会漏传大部分中间行为。如果我们把“没有收到M信号”直接当成“M0”高回传渠道会被模型偏爱低回传渠道被严重低估。我当时的处理方式是给每个渠道单独估计一个M覆盖系数训练时对该渠道的M标签做缺失修正。具体做法是统计每个渠道已转化样本里“观察到了M”的比例用这个比例去校准未转化样本中M0的可信度。如果某个渠道的已转化样本里M回传率只有20%那它未转化样本里M0的置信度也要打对应折扣。4.2 时间戳倒挂与乱序异步回传链路里时间戳倒挂并不罕见。日志里可能出现点击时间比中间行为时间还晚的情况比如中间行为记录了早上10点点击时间记录却是10点半其实是点击在前的。级联模型对时间顺序极其敏感如果让这种倒挂样本直接进入训练它的延迟会变成负数分布拟合直接出问题。我们最终在样本预处理阶段做了一次时间轴仲裁以点击时间为基准如果中间行为时间或转化时间早于点击时间先看偏移量是否小于某个阈值如果只是秒级偏移通常是时区或时钟偏差统一校正到点击时间之后如果偏差大到无法解释就把该样本的M标签置为缺失而不是强行改时间。这个操作牺牲了一小部分样本但换来了训练稳定。4.3 级联连乘带来的数值稳定性上边说到的概率低估问题在训练阶段还有一个更现实的表现连乘以后梯度太小。P(M)和P(F|M)都属于相对稀疏的事件概率可能都在0.01到0.1之间。连乘得到的最终概率可能只有0.001到0.01这个量级在反向传播时梯度会被压得几乎没有区分度。我在实现里给两个头各自加了独立的输出校准不直接用sigmoid输出相乘而是让每个头输出logit再在log空间做加法。这样数值范围稳定得多而且可以通过调节两个头logit的缩放系数来控制最终概率分布形状。经验是β设在0.8到1.5之间往往比较稳具体要看业务真实转化率的高低。4.4 窗口口径与大促脉冲的适配最后一个坑来自业务侧。归因窗口在广告系统里通常被设为7天或者30天但模型训练如果不做特殊处理天然偏向近期转化样本长期深度转化会被压薄。大促期间更明显流量密度短时间暴增用户决策周期被压缩延迟分布整体左移。如果模型还在用平时训练出来的延迟分布会把很多“原本会在三天后转化、但因为大促当晚就转化”的样本判定为异常反而拉高预测。应对方式是在训练特征里加入“活动脉冲标量”比如当前流量是否处于大促期、距离大促开始多少小时同时在在线侧对延迟分布参数做指数移动平均近几小时的数据权重远高于前几周的数据。这些细节在论文里往往一笔带过但对稳定上线非常关键。一些个人体会这套级联延迟反馈建模框架核心并不高深无非是把“点击到最终转化”这个复合延迟拆成了“点击到中间行为”和“中间行为到最终转化”两段然后分别建模、分别监督、分别估计延迟分布。但落地过程中最花时间的反而是那些看起来不起眼的事情样本分桶是否合理渠道回传不一致有没有修正延迟分布参数有没有跟随流量变化及时刷新。如果你所在的团队也面临类似的延迟反馈问题我的建议是不要一上来就堆模型结构。先把训练样本按“已转化/已中间未终转/未中间/短观察窗”分清楚把右截断权重做对再把延迟分布拆成级联的两层效果往往比直接换一个大模型更明显。这个框架的下一步可以往更深方向扩比如加购之后还有到店、支付之后还有复购每多一层级联都需要多一套监控和样本管理收益和成本要仔细衡量。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询