作者:LogM

本文原载于 https://segmentfault.com/u/logm/articles,不允许转载~

文章中的数学公式若无法正确显示,请参见:正确显示数学公式的小技巧

本文是 计算广告(第二版) 的读书笔记。

该部分介绍在线广告的关键技术,面向技术人员。

第9章 计算广告技术概览

9.1 个性化系统框架

  • 日志 -> 数据高速公路 -> 流计算 -> 在线特征 -> 投放引擎;
  • 日志 -> 数据高速公路 -> 分布式计算 -> 离线特征 -> 投放引擎。

9.2 各类广告系统优化目标

  • GD:满足合约要求;
  • ADN:CPC,预估点击率;
  • ADX:CPM;
  • DSP:预估点击率+点击价值。

9.3 计算广告系统架构

  • 广告投放引擎:

    • 广告投放机(ad server):召回+排序+收益管理,要求QPS和延迟;
    • 检索(ad retrieval):根据用户标签和页面标签,召回候选集;
    • 排序(ad ranking):计算eCPM,估计点击率+点击价值,排序;
    • 收益管理(yield management):目标全局收益最优;
    • 广告请求接口:web请求或者SDK;
    • 定制化用户划分:广告主对用户的划分数据。
  • 数据高速公路(data highway)
  • 离线数据处理:

    • 用户会话日志生成:以用户ID进行统一整理;
    • 行为定向:挖掘用户日志,打标签;
    • 上下文定向:给上下文页面打标签;
    • 点击率建模:为CTR模型加工特征;
    • 分配规划:以全局收益最优为目标,从日志中挖掘合适的分配方案;
    • 商业智能系统:为决策者提供数据(BI);
    • 广告管理系统:广告主工具(AE),管理投放方案。
  • 在线数据处理:

    • 在线反作弊:去除作弊流量;
    • 计费;
    • 在线行为反馈:实时受众定向、实时点击反馈;
    • 实时索引:实时接收广告数据,更新索引。

9.4 计算广告系统主要技术

  • 算法优化:

    • 受众定向;
    • eCPM预估,点击率预测;
    • 在线分配(合约中的流量要求);
    • 定价策略:博弈中收益最大化;
    • 探索与利用(Explore and Exploit,E&E):更全面地采样;
    • 个性化推荐。
  • 架构优化:

    • 实时索引;
    • NoSQL数据库;
    • 分布式计算+流计算;
    • 高并发、低延迟竞价接口。

9.5 开源工具

  • Nginx:web服务器;
  • ZooKeeper:分布式集群管理;
  • Lucene:索引+检索;
  • Thrift:跨语言通信,用于封装各模块的接口;
  • Flume:数据高速公路;
  • Hadoop:分布式数据处理;
  • Redis:特征在线缓存,属于NoSQL数据库;
  • Storm:流计算;
  • Spark:满足各种计算方式,包括迭代计算、批处理计算、流式计算、图计算、SQL关系查询等。

第10章 基础知识准备

10.1 信息检索

  • 倒排索引:

    • 基本操作:向索引添加文档;给定query,返回对应集合
  • 向量空间模型(vector space model,VSM):

    • TF-IDF构建向量,cos求距离

10.2 最优化方法

  • 拉格朗日法:带约束的优化

    • 当原问题是凸优化问题,则满足强对偶,即对偶问题的最优解是原问题最优解的下界;
    • 强对偶下,满足KKT条件的点,即为原问题解。
  • 下降单纯形法:

    • 不可求导情况下,函数如果是连续的,可用该方法;
    • 有点像高维空间的二分法;
    • 又称阿米巴变形虫法。
  • 梯度下降法;
  • 拟牛顿法。

10.3 统计机器学习

  • 最大熵与指数族分布:

    • 求最大熵的解等价于求对应指数分布的最大似然解;
    • 指数族分布是单模态的,不适合表达多因素并存的随机量。
  • 混合模型和EM算法:

    • 解决指数族分布单模态的问题;
    • 多个指数族分布叠加为混合模型。
  • 贝叶斯学习;
  • 深度学习:CNN、RNN、GAN。

第11章 合约广告核心技术

11.1 广告排期系统

  • CPT,非个性;
  • 防天窗广告:广告加载错误时的默认广告。

