【读书笔记】计算广告(第3部分)

做者:LogMweb

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

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

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

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

第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 计算广告系统主要技术

  • 算法优化:cookie

    • 受众定向;
    • 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 产品技术选型实战