《计算广告》第三部分计算广告关键技术——笔记(中上)

第11章 合约广告核心技术

最初是CPT广告,需要排期系统。在实际的媒体广告投放中,经常会遇到CPT广告与其他服务器决策的动态广告混合的情形,并需要处理动态广告返回失败时的防天窗问题。

重点形式是按指定受众购买的、按CPM计费的展示量合约广告,需要担保式投送系统,依赖于受众定向、流量预测、点击率预测这三项基本技术,并采用在线分配的方式完成实时决策。还有频次预测,是广告主为了展示的有效性提出的控制性要求。

广告排期系统

不是一个个性化系统,也不太需要服务器端的动态决策,一般技术方案是将广告素材按照预先确定的排期直接插入媒体页面,并通过内容分发网络(Content Delivery Network,CDN)加速访问。这样可以使得广告投放延迟很小,也没有服务端的压力和开销。
在这里插入图片描述
首先获取CPT广告,没有的话找动态广告,不行就防天窗广告。只要CDN 不发生错误,可以保证不会出现广告位上的天窗。通过前端投放,避免访问服务器带来延迟。

往往这样的排期调度系统是媒体投放展示广告的基础系统,而各种动态广告产品的接入则统一在步骤2中进行。

担保式投送系统

在这里插入图片描述
担保式投送需要用到的核心技术,最重要的就是在线分配,另外两项主要的支持技术是流量预测和频次控制,受众定向则在后面集中讨论。

流量预测

流量预测的问题可以描述为:给定一组受众标签组合以及一个eCPM的阈值,估算在将来某个时间段内符合这些受众标签组合的条件、并且市场价在该eCPM 阈值以下的广告展示量。eCPM 阈值主要是用于竞价广告系统中,目的是了解在某出价水平下的流量情形。对于展示量合约式广告来说,这个阈值是不需要的,或者为了工程上一致,将该阈值设为一个很大的常数。

一般的方法是根据历史数据的统计来拟合未来的流量,也可以引入时间序列分析的方法,从流量在时间轴上的规律预测未来某个时间段的流量,这主要适用于需要短时预测的场景,对广告业务来说并不十分必要。工程上的主要挑战在于,给定的受众标签组合可能性非常多,不可能将所有这些组合都预先做好统计,因此反向检索。一般广告检索是通过(u,c)上的标签检索广告a,反向检索是通过受众条件检索每次展示,每次展示是此次(u,c)上的标签。主要步骤为:

  1. 准备文档。将历史流量中,(u,c)上的所有标签的展示合并为一个供给节点i作为文档,并统计其总流量 s i s_i si以及这部分流量上eCPM的直方图 h i s t i hist_i histi。规模太大可以采样。
  2. 建立倒排索引。terms 即为标签。同时,在索引的正排表部分记录 s i s_i si h i s t i hist_i histi
  3. 以广告a标签条件查询符合的供给节点集合。
  4. 估算流量。遍历上一步得到的每个供给节点,对于某个供给节点i,首先计算其与该广告a的eCPM 即 r ( a , u i , c i ) = μ ( a , u i , c i ) ⋅ b i d a r(a,u_i,c_i)=\mu(a,u_i,c_i)\cdot bid_a r(a,ui,ci)=μ(a,ui,ci)bida,然后根据相应的eCPM直方图 h i s t i hist_i histi计算a能获得的流量。这样,就可以估算出a在出价 b i d a bid_a bida情形下近似能获得的流量。

在这里插入图片描述

频次控制

频次,指的是某个用户在一段时间内看到某个或某组广告的曝光次数。“三打理论”(three hit theory)描述频次对广告效果的影响,假设用户已经顺利通过了关注阶段:第一次,刺激消费者试着了解信息,去问“这个广告是什么?”;第二次,刺激消费者去评量,去问“广告内容是什么?”“我曾经看过这个广告吗?”;第三次,消费者接触到广告时会回忆并开始逃离广告。但互联网广告由于广告位置差异,只能记录展示,可能并不有效,但是,随着某个用户看到同一个创意频次的上升,点击率呈下降的趋势这一点是可以被验证的。控制频次,特别是视频广告这样有效曝光程度较高的广告产品,可以提高性价比。
在这里插入图片描述
频次的明确要求主要存在于展示量合约广告中,而在CPC结算的竞价广告中,可以将频次作为CTR 预估的特征之一,从而隐式地对广告的重复展示进行控制。

