作者: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遮盖:发现反作弊者时,隐藏自己;
- 点击滥用与点击注入。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。