11.2 担保式投送系统

  • 流量预测:用历史数据拟合未来的流量;
  • 频次控制:一个用户看到同个广告次数越多,点击率越低;实现方式是把频次记录到数据库。

11.3 在线分配

  • 抽象为二部图匹配问题,引入广告流量在各个周期内近似一致的假设,求解该问题。

第12章 受众定向核心技术

12.1 受众定向技术分类

  • 用户标签t(u):人口属性定向、行为定向;
  • 上下文标签t(c):地域定向、频道定向、上下文定向;
  • 定制化标签t(a,u):特定广告主对特定用户的标签,重定向、新客推荐。

12.2 上下文定向

  • 半在线抓取系统:上下文定向需要抓取上下文内容,但实时抓取延迟太大,全网爬虫则成本太高;一般的解决方法是,当有某个页面上下文标签的请求时,进行抓取并放入缓存,该次广告展示来不及使用该标签就忽略,但以后相同页面的上下文请求就可以在缓存中获取。

12.3 文本主题挖掘

  • 主题模型(topic model)
  • LSA(latent semantic analysis,潜在语义分析),无监督方式,对 TF-IDF 矩阵做 SVD 分解,类似 PCA。
  • PLSI(probabilistic latent semantic indexing,概率潜在语义索引):假设有k个主题($z_1,z_2,..,z_k$),用k个多项式分布的混合模型进行建模 $p(w_n|z,\beta)$,$\beta$ 是参数,共有k组,$w_n$ 是文档中的每个词;使用EM求解该混合模型。
  • LDA(latent dirichlet allocation,潜在狄利克雷分配):在 PLSI 的基础上,引入贝叶斯,对数据不足时做平滑。
  • word2vec。

12.4 行为定向

  • 建模:使用泊松分布对某个用户在某类定向广告上的点击次数建模;用线性模型联系泊松分布的参数 $\lambda$ 和用户行为;整个模型相当于泊松分布的广义线性模型。
  • 特征:用户行为映射到事先确定的标签体系中,并用单位时间累积强度表示;使用滑动平均求时间窗口内的平均值;另外需要考虑:

    • 训练集长度:为了消除工作日带来的周期性,一般训练集天数选为7的倍数;
    • 时间窗口大小:希望系统反应更即时,则使用窄的时间窗口。
  • 决策:整个模型是线性的,今天的得分可以由前几天的得分滑动平均得到。
  • 评测:reach-ctr 曲线。

12.5 人口属性预测

  • 机器学习中的多分类问题:性别、年龄、教育程度、收入水平。

12.6 数据管理平台

第13章 竞价广告核心技术

13.1 竞价广告计价算法

  • GSP:广义第二高价;
  • MRP:市场保留价(最终价格不能低于此价格);
  • 价格挤压因子:控制最终的排序中点击率和出价哪个影响大。

13.2 搜索广告系统

  • 查询拓展:

    • 基于推荐的方法:协同过滤;
    • 基于主题模型的方法:主题模型;
    • 基于历史效果的方法:效果明显。
  • 广告放置:在一段时间内北区整体广告条数约束的前提下,提高广告的整体营收。

13.3 广告网络

  • 短时行为反馈与流计算:

    • 实时反作弊;
    • 实时计费:预算用完的广告及时下线;
    • 短时用户标签;
    • 短时动态特征:CTR预测中的动态特征。

13.4 广告检索

  • 布尔表达式的检索;
  • 相关性检索:WAND算法,TF-IDF算相关性+小顶堆快速检索;
  • 基于DNN的语义建模:DSSM、Youtube个性化推荐模型;
  • 近似最近邻语义检索(ANN):

    • 哈希算法:局部敏感哈希(LSH);
    • 向量量化算法:层次K均值树(HKM tree);
    • 基于图的算法:NSW。

第14章 点击率预测模型

  • 点击率预测建模为"回归问题"而不是"排序问题",因为点击率要用于预估eCPM以便出价。