客户端方案通过cookie记录,投放决策时传给服务器。优点简单易行,而且服务成本低。缺点是扩展性不好,当同时跟踪多个广告的频次时,cookie可能会变得很重,从而影响广告响应时间。在移动应用广告中利用SDK做前端投放控制的场景,客户端的方案是非常好的选择。

服务器端的方案是在后台设置一个专门用于频次记录和更新的缓存,高并发读写。

在线分配

在线分配问题指的是在通过对每一次广告展示进行实时在线决策,从而达到在满足某些量的约束的前提下,优化广告产品整体收益的过程。

在线分配问题

在这里插入图片描述
一般简化为二部图(bipartite graph)匹配的问题,下方是代表广告库存的供给节点(集合记为I,其中某个节点代表的是所有标签都相同的流量库存),上方是代表广告合约的需求节点(集合记为A),满足要求则有边。求解由 i ∈ I i\in I iI a ∈ A a\in A aA的分配比例,使得满足供给方和需求方的约束的同时,某个与广告效果相关的目标函数达到最优。

二部图假设了在同样一组供给节点和需求节点之间发生的广告展示,其目标函数或回报r是没有差别的,即r从(a,u,c)的函数变为(i,a)的函数,是合理的,并且假设整体的收益或目标函数是可分的,目标函数为:
F ( s , x ) = s i x i a r i a F(s,x)=s_ix_{ia}r_{ia} F(s,x)=sixiaria
s i s_i si为供给节点i的总供给量, x i a x_{ia} xia是i分配给a的比例。供给节点的数目会随着定向条件的增加而呈几何级数上升。

优化问题的约束有需求约束(demand constraint),即满足合约 d a d_a da
∑ i ∈ Γ ( a ) q i a s i x i a ≤ d a ∀ a ∈ A \sum_{i\in \Gamma(a)}q_{ia}s_ix_{ia}\le d_a \forall a\in A iΓ(a)qiasixiadaaA
q i a q_{ia} qia是i连接到a的流量惩罚, Γ ( a ) \Gamma(a) Γ(a)是与a相连的供给节点集合。 d a d_a da可以是预算、服务成本等的上限要求;或者是合约量的下限要求。

另一个是供给约束(supply constraint),即不超过总流量:
∑ a ∈ Γ ( i ) x i a ≤ 1 , ∀ i ∈ I \sum_{a\in\Gamma(i)}x_{ia}\le 1,\forall i\in I aΓ(i)xia1,iI

最后是分配变量非负的约束:
x i a ≥ 0 , ∀ ( i , a ) ∈ E x_{ia}\ge 0,\forall(i,a)\in E xia0,(i,a)E

极限性能研究

极限性能研究的指标主要是某一在线分配策略的有效性,即在最差情形下能达到最优解目标函数的 ϵ \epsilon ϵ倍(有效性度量),则分配方案是 ϵ \epsilon ϵ-competitive的。按照已分配的权重进行指数加权会有比较好的极限性能。

实用优化算法

假定流量的分布是平稳的,我们会利用历史流量数据来拟合未来流量 s i s_i si,把在线分配转化成离线求解线性规划问题。但大规模场景不适用。

在线分配对偶问题的解不是紧凑解,其变量数目正比于约束的数目,包括供给约束和需求约束,前者变量的量级数为十万甚至百万千万,但后者的量级在数千级别。为了分配
方案的紧凑性,可以只保留需求约束对应的对偶变量,通过数学变换恢复出供给约束的对偶变量和分配率x,即紧凑分配方案(compact allocation plan)。利用这一方法,只需要在一部分历史数据上求解对偶问题,就可以很高效地进行在线分配。

