zoukankan      html  css  js  c++  java
  • 计算广告丨《互联网广告算法和系统实践》读书笔记

    引言

    这是我阅读《互联网广告算法和系统实践》的笔记,作者王勇睿,在百度阅读上可以购买,书的篇幅很短,一天就能看完。

    本书主要介绍了搜索广告算法、非搜索(定向)广告算法和实时竞价广告算法,为读者梳理了广告中的常用概念如CTR、ECPM,一个广告系统如何组成,实践中还会考虑什么问题,没有涉及多的数学和算法模型。本书适合入门,但作为小白,很多内容读完后没有具体的案例消化,理解深度上有所欠缺。我想当具备了一定的实践经验后再来翻阅此书,才能融会贯通。之后的计划是继续阅读刘鹏老师的《计算广告学》。

    互联网广告算法和系统实践

    第一部分 互联网广告简介

    1.1 广告简介

    • 广告是由已确定的出资人通过各种媒介进行的有关产品(商品、服务和观点)的、有偿的、有组织的、综合的、劝服性的非人员的信息传播活动。

    • 传统广告业务包括三方角色:广告主、媒体、普通受众

    • 广告历史

    1.2 互联网广告

    • 显示广告、合约广告、定向广告、受众定向技术
    • 担保式投放
    • 竞价广告、广义二阶拍卖GSP、广义一阶拍卖GSP
    • 搜索广告、上下文广告、实时竞价
    • 广告交易平台、需求方平台、提供方平台
    • 计费方式:点击付费CPC、销售付费CPS、千次展现付费CPM

    1.3 互联网广告类型

    • 条幅广告
    • 邮件直接营销广告
    • 富媒体广告
    • 视频广告
    • 文字链广告
    • 社交广告
    • 移动端广告

    1.4 有效性模型

    • 曝光:位置很重要。
    • 关注:广告创意吸引人,借助算法定向精准投放
    • 理解:让用户迅速理解广告
    • 信息接受:研究人群行为,还要借助心理学
    • 保持:追求中长期转化
    • 购买:最终决策,给用户提供更多更好的选择

    好创意不但能吸引人(提升CTR),而且能够抓住人(提升ROI)。

    1.5 计费模式

    • CPM:Cost Per Mile,按照千次展现计费,展现之后的效果广告平台不保证。适合品牌广告。
    • CPT:Cost Per Time,按照单位时间计费。为了增加曝光度。
    • CPC:Cost Per Click,按照千次点击计费,广告系统要负责对点击率CTR预估;广告主可以参与竞价。关注点击率,但不关注广告实际成交情况,风险由广告主承担。
    • CPS:Cost Per Sale,关注转化率,对广告主有利。

    对广告主,风险从大到小:CPM/CPT、CPC、CPS

    广告系统收益指标:若千次展现的期望收益CPM值eCPM。

    1.6 机制设计

    1.6.1 广告位拍卖

    • n个广告A,m个广告位S,m<n,广告位拍卖从A中选取m条广告,依次放置到S中。
    • 拍卖竞争除了展现机会,还包括S中排序位置。
    • 广告位拍卖过程分为广告排序和广告扣费。广告排序考虑展现哪些广告,广告扣费考虑收取多少费用。
    • 广告拍卖是多次重复博弈,纳什均衡点、本地无嫉妒均衡、占优策略、激烈相容

    1.6.2 广义一阶价格GFP

    • 广告展现不扣费
    • 一阶价格是指广告主本身出价。
    • 不存在纳什均衡点,竞价机器人导致广告系统收益大大降低。

    1.6.3 广义二阶价格GSP

    • 对应第i位广告,若发生点击,GSP收取第i位广告主,第i+1位广告竞价加上一个货币最小值。
    • 若广告主降低竞价,其展现位置不变时,不会降低收费。下家没有降低竞价行为,导致上家付出更多点击费用。存在本地无嫉妒均衡。
    • 均衡报价:n个广告A,每条广告价值V,m个广告位S,每个位置点击率X,每个位置当前竞价P。对于任意广告位i上获得位置的广告j有$(v_j-p_i)x_ige(v_j-p_)x_$
    • 均衡点不唯一,不是激励相容。
    • 现实中广告扣费要考虑点击率因素。对于广告i,广告系统预估i在当前场景点击率ai,结合竞价bi,计算每千次展现期望收益$ecpm_i=a_ib_i$,随后将广告集合按照$ecpm$排序,排序靠前若干条用于展现。计费时,若第i个广告被点击,从广告主扣除费用为$frac{a_{i+1}b_{i+1}}+最小货币单位$
      • 若广告点击率越高,广告主扣除费用越少,激励用户优化广告质量提高广告点击率。

    1.6.4 VCG机制

    • 目标为最大化社会价值
    • 有n个广告A,广告竞价为V,广告平台提供S广告位,每个位置点击率X,每条广告真实价格V。当广告i不参与关键字拍卖,排在i后的广告主i+1,...,m可获得的预期总收益为
    [ x_iv_{i+1}+x_{i+1}v_{i+2}+...+x_mv_{m+1} ]
    • 由于$a_i$参与,广告获得价值为
    [ x_{i+1}v_{i+1}+x_{i+2}v_{i+2}+...+x_mv_{m}+x_{m+1}v_{m+1} ]
    • 通常只有m个广告位,所以$x_{m+1}=0$,如果$a_i$被点击,那么它要付出代价是给社会其他个体带来的利益损失
    [ (x_i-x_{i+1})v_{i+1}+(x_{i+1}-x{i+2})v_{i+2}+...+(x_{m-1}-x_m)v_m+(x_m-x_{m+1})v_{m+1} ]
    • VCG相比GSP优势
      1. VCG激烈相容,按照真实估价出价是最优选择
      2. VCG机制最大化社会价值,有利于广告主
      3. VCG存在纳什均衡,均衡点唯一
    • 缺点
      1. 计算困难,可解释性差
      2. 相同竞价情况VCG扣费低于GSP机制,广告系统不愿意降低收入

    1.7 技术课题

    • 优化目标

      • 计算广告学:找到用户、上下文和合适广告间最佳匹配。
      • 互联网广告算法核心问题:根据用户、环境、广告全部有效消息,找到最合适的投放策略和模型,兼顾浏览者、广告主、广告平台的最大利益,并不断调整。
      • 用户U、环境C、广告A,算法目标函数为$F(U,C,A)$
        • 对于广告主,关注投资回报率ROI,(F=frac{sum_iReturn_i}{sum_iInvest_i})
        • 对于用户,(F=frac{sum_iClick_i}{sum_iImpression_i})
        • 对于广告系统,(F=CTR*PPC*Discount),$CTR$是点击率,$PPC$是点击收费,$Discount$业务因子。
    • 搜索引擎技术

      • 广告系统和搜索引擎相似,广告系统没有爬虫模块,通过规范化步骤获取。
    • 存储技术和实时计算技术

      • 需要一个适合大规模读写的存储系统,需要实时计算系统。
    • 推荐技术

    • 点击率预估CTR Prediction

    • 广告主工具

      • 对广告主,广告系统提供推广工具和统计工具。
    • 系统架构简介

      • 前端引擎:接受网页发来广告请求,初步处理发给后端,拿到结果拼接返回请求者,这是在线部分Online
      • 检索引擎:关注效率和性能,Online
      • 实时点击率预估服务:对广告打分,一维、二维分数,Online
      • 广告主操作消息更新服务:广告主有权随时更改广告竞价,Online
      • 用户行为数据收集和更新系统:一般是Online
      • 特征提取和行为分析:一般用Hadoop平台,Offline
      • 反作弊系统:Offine和Online
      • 广告主后台:Offline和Online
      • 存储系统:存储任务<key,value>形式,有Offline和Online
      • 计算系统:信息挖掘,一般采取Hadoop作数据挖掘和特征提取计算,采取MPI架构做模型训练。

    第二部分 搜索广告

    2.1 搜索广告架构

    • 搜索广告:搜索过程中搜索引擎推送的互联网广告。
    • 当用户输入查询后,广告系统会经过:广告检索、广告排序、流量分配三个模块为用户提供广告。
    • 广告检索:以当前查询关键字为基础+用户自身信息,从数以万计的广告集合中粗选出合适的广告。可分为广告索引和广告匹配子模块。
      • 广告索引:将广告建成$<key:用户竞价词, value:关联的广告列表>$的索引形式。
      • 广告匹配:将用户查询分解成相关竞价词,从建好的索引中提取广告。
    • 广告排序:计算检索到广告的质量分数并排序。
    • 流量分配:根据广告排序分数,决定当前情况给用户出哪些广告。

    2.2 广告检索

    • 根据用户关键字,选出相关广告,实际设置粗选和精选两个步骤:
      • 粗选:用信息检索,选取和查询关键字相关的一批广告。
      • 精选:精确的预估广告的点击率,进行排序。
    • 广告检索经过三步骤:广告分析,关键字分析和相关性匹配。
      • 广告分析:对广告进行处理,获取广告相关信息。
      • 关键字分析:根据用户输入,判断是否出广告,出什么广告。
      • 相关性匹配:根据关键字分析结果,去索引库中检索广告。

    2.2.1 广告分析

    • 两个目的:
      • 将广告组织成倒排索引形式$<key:竞价词-value:广告id链表>$
      • 从广告中抽取特征。
    • 广告主建立广告会选择相关的竞价词,容易造成常见词严重倾斜,解决问题的方法包括竞价词生成和模糊匹配。
      • 竞价词生成:广告系统通过分析广告主的landing page,帮助广告主选取竞价词。
      • 模糊匹配:用户选择一个通股出价,按照出价,广告系统自己选择跟广告相关的竞价词。

    2.2.2 查询分析

    • 长串:语义信息丰富,展现量不足,总量大,存储压力大。提取关键词汇很重要。
    • 短串:语义信息不明确,根据用户个性化信息或上下文信息消除歧义。
    • 重要指标:扩大召回。

    2.2.3 相关性匹配

    • 精确匹配:关键字严格包含某个竞价词才触发广告。
    • 模糊匹配

    2.3 广告排序

    • 广告系统按照ECPM降序排列广告候选集,将排序靠前广告展现出来。
      • (ECPM=广告竞拍价*广告CTR*1000)
      • 广告竞拍价:广告主提供;CTR:广告系统利用机器学习准确预估;
    • 基于点击模型的CTR预估方法
      • 点击率建模为$$P(click)=P(click|Seen)P(Seen)$$,从而计算$P(click|Seen)$
    • 基于机器学习的CTR预估算法

    2.3.1 逻辑回归模型

    • 函数形式$y=frac{1}{(1+e^{-w^Tx})}$
      • (x输入特征向量,y预测目标,w学习特征权重)
      • 输入x,类别为1的条件概率1579939149214;输入x,类别为0的条件概率1579939171792

    1579938941540

    • 采用极大似然估计学习特征权重$w$

      1579938975436

      • 最大化似然函数的对数1579939197888
      • 逻辑回归求解属于无约束优化问题,目标函数负对数似然函数恰好是凸函数,可以采用梯度下降等方法求解$w$。
      • 寻找负对数似然函数的梯度方向1579939298077
      • 迭代公式1579939323740
    • 防止过拟合

      • L2正则$NLL(w)+lambda w^Tw$
      • L1正则$NLL(w)+lambda|w|_1$
    • 漂移,在线学习:逻辑回归的对数似然函数具有样本可加性。

      • 随机梯度下降1579939436739

    2.3.2 特征处理方式

    • 将人的先验知识,表示成机器学习算法能够接受的方式。
    • 常用特征
      • 广告和查询关键字的相似度:广告本身特征、查询本身特征、相似广告的特征、相似查询的特征。
      • 广告的树形结构信息:广告主-广告账户-广告计划-广告组-广告创意,同一个广告主的其他广告创意的CTR能帮助当前广告创意的CTR。

    2.3.3 算法评估

    • CTR预估模型效果是否好:全流量-小流量实验-离线指标验证

    • 衡量预估CTR和真实CTR之间差异,使用AUC衡量CTR预估精度。AUC是ROC曲线下的面积。

      • ROC是二维平面上的曲线,横坐标是FPR,纵坐标是TPR。调节分类器参数,使得ROC曲线形成一条从(0,0)到(1,1)的曲线,AUC就是ROC曲线下面积之和。
      • 互联网广告系统计算AUC:AUC等价于正样本score大于负样本score的概率。若正负样本score值相同,则按0.5正样本score大于负样本score对计算。
    • 假设正样本数M,负样本数N,计算AUC开销是M*N,通过排序减少AUC时间复杂度。

      • 将样本按照score大小从高到低排序,score第一大样本获得n=M+N的rank值;第二大样本获得rank值为n-1。对rank为r的正样本i,组成正样本score大于负样本score的样本对个数为 r-排在i后的正样本数。

      • 因此AUC可如下方式计算

        1579940261004

    2.4 广告主推荐工具

    2.4.1 投放要素

    • 广告主注册一个推广账户Account,包含多个推广计划Campaign,每个计划包含多个推广单元Group,设置Group主要需要竞价词Bidword和广告创意Creative。

      1579940402529

    • 一个Group完整投放需求和策略列表

      1579940467074

    • 搜索广告系统需要帮助广告主”充分表达自己投放需求”,给广告主提供投放基本元素。

      1579940526096

      • 推荐重点在于竞价词Bidword。

    2.4.2 竞价词推荐方式

    • 竞价词的推荐方式

      • 主动推荐:不用广告主参加
      • 被动推荐:广告主主动创建一些搜索词
    • 竞价词的匹配方式

      • 精确匹配:精确命中广告主所竞价的词
      • 模糊匹配:广告系统对竞价词进行一定程度的扩展
    • 推荐工具实际上找到“一座桥梁“

      1579940735626

      1. 广告主到中间节点边归一化权重,中间节点到候选词边故意话权重,文本相关性。
      2. 根据中间节点出度、入度信息,计算中间节点调整系数,结合第一步相关性,计算出:$<广告主1,中间节点,候选词>$的分数
      3. 根据$<广告主1,中间节点,候选词>$的数据,固定一个候选词,综合所有中间节点,计算所有$广告主1,候选词1>(分数,循环计算,获得)<广告主1,候选词>$打分列表。
      4. 根据分数排序,获取前N个词。

    2.4. 3 其他工具

    • 投放前后,广告主需要一些数据帮助决策或者反馈,如下

    1579940966768

    2.5 实践一:在线学习前沿

    • 为了让模型特征量缩减,可以将逻辑回归目标函数修改成,模型将倾向于学习稀疏的$w$权重。

      (NLL(w)+lambda|w|_1)

    • 随机梯度下降法简单易行,但往往难以得到特征向量稀疏的结果,Google提出FTRL-Proximal方法可以得到稀疏性更好的训练结果,其更新公式为:

      1579941142376

      1579941155950

      1579941167797

    • 海量数据下,模型存储量过大给并发查询时效性带来很大挑战。

      • 降低模型特征维数,泊松选择法
      • 降低每一维特征存储量,float是4个字节,Google提出q2.13编码方式,用2个字节。

    第三部分 定向广告

    定向广告即非搜索广告

    3.1 上下文定向

    • 根据投放页面内容,推送相关广告。关键问题对页面内容的刻画:
      • 内容提供商自定义:广告平台预先人工定义一些网页的类型标签,内容提供商自己选择网页类型。
      • 页面关键字提取:爬虫抽取网页中内容,进行一定内容分析,从中抽取可以精确匹配上的竞价词,然后到广告库中检索广告。
      • 网页聚类:使用爬虫抽取网页内容,然后对网页库进行文本聚类。

    3.2 受众定向

    • 给当前用户流量打标签的过程
      • 显示标签应用:按照标签售卖流量
      • 隐式应用:不按照用户标签显示售卖流量
    • 受众定向方法:
      • 用户背景资料调查、行为定向

    3.2.1 监督行为定向

    • 线性泊松回归模型1579955766311,其中$lambda=w^tx$,W为预估参数,x为特征向量,y为事件发生频次。
      • 给定数据集$T={(x_i,y_i)}$,有对数似然函数1579955798287
      • 其对w的对每一项梯度值为1579955820198
    • 通过上面的线性泊松回归求出用户对该兴趣点的浏览频次的期望$lambda_(和点击频次的期望)lambda_$,用户i对类别k的CTR计算方法1579955859851

    3.2.2 非监督行为定向

    • 将用户向量化表示
      • 基于item的向量表示法、基于query的向量表示法
      • 向量化后,行为定向问题建模成经典的聚类问题。

    3.3 行为定向

    • 按照用户的历史行为,进行广告推荐。用户的行为在不同类型的广告系统中有不同定义。

    3.4 推荐系统

    3.4.1 基于用户的协同过滤算法

    • 想知道用户n对电影m的评分,需要参考与用户n相似的其他用户,用他们对m的评分来拟合n对m的评分$r_$。对于给定用户$n$,他打过分的电影集合是$M_n$,那么$n$的平均得分是$r_n=frac{1}{|M_n|}sum_i^{in}r_$,用户n对电影m的评分可以通过如下公式计算,

      1579957017762

      • $U_n$表示与n相似的用户集合,$s_$表示用户u和v之间的相似度,$z_n$是相似度平滑因子,(z_n=sum_i^{in}|s_{uv}|)
      • 如何定义与n相似的用户集合,用什么方法衡量用户之间相似度,根据具体应用不断调试。

    3.4.2 基于单品的协同过滤算法

    • 用相似单品的得分来计算$r_$,计算方法如下

    1579957240915

    • $s_$表示电影i同电影m的相似度,与基于用户的协同过滤算法相同,该相似度也需要根据具体应用不断调试。该算法需要用户有充足行为,当用户行为比较稀疏,难以给出准确预估结果。

    3.4.3 奇异值分解SVD

    • 希望将数据维度降低,实现某种程度上的聚合。
    • 将数据聚集成K个隐藏类,原始矩阵R可被分解成两个矩阵乘积形式$R_=W_V_$,$w_$表示用户n对k类型电影的兴趣度,$v_$表示电影m属于k类型电影的隶属度。
    • 线性代数中,任何一个实矩阵R可分解为$R=Usum P^T$
      • $sum$是K*K的对角线矩阵,$K$为矩阵R的秩,对角线上每个元素为$RR^T$矩阵特征值的平方根。
      • U是N*K的矩阵,每一列是矩阵$RR^T$的特征向量。
      • $PT$为K*M的矩阵,P中每一列是矩阵$ATA$的特征向量。
    • 去除$sum$中绝对值较小的特征值,并在U和P中除去其对于的特征向量使得1579957812761,从而达到降维目的,使得R计算高效。
    • 实际推荐系统,除了使用SVD方法求得W和V以外,另一种方法令$hat=WV$,最小化$hat$和R的差异,求解出最优W和V。损失函数是1579957911063
      • 1579957942011

    3.5 定向排序

    • 定向广告排序和搜索广告排序机制基本相同,cpc收费下,两者按照ecpm进行排序。计算ecpm最重要因素是对广告进行ctr预估。
    • 搜索广告的ctr预估一般是单模态模型,而定向ctr预估可看作是多模态模型,如何融合不同定向方式也是多模态学习的难点。

    3.6 实践一:定向广告算法架构

    • 定向广告解决“这样一个人”应该配"什么样的广告"?

    • 定向广告要素

      1579958232002

    • 第一步根据用户历史行为,选定一批用户的意图,并找到对应的广告。

      • 推荐系统(利用用户历史行为)
      • 利用用户属性方法(人口统计学)
      • 利用标签方法
    • 第二步根据这些广告,进行排序。

      • 如果考虑点击率就是做$<user,ad>$点击率预估,获得打分。
      • 采用ecpm进行排序$ecpm=ctr*bidprice$

      1579958298858

    3.7 实践二:定向广告的平衡之道

    • 关于用户疲劳
      • 针对频繁访问的用户
      • 针对访问次数稀疏,兴趣点转换很慢的用户
      • “一次性”的类型兴趣
      • “连续型”的类型兴趣
    • 关于多样性
      • 给用户选择的余地
      • 首先保证召回率,然后根据候选集进行进一步选择,保证底线。
    • 关于多目标
      • 除了CTR,还有ROI、CVR
      • 多指标线性融合$rankscore=ctrroibidprice$
      • 对ROI好的创意筛选再利用$rankscore=ctr*bidprice$
    • 关于E&E(搜寻和探索)
      • 如何给新加入的广告和冷广告展现的机会。

    第四部分 实时广告竞价

    • 实时广告竞价:建立一种流量交换的协议,使得媒体和广告联盟向全网范围的广告主提供尚未出售的流量,广告主和广告联盟实现合作共赢。

    4.1 基本概念

    • 技术核心

      • 将实时产生的展示广告流量及相关特征如客户信息、广告位信息推送给每个感兴趣的购买者,并且搜索出反馈协议。
      • 对推送流量的价值进行实时评价并给出具体CPM出价的方法。
    • 三类角色

      • 广告交易市场AdExchange:实时广告竞价中流量进行实时交易的平台。
      • 需求方平台DSP:广告交易市场中的买方。
      • 供应方平台SSP:广告交易市场中的卖方。

      1579961540380

    4.2 广告交易市场

    4.2.1 历史与现状

    • Mike Walrath创办Right Media,与Double Click、AdECN三足鼎立,随后被Yahoo收购。
    • 2007年广告交易市场元年
    • 2009年,实时广告竞价
    • 2011年9月,阿里巴巴TANX平台

    4.2.2 实时广告竞价

    • 线下部分:竞价交易各参与者之间实现用户ID相互转换和对应,即Cookie Mapping。

    • 线上部分:处理广告请求到来时的竞价和投放过程。

      1579961861197

    • 使用cookie累计用户再互联网上的行为数据。
    • 实时竞价时,用户信息不能共享给第三方,于是只将用户标识再竞价请求中提供给流量需求方。Cookie Mapping是解决各互联网公司标识不一致的标准方案。

    4.2.4 实践1 典型的广告交易市场架构

    1579962394266

    • 围绕核心的流量交换引擎,有三个重要子系统:
      • 业务系统:为需求方和供给方提供接入共给交易市场的接口。
      • 财务系统:提供安全、高效的财务结算功能
      • 数据系统:对交易过程中产生的数据进行记录、处理
      • 流量交换引擎:实时广告竞价体系的核心。

    第五部分 广告系统架构及挑战

    5.1 广告系统的特点

    1. 高性能

    2. 海量数据和存储

    3. 可运维性

    5.2 功能职责划分

    1. 广告业务系统
    2. 广告投放引擎
    3. 广告效果检测系统
    4. 广告防作弊和结算
    5. 数据平台和算法

    5.3 大型广告系统采用的技术

    1. 高性能广告投放引擎
    2. 基于Hadoop的数据平台:分布式计算框架
    3. CDN
    4. 关系数据库
    5. J2EE或LAMP应用开发框架
    6. 负载均衡
    7. 服务化
    8. 消息中间件

    后记

    • 数据管理平台DMP:Data Management Platform

      1579963337037

    • DMP在4个阶段保证数据安全性

    1579963369206

    • DMP允许外部数据挖掘引擎接入,产生不同的数据分析结果,供不同的应用方使用

    1579963435605

  • 相关阅读:
    一笔期货成交的始末(可能有问题)
    tcp心跳模型
    spring boot 2.0 启动监控端点的方法(spring-boot-starter-actuator)
    netty channel的线程安全性与@Sharable
    为什么使用https
    angularjs post 跨域 Request header field Content-Type is not allowed by Access-Control-Allow-Headers in preflight response.
    http的keep-alive和tcp的keepalive区别
    最大公约数 最小公倍数--------专题
    hdu 2024 C语言合法标识符
    hdu 2025 查找最大元素
  • 原文地址:https://www.cnblogs.com/vincent1997/p/12233566.html
Copyright © 2011-2022 走看看