14.1 点击率预测

  • 基本模型:逻辑回归;
  • 优化算法:L-BFGS、置信域法;
  • 校正:正负样本不平衡问题;
  • 特征:

    • 特征的非线性化:分桶、平方、log、根号;
    • 特征组合;
    • 动态特征:某个特征组合的历史点击率;
    • 偏差与CoEC(click on expected click):

      • 原因:比如广告位带来的点击率偏差,顶部广告位和底部广告位的点击率差异很大;
      • 解决:对不同的广告位预估"期望点击率"(EC),CoEC=某广告点击率/广告位期望点击率。
      • 常见的偏差:广告位位置、广告位尺寸、广告投放延迟、日期和时间、浏览器。
    • 平滑:特征缺失问题、该特征样本不足时的统计平滑问题;
    • 评测:ROC;
    • 智能频次控制:将EC计数或者频次计数作为特征加入到模型,抑制高频次广告的投放。

14.2 其他点击率模型

  • 因子分解机(factorization machine,FM);
  • GBDT;
  • 深度学习点击率模型。

14.3 探索与利用

  • 当投放的总是最优的广告的时候,一些长尾广告的特征的采样就会不准确。
  • 强化学习:分出一部分流量用于强化学习的探索和利用(E&E),多臂老虎机问题(multi-arm bandit,MAB);

    • UCB方法(upper confidence bound,置信上界):在每次投放时不简单选择经验上最优的广告,而是考虑经验估计的不确定性,选择估计值上界最大的广告;
    • 考虑上下文的bandit:LinUCB。

第15章 程序化交易核心技术

15.1 广告交易平台

  • cookie映射;
  • 询价优化:每次询价只对可能赢的DSP发起,减轻服务器压力;但要避免某些DSP完全获取不到流量的问题。

15.2 需求方平台

  • 定制化用户标签;
  • 点击率预估:增加CoPC(click on predicted click),真实点击与预估点击的比,对点击率高估和低估的进行修正;
  • 点击价值估计:CPS/CPA/ROI结算时使用,点击价值 = 到达率 * 转化率 * 转化单价;
  • 出价策略:考虑预算约束。

15.3 供给方平台

  • 网络优化:动态决定将广告请求发给哪个广告网络。

第16章 其他广告相关技术

16.1 创意优化

  • 程序化创意:地域性创意(如把用户所在地区的联系电话放到广告中)、搜索重定向创意(如把用户历史搜索词放到广告的搜索框中)、个性化重定向创意(如淘宝的重定向广告都是实时生成的);
  • 点击热力图:统计一个创意的哪个区域最容易被用户点击;
  • 发展趋势:视频化、交互化,承载更多信息。

16.2 实验框架

  • 以用户来分桶,而不是随机分桶(因为多次广告展示之间有相关性)。

16.3 广告监测与归因

  • 广告监测:委托第三家核对实际的展示数和点击数;
  • 广告安全:某些广告放到特定媒体(如低俗媒体)上会有负面效果;媒体会伪装自己的流量以次充好;要确认浏览器确实发生了渲染过程(即广告确实对用户可见);
  • 效果归因:CPA/CPS/ROI结算的广告,需要确认转化数据的正确性,并确定该转化用户是从哪个媒体进入的。

16.4 作弊与反作弊

  • 作弊方法分类:

    • 作弊主体:

      • 媒体作弊:媒体自己构造虚假的点击行为;
      • 广告平台作弊:ADN或ADX构造虚假的点击行为;DSP构造虚假的点击、展示、转化行为;
      • 广告主竞争对手作弊:消耗广告主预算;
    • 作弊原理:

      • 虚假流量作弊(non-human traffic,NHT):构造虚假的展示、点击、转化行为;
      • 归因作弊:将别人带来的转化行为归因到自己名下;
    • 作弊手段:机器作弊、人工作弊。
  • 常见作弊方法:

    • 服务器刷监测代码:用爬虫访问网页让广告主误以为曝光量很大;
    • 客户端刷监测代码:用户访问网页时,网页脚本让用户自动在后台多访问几次,让广告主误以为曝光量很大;
    • 频繁换用户身份:与上面两种方式结合使用;
    • 黑客:黑客控制被感染设备在后台访问网页;
    • 流量劫持;
    • cookie填充:比如用户在淘宝购物时,跳转地址被修改,让淘宝误以为用户是第三方通过第三方网站点击广告过来的;
    • IP遮盖:发现反作弊者时,隐藏自己;
    • 点击滥用与点击注入。

16.5 产品技术选型实战


LogM
85 声望18 粉丝