SHALE算法中,作者对求解对偶变量的步骤进行了优化,采用原始对偶方法迭代进行求解,每次迭代的过程中改善对偶解。节省了线下的计算时间,同时也能更好地支持插入新合同时的增量求解。

高水位(High Water Mark,HWM)算法虽然数学上不是完全严谨,但是由于根据历史数据来制定分配方案本身就具有相当程度的近似,因此其实际效果也相当不错,又加上工程上的便利性,可以考虑在在线分配方案中采用这种算法。关键有两点,一是根据历史流量确定每个广告合约资源的紧缺程度,进而得到分配优先级;二是根据优先级确定各个广告合约的分配比例。优先级可以通过可满足各合约的供给节点总流量的升序排列得到,而在确定了合约的优先级之后,按照优先级依次确定各合约的分配率以满足其流量要求。
在这里插入图片描述
HWM算法在线分配的基本逻辑是:根据优先级依次检查各个符合条件的候选,直至它们的累积分配比例超过1,然后,按照这些合约对应的分配比例随机选择一个合约投放(如图11-6 的上图所示);如果所有的候选合约总的分配比例不足1,那么以1减去其总分配比例的概率请求其他剩余流量变现的广告产品(如图11-6 的下图所示)。此分配过程的关键思想在于以概率和优先级相配合的方式进行投放决策。

第12章 受众定向核心技术

受众定向技术是对广告(a)、用户(u)、上下文(c)这三个维度提取有意义的特征(这些特征也称为标签)的过程。从技术框架来看,受众定向标签可以分成用户标签、上下文标签和广告主定制化标签,最后一个是需求方定义的。

受众定向技术分类

用户标签 t ( u ) t(u) t(u)是以用户历史行为数据为依据,为用户打上的标签。上下文标签 t ( c ) t(c) t(c)是根据用户当前的访问行为得到的即时标签。定制化标签 t ( a , u ) t(a,u) t(a,u)是针对某一特定广告主而言的,因而必须根据广告主的某些属性或数据来加工。
在这里插入图片描述
地域定向、频道定向和上下文定向属于 t ( c ) t(c) t(c)的定向方式;人口属性定向、行为定向属于 t ( u ) t(u) t(u)的定向方式;而重定向和新客推荐(look-alike)则是 t ( a , u ) t(a,u) t(a,u)的定向方式。

还需要对每个广告也打上标签 t ( a ) t(a) t(a),以便与上下文或用户的标签做匹配,一般有两种常用选择:一是直接将广告投放中的广告主、广告计划、广告组、关键词等直接用作标签,二是用人工的方式归类。

可以用一个(a,u,c)上的三维坐标来示意以上的几种标签类型:
在这里插入图片描述
受众定向技术是灵活的,只要从数据中挖掘到有利于广告投放的信号。

上下文定向

从打标签的方法上来看,思路有:

  1. 按规则,例如,将auto.sohu.com 下的网页归在“汽车”这个分类中。
  2. 提取页面关键词,来自搜索引擎关键词匹配。
  3. 提取页面入链锚文本中的关键词。需要全网的爬虫支持。
  4. 提取页面流量来源中的搜索关键词。
  5. 用主题模型将页面内容映射到语义空间的一组主题上,泛化广告主的需求,提高市场的流动性和竞价水平。

半在线抓取系统

页面信息不是广告系统的服务主体内容,不需要像搜索引擎一样预先抓取,半在线(near-line)的抓取系统在在线服务产生实际需求后才尽快抓取。
在这里插入图片描述
请求到来时:

  1. 如何url在缓存中,则返回标签
  2. 否则返回空的标签集合,然后抓取并打标签(秒或分钟级)
  3. 设置缓存合适的TTL(Time to Live)以做到自动更新标签

好处是:在线缓存的使用效率非常高,存的都是最近请求的;页面的信息覆盖率很高,只抓取需要的

半在线的上下文抓取系统非常典型地揭示了在线广告系统弱一致的业务需求:只要保证大多数的广告决策最优正常,很少量的次优决策甚至随机决策都是可以接受的。充分把握这一特点,对于设计高效率、低成本的广告系统至关重要。

