目录
4.3 展示量合约
4.3.1 流量预测
一、预测问题的特殊性
二、预测方法的技术演进
阶段一:基于历史均值的朴素预测
阶段二:传统时间序列模型
阶段三:机器学习与特征工程
阶段四:层次化预测与矩阵分解
三、预测结果的评估与校正
4.3.2 流量塑形
一、塑形的动机:解决供需错配
二、塑形的核心手段
1. 库存预留(Inventory Reservation)
2. 流量引导(Traffic Steering)
3. 创意选择塑形(Creative Shaping)
4. 价格塑形(Pricing Shaping)
三、塑形系统的架构
4.3.3 在线分配
一、问题定义:在线二分图匹配
二、算法挑战与经典解法
1. 贪心算法及其局限
2. 基于比例的贪心算法
3. 基于线性规划对偶的在线算法 —— 理论突破
三、工业级系统的工程考量
4.3.4 产品案例
案例背景:大型电商平台“星选商城”的618大促
合约细节:
汇流媒体平台的系统如何工作?
案例启示:
4.3 展示量合约
合约广告的演进故事,在经历了从“买广告位”到“买人群”的范式转变后,迎来了其技术复杂性的巅峰——展示量合约(Guaranteed Display / Guaranteed Delivery)。如果说广告位合约是“空间租赁”,那么展示量合约就是一场“目标人群的注意力采购”。广告主向媒体(或大型广告网络)承诺:“我要在未来一段时间内,向符合我要求的目标人群(如‘北京地区25-35岁的汽车兴趣者’),购买至少N次广告展示。”媒体则承诺:“我保证完成这个交付任务。”
这看似简单的商业承诺,背后却隐藏着计算广告史上第一个真正意义上的“硬核”计算挑战。它要求系统不仅要知道“谁是谁”,还要能预测未来、塑造流量、并在毫秒间做出全局最优的分配决策。本节将深入展示量合约的技术腹地,揭示支撑其运行的三大核心技术支柱:流量预测、流量塑形与在线分配,并探讨它们如何共同构建起一个担保式投送的智能系统。
4.3.1 流量预测
一切担保式交易的基础,都是对未来供给的可靠预测。在展示量合约中,媒体(卖方)必须能够回答一个关键问题:“在未来第T天,预计会有多少符合‘北京地区25-35岁汽车兴趣者’条件的用户,访问我的网站/APP?”
流量预测的精度,直接决定了媒体的商业风险:预测过高,可能签下无法完成的合约,面临违约罚款和声誉损失;预测过低,则意味着优质库存被贱卖,收入受损。因此,流量预测是展示量合约系统的“导航系统”。
一、预测问题的特殊性
与传统的时间序列预测(如预测明日股市大盘点数)不同,展示量合约的流量预测具有独特挑战:
高维度组合爆炸:需要预测的不是总流量,而是满足“多重定向条件组合”的细分流量。条件可能包括:地域、年龄、性别、兴趣标签、时段、设备类型等。一个5维条件,每维有10个取值,理论上就有10^5=10万种组合需要预测。大多数组合的流量极其稀疏。
数据稀疏与冷启动:对于新上线的广告位、新定义的人群标签组合,历史数据可能为零或极少,无法使用传统时序模型。
外部因素强干扰:流量受节假日、热点事件、天气、竞品活动、甚至平台自身的改版影响巨大。
实时性要求:预测需要定期(如每天)更新,以反映最新的流量趋势和用户行为变化。
二、预测方法的技术演进
阶段一:基于历史均值的朴素预测
方法:取过去N天(如28天)同一人群在同一时段的平均展示量,作为未来预测值。
优点:简单、稳定。
缺点:无法应对趋势、周期和突发事件;对稀疏组合预测不准。
阶段二:传统时间序列模型
方法:使用ARIMA(自回归积分滑动平均)、指数平滑等模型,对每个细分流量单独建模。
优点:能捕捉趋势和季节性。
缺点:模型数量随组合数爆炸,维护成本高;对稀疏序列失效;难以融入外部特征。
阶段三:机器学习与特征工程
这是工业界的主流方法。将预测问题转化为一个“回归问题”。
预测单元:以“(定向条件组合, 未来日期)”为一条样本。
特征工程:
历史流量特征:过去1天、7天、28天的同一组合流量均值、方差。
时间特征:星期几、是否节假日、月初/月末、季度。
属性特征:将定向条件本身(如地域=北京,兴趣=汽车)进行独热编码或嵌入表示。
外部特征:天气预报(温度、降水)、社会热点指数、竞品广告活动强度(通过监测)。
趋势特征:该组合流量的周环比、月同比变化率。
模型选择:梯度提升树(如XGBoost, LightGBM)因其对表格数据的优异表现、能处理缺失值、且特征重要性可解释,成为该领域的事实标准。深度神经网络在处理海量、高维稀疏特征时也显示出潜力。
训练与预测:使用过去数月的历史数据训练模型。每天定时运行预测任务,产出未来多天(如未来7天)各细分人群的流量预测量。
阶段四:层次化预测与矩阵分解
为了应对组合爆炸和稀疏问题,更先进的系统采用“自顶向下”或“自底向上”的层次化预测策略。
核心思想:利用流量数据的层次结构(如 总流量 > 北京流量 > 北京且汽车兴趣流量 > …)之间的聚合约束关系。
方法:
先使用强信号模型准确预测上层、流量大的聚合节点(如总流量、各一级兴趣的总流量)。
然后,利用历史比例或通过“矩阵分解”技术,将上层预测值“拆解”到下层细分的组合上。
矩阵分解模型:将“(用户群, 时段)的流量”看作一个大矩阵,用户群由多个属性组合定义。这个矩阵是极其稀疏的。通过矩阵分解(如奇异值分解SVD或概率矩阵分解PMF),可以将每个用户群映射到一个低维隐向量,每个时段也映射到一个低维隐向量,流量的预测值由这两个向量的内积决定。这能有效利用所有组合间的隐含关联信息进行预测,对稀疏和冷启动情况处理得更好。
三、预测结果的评估与校正
流量预测不是一锤子买卖,而是一个持续的“预测-观测-校正”闭环。
评估指标:常用均方根误差(RMSE)、平均绝对百分比误差(MAPE)。对于稀疏流量,MAPE可能不稳定,需结合绝对误差看。
在线校正机制:系统会实时对比预测流量与实际发生的流量。当发现某一细分人群的实际流量持续偏离预测值(如连续3小时低于预测的80%),系统会触发预警,并动态调低该人群未来的预测值,同时调整正在进行中的在线分配计划,以避免合约无法完成。
不确定性估计:高级系统不仅预测流量期望值,还会预测其置信区间(如90%可能性的流量范围)。这为销售定价(高风险合约溢价)和运营决策(是否接单)提供了更科学的依据。
从我的实践视角:在雅虎应对“热点事件”的预测挑战
在雅虎门户时代,重大体育赛事(如世界杯、奥运会)是流量和广告收入的爆发点,也是流量预测的“噩梦”。传统时序模型完全失效。我们的解决方案是构建一个“事件感知”的预测框架:
事件库建设:维护一个结构化的未来事件日历,包含事件类型(体育、娱乐、政治)、等级(S/A/B级影响力)、起止时间。
历史模式挖掘:分析同类历史事件期间,各类频道(体育、首页、新闻)的流量放大系数(如世界杯期间,体育频道流量是平日的5倍)。
实时调整因子:在事件进行中,根据实时流量与基线流量的比值,动态调整剩余时段的预测。
跨频道流量转移预测:预测热点事件会从其他频道“虹吸”多少流量,以便对其他频道的合约进行风险预警。
这套机制让我们在多次热点事件中,仍能保持合约履约率在95%以上,并抓住了收入激增的机会。这让我深刻体会到,流量预测不仅是数据科学,更是对用户群体行为和社会脉搏的理解。
4.3.2 流量塑形
有了准确的预测,媒体只是“知道”未来会有什么。而流量塑形(Traffic Shaping)则是主动出击,去“影响”流量的形态,使其更匹配已售出合约的需求,从而提升整体填充率和收入。如果说流量预测是“看天吃饭”,流量塑形就是“人定胜天”的尝试。
一、塑形的动机:解决供需错配
展示量合约的典型困境是供需的结构性错配:
案例:媒体签了两份合约:
合约A:向“男性汽车兴趣者”展示1000万次。
合约B:向“女性美妆兴趣者”展示800万次。
问题:自然流量中,“男性汽车兴趣者”的比例可能只有30%,而“女性美妆兴趣者”占40%。如果被动投放,合约A可能因目标人群不足而无法完成,而合约B的目标人群则有富余。
解决方案:流量塑形。其核心思想是:通过改变非目标流量的价值或路径,间接地增加目标流量的供给。
二、塑形的核心手段
1. 库存预留(Inventory Reservation)
这是最直接的塑形方式。系统在流量预测的基础上,为已售出的合约提前“圈定”一部分未来流量,禁止其他广告(如按效果竞价的不保量广告)使用这部分流量。这保证了合约的优先级。
实现:在广告检索的在线决策流程中,当一个用户请求到来时,系统首先检查该用户是否符合某个未完成合约的目标人群。如果是,则优先分配给该合约。
2. 流量引导(Traffic Steering)
当目标流量不足时,系统可以尝试引导“近似”的非目标流量,使其满足合约条件。
应用场景:最常见的引导是针对“人群属性”的塑形。例如,合约要求“男性”用户,但当前来访的是女性用户,无法满足。
引导方法:通过产品设计,影响用户行为。例如:
在女性用户访问的页面上,推荐更多男性可能感兴趣的体育、汽车类内容链接,吸引男性用户点击流入。
调整不同内容频道的入口曝光权重,短期内略微提升目标人群偏好频道的流量。
注意:引导需非常谨慎,不能损害核心用户体验。塑形的核心是“微调”,而非“扭曲”。
3. 创意选择塑形(Creative Shaping)
这是一种更精细、更常用的塑形手段。当同一个广告位有多个合约候选时,选择展示哪个广告,可以影响后续流量的构成。
案例:一个男性用户访问,他可能同时符合合约A(汽车)和合约B(男性运动)。展示汽车广告,会强化他“汽车兴趣者”的标签;展示运动广告,则会强化其“运动兴趣者”标签。系统需要做出选择。
策略:如果系统判断当前“汽车兴趣者”的供给相对于合约需求更为紧张,而“运动兴趣者”供给充足,那么它应该优先将这次展示机会分配给合约A(汽车)。这相当于通过广告创意本身,来“确认”和“强化”用户的某一兴趣属性,为后续满足同类合约储备“合格”流量。这是一种“为未来投资”的决策。
4. 价格塑形(Pricing Shaping)
通过动态调整非合约流量(即进入公开竞价市场的流量)的底价,来间接调节合约流量的消耗速度。
场景:系统发现,用于满足合约A的“男性汽车兴趣者”流量消耗过快,照此速度可能在合约期内提前耗尽。而用于公开竞价的同类流量底价较低,被DSP以低价买走。
行动:系统可以临时、小幅提升公开市场中“男性汽车兴趣者”流量的底价。这会导致两个结果:
部分出价低的DSP放弃购买,这部分流量被“节省”下来。
由于竞价获胜价提高,媒体的非合约收入可能暂时增加。
被“节省”下来的这部分流量,在后续可以用于满足合约A。通过牺牲一部分当下的非合约收入机会,来保障未来更高价值的合约履约。
本质:这是在不同价值(合约的确定性收入 vs. 公开市场的波动性收入)之间进行动态权衡和置换。
三、塑形系统的架构
一个流量塑形系统通常作为一个独立的服务模块,位于广告服务器之前或集成在其中。
状态监控器:实时监控所有进行中合约的消耗进度、各细分人群的流量供给与消耗速率。
策略引擎:根据预设的优化目标(如最大化合约完成率、或综合收入最大化),计算出一组塑形策略,例如:未来1小时内,将“男性汽车兴趣者”流量向合约A的分配权重提升10%,并将该人群的公开市场底价提升5%。
策略执行器:将策略转化为广告服务器可执行的配置参数,如调整优先级权重、修改底价规则。
从我的实践视角:在雅虎构建“全局优化器”
在雅虎,我们将流量塑形与在线分配深度耦合,构建了一个“担保式投送优化器”。它不再是被动地根据当前用户匹配合约,而是拥有一个“未来视角”。
系统内部维护着一个所有未完成合约的“需求清单”,以及一个对未来流量的概率预测。当一个用户请求到来时,优化器会进行如下思考:
“这个用户有哪些属性?(男性, 北京, 汽车兴趣)”
“有哪些合约需要这些属性?(合约A需要‘北京男性’, 合约B需要‘汽车兴趣者’)”
“这些合约的剩余量和紧急程度如何?(合约A还剩很多量但不紧急, 合约B量少但即将到期)”
“如果我把这次展示给了合约A,对未来完成所有合约的整体计划有何影响?给了合约B呢?”
优化器会模拟不同分配选择对全局计划的影响,选择那个能让所有合约的整体完成可能性最高、或总体剩余可售库存价值最大的选项。这本质上是在求解一个带随机过程的动态规划问题,我们采用了基于线性规划对偶解的实时贪心算法来近似最优解。这个系统将我们的合约填充率提升了超过20%,并显著减少了高价值合约的未完成风险。
4.3.3 在线分配
流量预测是“知”,流量塑形是“调”,而在线分配(Online Allocation)则是“行”。它是整个担保式投送系统的“最终决策者”,在每一次广告展示请求到来的毫秒之间,决定将这次机会分配给哪一个合约(如果有多位竞争者),或者是否释放到公开市场。这是计算广告领域一个经典且优美的算法问题。
一、问题定义:在线二分图匹配
我们可以将在线分配抽象为一个“在线二分图匹配”问题(见图4-4):
供给节点(左集):依次到达的、带有不同属性标签的用户展示机会。它们是“在线”、按序到达的,系统必须即时为每个机会做出不可撤销的分配决策,无法预知未来。
需求节点(右集):所有已签署、待完成的展示量合约。每个合约都有自己的目标人群描述(一组标签条件)和剩余所需展示量。
边(匹配可能性):当且仅当一个到达的供给节点(用户)的属性满足某个合约的目标人群条件时,两者之间存在一条边,表示可以匹配。
目标:在所有供给节点依次到达并完成分配后,最大化某种效用。通常有两个目标:
履约目标:在合约到期前,尽可能满足所有合约的展示量要求(即尽可能多地完成匹配)。
价值目标:每个匹配(将一次展示分配给一个合约)能带来一定的收入(合约约定的CPM)。目标是最大化总收入。
供给 (在线到达的用户请求)
+------------------------+
| 用户1: [男, 北京, 汽车] |
| 用户2: [女, 上海, 美妆] |
| 用户3: [男, 广州, 体育] |
| 用户4: [男, 北京, 汽车] |
| ... |
+------------------------+
| | |
v v v
+------------------------+
| 需求 (合约) |
| 合约A: [男, 北京] |
| 合约B: [汽车兴趣者] |
| 合约C: [女, 美妆] |
+------------------------+
图4-4:在线分配问题抽象为在线二分图匹配
二、算法挑战与经典解法
问题的核心难点在于“在线性”和“不可撤销性”。如果上帝视角知道所有未来用户请求的顺序,我们可以离线计算出一个全局最优匹配。但在现实中,我们必须为每个当前用户实时决策,而此决策将影响未来合约的完成情况。
1. 贪心算法及其局限
最简策略:当一个用户到达时,从所有满足条件的合约中,随机选一个,或者选剩余量最大的一个。
问题:极易造成“分配不均”。可能导致某些合约过早耗尽目标流量而无法完成,而另一些合约则获得过多流量。
2. 基于比例的贪心算法
思想:根据合约剩余需求量占总剩余需求的比例,来决定分配概率。
方法:对于一个满足合约A、B的用户,按照
(A剩余量 / (A剩余量+B剩余量))和(B剩余量 / (A剩余量+B剩余量))的概率进行随机分配。改进:比纯随机好,但仍无法应对流量分布的不均匀性(例如,适合合约A的用户流后期可能变少)。
3. 基于线性规划对偶的在线算法 —— 理论突破
这是学术界和工业界解决此类问题的标杆性方法。其核心思想非常巧妙:
离线规划(准备阶段):利用流量预测数据,将问题建模为一个“最大流”或“运输问题”的线性规划(LP)。
变量:X_{i,j} 表示将预测中属于人群i的流量,分配给合约j的量。
约束:每个合约j的分配总量不能超过其需求量;每个人群i的分配总量不能超过其预测供给量。
目标:最大化总价值(或履约量)。
求解对偶变量:求解这个LP,得到一组“对偶变量”,通常记为 p_j(对应每个合约j)和 r_i(对应每个人群i)。在经济学解释中,p_j 可以理解为合约j的“影子价格”,即完成合约j的每一单位展示所带来的边际价值。r_i 可以理解为人群i的“机会成本”。
在线决策(执行阶段):当一个真实用户(属于人群i)到达时:
对于每一个满足条件的合约j,计算其“收益” = 合约j的单价 - r_i。这里 r_i 代表将这次展示用于满足其他可能合约的机会成本。
选择“收益”最大的合约进行分配。如果所有收益都为负,说明将这次展示用于任何合约都不如用于非合约市场(其机会成本即非合约市场的预期收益),那么就将其释放到公开市场竞价。
优点:该算法具有理论上的性能保证(竞争比),即在最坏情况下,其在线表现不会比离线最优解差太多。它通过影子价格和机会成本,将全局的优化目标“编码”到了每次本地决策中。
实践变种:在实际系统中,影子价格 p_j 和机会成本 r_i 不是静态的,会根据合约消耗进度和实际流量与预测的偏差进行动态更新,形成一个自适应闭环。
三、工业级系统的工程考量
在真实的广告系统中,在线分配算法的实现远不止数学模型那么简单,还需考虑诸多工程和产品因素:
多目标权衡:系统通常不单纯追求履约率或收入最大化,而是多个目标的加权组合,例如:
目标 = α * 总收入 + β * 总履约量 - γ * 用户体验惩罚。这要求算法框架能灵活支持多目标优化。频次控制(Frequency Capping):合约中往往包含对同一用户的最大展示次数限制(如“同一用户最多看到3次”)。这给匹配问题增加了“用户-合约”维度的约束,使问题从简单的二分图匹配变为更复杂的带容量约束的匹配,算法复杂度急剧上升。
实时性与可扩展性:决策必须在10-100毫秒内完成,且能应对每秒数十万甚至百万级的请求峰值。算法必须轻量、高效,复杂的计算(如LP求解)必须在离线阶段完成,在线阶段只进行快速的查询和比较。
与竞价市场的协同:系统需要精准评估将一次展示用于合约的“机会成本”(即如果投放到公开RTB市场可能获得的收入)。这需要对公开市场的竞价水平有准确的实时预估,将合约分配与程序化交易深度打通。
图4-5:担保式投送系统(含在线分配)工作流程图
(此处可配图:流程图展示从用户请求开始,依次经过“用户识别与画像查询”、“合约候选检索”、“在线分配决策引擎”(核心,包含计算收益、选择胜出者、检查频次控制等步骤)、“创意返回”的完整过程。图中突出“在线分配决策引擎”与“离线流量预测与LP求解模块”的数据交互。)
4.3.4 产品案例
理论是灰色的,而实践之树常青。让我们通过一个具体而生动的产品案例,来领略展示量合约技术在实际商业环境中是如何运作并创造价值的。
案例背景:大型电商平台“星选商城”的618大促
广告主:星选商城。
目标:在618大促前两周(预热期),向核心目标人群大规模曝光其主会场入口和优惠信息,提升大促期间的活跃用户数和销售额。
挑战:目标人群量级大(数千万),要求曝光频次控制(同一用户最多看到5次),且需要在特定时间段内(预热期)集中完成海量曝光。单纯的竞价广告无法保证如此大量、集中且受控的曝光。
解决方案:与顶级流量平台“汇流媒体”签订一份巨额“展示量合约”。
合约细节:
定向条件:“过去30天在汇流媒体平台上有过电商相关行为(浏览、搜索、点击商品广告)的用户”。
展示量:10亿次展示。
投放周期:14天。
频次控制:同一用户在整个周期内最多看到5次该广告。
结算:按CPM保量结算。
特殊要求:曝光分布需相对均匀,避免前两天过度投放导致后续用户疲劳。
汇流媒体平台的系统如何工作?
第一步:销售与预测阶段(签约前)
销售接到需求。运营在后台输入定向条件:“电商兴趣用户”。
系统调用流量预测模型,基于历史数据预测未来14天内,符合该条件的用户总访问量(即总供给)。预测结果显示,总供给约为12亿次展示。
系统评估风险:供给(12亿) > 需求(10亿),且有一定缓冲空间。同时,系统检测到该人群是公开竞价市场的热门人群,均价较高,机会成本不菲。
基于预测、机会成本和商业谈判,平台给出了一个较高的CPM报价。双方达成一致,合约生效。
第二步:系统准备阶段(签约后)
流量预测细化:预测模型被再次调用,以小时为粒度,预测未来14天每天各时段“电商兴趣用户”的流量分布。
离线线性规划求解:系统将合约需求(10亿次,带频次约束)和细粒度流量预测输入一个大型LP求解器。求解器计算出:
一套最优的分配计划(每小时大致应分配多少展示给该合约)。
每个小时粒度流量单元的“影子价格/机会成本”。
策略加载:将分配计划和机会成本参数加载到在线广告投放引擎的实时决策模块中。
第三步:实时投放与动态优化阶段(合约执行期)
当一个用户访问汇流媒体的APP时,用户画像系统实时判断其是否为“电商兴趣用户”。
如果是,该次展示请求进入担保式投送通道。在线分配模块开始工作:
查询该用户当前已观看此广告的次数(假设是第2次)。
计算本次展示用于满足“星选商城”合约的“收益”:
收益 = 合约CPM价格 - 当前时段该人群的机会成本。由于合约CPM价格是事先约定且较高的,收益大概率为正。系统决定将此展示分配给星选商城合约。
频次控制检查:用户已观看2次 < 上限5次,通过检查。
投放节奏控制:系统会参考离线分配计划,如果当前时段已分配量接近计划值,可能会略微调低分配概率,以确保14天内的均匀投放,避免前期耗竭。
实时监控与校正:
大盘监控发现,618预热开始后,“电商兴趣用户”的实际流量比预测高了15%(因为各平台都在做活动,刺激了用户行为)。
系统动态调整:a) 调高未来时段的流量预测;b) 重新计算机会成本(因为供给增加,机会成本下降);c) 在线分配模块使用更新后的参数,可能会将更多增量流量导向该合约,因为其收益变得更高了。同时,系统可能会将一部分原本计划给该合约的流量,释放到价格更高的公开市场,以实现整体收入最大化。
频次监控发现,部分高活跃用户在第3天就达到了5次曝光上限。系统标记这些用户,后续不再向其展示该广告,从而为其他未充分曝光的用户留出机会,提升合约触达的广度。
第四步:合约完成与效果分析
14天后,合约顺利完成,实际交付10.2亿次展示,触达逾2.5亿独立用户,平均频次约4次。
后续效果追踪显示,被该合约触达的用户,在618期间登录星选商城的比例和客单价,均显著高于未被触达的对照组,广告主ROI令人满意。
汇流媒体平台不仅获得了可观的合约收入,还通过精密的在线分配,将部分富余的优质流量以更高价卖给了公开市场,实现了收入叠加。
案例启示:
这个案例展示了展示量合约技术的完整价值链条:
对广告主:获得了确定性的、大规模的、受控的品牌曝光,为大型营销活动保驾护航。
对媒体平台:通过流量预测管理了商业风险,通过在线分配和动态优化实现了收入最大化(合约收入+增量市场收入),通过频次控制等机制保障了用户体验。
对技术系统:这是一次从离线预测、规划到在线实时决策、再到动态反馈调优的复杂系统工程的成功实践。它证明,最前沿的学术算法(如基于LP对偶的在线算法)能够在工业场景中创造巨大的商业价值。
结论:
展示量合约,作为合约广告的终极形态,将计算广告的“计算”属性体现得淋漓尽致。它不再是一个简单的广告排期工具,而是一个集预测、优化、决策于一体的“智能履约中心”。尽管在今天,程序化竞价广告占据了更多的话题中心,但展示量合约所开创的技术范式——担保式投送、在线分配、基于定价的资源分配——其思想精髓已经深深渗透到现代广告系统的每一个角落。理解它,就理解了我们如何从承诺“展示一个位置”,进化到承诺“影响一群人”,以及在这背后,数据与算法所扮演的关键角色。这是在线广告产品逻辑中,一段厚重而辉煌的技术史诗。