文本主题挖掘

文本主题模型(topic model)有两大类别:具有明确标签的监督学习(便于售卖);无明确标签的无监督学习。

假设有一个由M个词组成的词表以及N个文档 { d 1 , d 2 , ⋯   , d N } \{d_1,d_2,\cdots,d_N\} {d1,d2,,dN},采用BoW 表示,文档 d n d_n dn表示为 { x n 1 , x n 2 , ⋯   , x n M } \{x_{n1},x_{n2},\cdots,x_{nM}\} {xn1,xn2,,xnM}的形式,其中 x n m x_{nm} xnm为词表中第m个词 w m w_m wm d n d_n dn中对应的词频或TF-IDF值。一般情况下,矩阵 X = { x n m } N × M X=\{x_{nm}\}_{N\times M} X={xnm}N×M是稀疏的,假设其中对应T个主题,目的是找到主题强度 z n t z_{nt} znt

潜在语义分析(Latent Semantic Analysis,LSA)

对矩阵 X X X进行奇异值分解(Singular Value Decomposition,SVD),找到这一矩阵的主要模式,分解可得三个矩阵:
X = U k Σ V k ⊤ = ( α 1 ⋯ α K ) ⋅ d i a g ( s 1 , ⋯   , s K ) ⋅ ( β 1 ⋯ β K ) ⊤ X=U_k\Sigma V_k^{\top}=(\alpha_1\cdots\alpha_K)\cdot diag(s_1,\cdots,s_K)\cdot(\beta_1\cdots\beta_K)^{\top} X=UkΣVk=(α1αK)diag(s1,,sK)(β1βK)
在这里插入图片描述
其中K是矩阵X的秩, s 1 ≥ s 2 ≥ ⋯ ≥ s K s_1\ge s_2\ge\cdots\ge s_K s1s2sK是X的K个奇异值。左侧的矩阵就是将潜在语义空间中的主题映射到某个文档的变换矩阵,每列是一个话题;而右侧的矩阵则是主题映射到某个文档词表中某个词的变换矩阵。最多可以得到的主题数目等于矩阵X的秩K,不过一般情况下,都会选择一个远小于K 的主题数目用来建模。

LSA 得到的两个变换矩阵不能保证每个元素都为非负值。 U k U_k Uk是话题空间, Σ V k ⊤ \Sigma V_k^{\top} ΣVk是文本在话题空间的表示。

概率潜在语义索引(Probabilistic Latent Semantic Indexing,PLSI)模型和GaP模型

PLSI 方法是通过对文档生成的过程进行概率建模来进行主题分析,生成过程可以表述为以下两个步骤:

  1. 根据每个文档 d n d_n dn生成对应的一个主题z
  2. 根据多项式分布 p ( w n ∣ z , β ) p(w_n|z,\beta) p(wnz,β)生成词, β k \beta_k βk是主题 z k z_k zk对应的参数

在这里插入图片描述
文档集X的生成似然值为:
ln ⁡ P ( X ) = ∑ n , m x n m ln ⁡ { ∑ z P ( w m ∣ z ) P ( d n ∣ z ) P ( z ) } \ln P(X)=\sum_{n,m}x_{nm}\ln\{\sum_z P(w_m|z)P(d_n|z)P(z)\} lnP(X)=n,mxnmln{zP(wmz)P(dnz)P(z)}
P ( z ) P(z) P(z)是多项式分布 M u l t i ( z ; ω ) Multi(z;\omega) Multi(z;ω),混合模型。 P ( w m ∣ z ) , P ( d n ∣ z ) P(w_m|z), P(d_n|z) P(wmz),P(dnz)分别对应LSA中两个变换矩阵,是概率化的LSA,较容易地实现分布式求解。

γ \gamma γ泊松分布描述主题分布和词分布就变成了GaP,没有将每个文档中各个主题变量的强度进行归一化,因此对内容相似的长文本和短文本的概率描述是不同的,而泊松词产生概率也更加适合离散到达事件的描述,因而GaP 模型在主题建模上有一定的合理性。不过,GaP模型的EM最大似然解不像PLSI那样有简单的闭式更新公式,工程实用性有限制。

潜在狄利克雷分配(Latent Dirichlet Allocation,LDA)模型

在文档信息不足或者噪声较大时能够利用贝叶斯的框架对结果进行有效的平滑,视PLSI模型的参数为随机变量,文档生成过程描述为:

  1. 根据泊松分布选择文档长度M
  2. 根据先验分布 D i r ( α ) Dir(\alpha) Dir(α)生成 ω \omega ω
  3. 对每个文档中的词,根据 M u l t i ( ω ) Multi(\omega) Multi(ω)分布选择主题z;给定主题,根据多项式分布 p ( w m ∣ z , β ) p(w_m|z,\beta) p(wmz,β)产生词 w m w_m wm

在这里插入图片描述
相当于PLSI的贝叶斯版本,即给Topic的分布 ω \omega ω加上了先验分布,而先验分布采用的是共轭形式,即狄利克雷分布,在数据噪声较大或者每个文档内容较少时可以达到比较稳健估计的效果。

在实际的工程实践中,LDA模型更为常用的更新方法是吉布斯采样(Gibbs sampling)法,而且这种方法更容易实现分布式更新求解。

有监督主题模型

无监督学习得到的主题有时会存在混淆、不易解释等问题。LDA可以做有监督。

行为定向

需要进行大规模的数据挖掘

行为定向建模问题

目标是找出在某个类型的广告上eCPM相对较高的人群,点击率可以作为建模对象。点击行为是离散到达的随机变量,使用泊松分布:
p t ( h ) = λ t h exp ⁡ ( − λ t ) h ! p_t(h)=\frac{\lambda_t^h\exp(-\lambda_t)}{h!} pt(h)=h!λthexp(λt)
h是某个用户在某个定向类别广告上的点击量,单位有效展示对应的点击数,t代表某个受众标签,而 λ t \lambda_t λt为相应的控制点击行为到达频繁性的参数。行为定向模型要做的就是把用户的行为与频繁性参数 λ t \lambda_t λt联系起来,比如线性模型:
λ t = ∑ n = 1 N w t n x t n ( b ) \lambda_t=\sum_{n=1}^Nw_{tn}x_{tn}(b) λt=n=1Nwtnxtn(b)
w t = ( w t 1 , ⋯   , w t N ) w_t=(w_{t1},\cdots,w_{tN}) wt=(wt1,,wtN)是标签t对应的行为定向模型需要优化的参数,n表示不同的行为类型。原始行为b经过特征选择函数 x t n ( b ) x_{tn}(b) xtn(b)处理。其中:

  1. w可以是t相关的,即对不同的定向标签训练不同的线性函数。可以更准确地对每个类别进行建模,但是当有些类别数据不足时估计偏差较大。此时原始行为也可以考虑经过一个与标签无关的选择函数,因为类的本质特征已经反映在了模型参数矢量上
  2. 主要适用于有明确需求方意义的标签体系,即广告上也有这些标签

当面对一个多自变量的回归问题时,可以先根据目标值的特性选择合适的指数族分布来描述,并用线性模型将多个自变量和指数族分布的参数联系起来。可以利用线性模型更新简单和可解释性强的特点,同时又对目标变量的类型有较强的适应性。这种建模方法称为广义线性模型(Generalized Linear Model,GLM)。

行为定向特征生成

最常用的特征选择函数 x t n ( b ) x_{tn}(b) xtn(b)是将一段时间内的原始用户行为映射到确定的标签体系上,同时计算出各行为在对应标签上的累积强度作为模型的特征输入。 w t n w_{tn} wtn的作用实际上就是调整不同行为类型的重要程度。
在这里插入图片描述
如何将行为累计控制在一段时间以内,工程上有两种常用的方法,分别是滑动窗口法和时间衰减法。
在这里插入图片描述
时间衰减法就是上个时间片的累加特征乘衰减因子 α \alpha α,再加当前时间片的行为强度 x ( d ) x(d) x(d)。该方法更高效。

行为定向的训练过程实际上就是调整各个标签类别上各种特征权重的过程。影响训练结果和效率的因素主要有两个:

  1. 训练集长度,天数一般是7的整数倍。
  2. 时间片大小,反映了对定向的时效性的要求。

排成事件流然后滑动 [参考文献]

各类行为的标签化 x t n ( b ) x_{tn}(b) xtn(b)是行为定向计算过程中最关键的环节。

网页浏览、分享等与内容相关的行为可以通过有监督文本主题模型的方法,将其映射到预先定义好的标签体系上,也可以直接提取内容中的关键词作为标签。

广告点击等与广告活动相关的行为可以转化为对广告落地页内容的分析。当创意为文字链时,可以将其题目或描述作为内容;当创意为图片时,往往需要人工标注其标签,但由于工作量较大且正确性不宜评估,建议只在必要时进行。

最值得重视的是搜索、搜索点击等与查询相关的行为。由于查询的信息量较少,很难直接提取标签。可行的方案有两种:第一种方案是利用搜索引擎做内容扩展,即借助通用搜索引擎,得到查询返回的若干结果作为内容;第二种方案是对查询进行某垂直领域分类时,直接利用相应垂直媒体的标签体系和搜索引擎,借鉴了垂直领域搜索引擎成熟的分类能力,但也限制了标签体系。

转化、预转化等需求方行为往往可以对应到一个单品。同样,利用该单品的分类信息可以将其映射到某个标签上。
在这里插入图片描述

行为定向决策过程

采用时间衰减法可进行递归式计算:
λ t ( d ) = α λ t ( d − 1 ) + ∑ n w n x t n ( d ) \lambda_t(d)=\alpha\lambda_t(d-1)+\sum_n w_n x_{tn}(d) λt(d)=αλt(d1)+nwnxtn(d)

行为定向的评测

可以通过调整线性函数输出 λ \lambda λ的阈值来控制某个标签人群的量,量扩大的情况下一般来说精准性也会降低,评测需要考虑到量的影响。
在这里插入图片描述
标签接触到的人群规模称为reach。该曲线应该大体呈下降的趋势,如果数据质量或定向建模有一些问题,有时会出现非下降的趋势或者头部较低的情况,需要认真检查定向流程或者判断是否已有的数据无法支持该定向标签。reach/CTR 曲线最右端一个点的CTR水平是固定的,即全部用户的情形下的CTR水平,无法通过改善数据和模型来提高。该曲线的斜率越大,往往表示定向模型的鉴别力越强。

在受众定向的过程中,需要保留的是每个用户在各个标签上的得分值,而不是最后二元的判断结果。

人口属性预测

人口属性是用户确定的特点描述,往往还是需要数据驱动的模型,以用户的行为为基础自动预测其人口属性。

不论用什么样的模型来预测人口属性,必须要有一定的拒识门槛,也就是说对那些行为不够丰富或不够有代表性的用户应该输出“未知”的判断,而不是简单地用模型算出一个结果。模型训练集的获得非常重要,往往算法的有效性不如更准确、规模更大的训练集对结果的提升明显。较大训练集的获得往往是要依赖社交网络,比如可以将广告系统的用户身份与微博用户对应,再从微博公开的用户属性获得标注。

除了性别以外的其他人口属性用简单的分类模型并不太准确。

数据管理平台

在这里插入图片描述
统一了数据交易平台和数据管理平台。通过部署在媒体上的代码或SDK收集第一方访问日志,送入数据高速公路。同时通过数据高速公路收集自有的第二方数据,然后把这些日志原始行为映射到结构化或非结构化的受众标签体系上。另外,还会有一些第三方提供的加工好的标签数据直接进入用户标签集。最后通过统一的接口对外提供标签。在这一架构中,DMP 同时对接了第一方、第二方和第三方的数据,并根据这些数据对受众群体进行灵活的、自定义的划分。虽然这些功能并不直接体现在广告交易环节中,却是数据驱动的在线广告中越来越重要的一环。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值