《广告算法》学习笔记

搜索广告

Posted by Ann on May 9, 2019

本章主要对搜索广告的业务进行介绍,搜索广告模块可以分为广告检索、广告排序、流量分配三大子模块。

graph LR;    A(搜索广告)-.->B[广告检索] A-.->C[广告排序] A-.->D[流量分配] B -.-> E1[广告索引] B -.-> E2[广告匹配] C -.-> H[ML方法预估点击率] E2 -.-> G[分词,查询纠错,查询扩张等...] E1 -.-> F[键值对索引] classDef className fill:#f9f,stroke:#333,stroke-width:4px; class B,C,D className; style A fill:#ccf,stroke:#f66,stroke-width:2px,stroke-dasharray: 5, 5

广告检索

一般来说,广告检索需要经过三个步骤,广告分析,关键字分析和相关性匹配

广告分析

  • 生成倒排索引

广告的倒排索引指<竞价词,广告ID列表>这样的键值对。竞价词通常有广告商自行定义和广告平台生成两种方式。

  • 抽取广告特征

查询分析(关键字分析)

  • 对于用户输入内容,根据其输入字符串的长短,有不同的处理方式。
    • 对于长串来说,重点在于分词,提取关键词汇
    • 对于短串来说,终点在于消除歧义。常根据用户的行为分析,和上下文搜索信息进行消歧处理。
  • 查询分析的重点:查询扩展(扩大召回率
    • 用来做查询扩展的技术包括,topic model、语意字典扩充、事先构造本体扩充以及通过query-ad链接分析查询相似度做关键字聚类的方法等等。
  • 相关性匹配:精确匹配/模糊匹配

广告排序

通常,广告系统会按照ECPM(Effective Cost Per Mille,指的是每一千次展现可以获得的广告收入)降序排列广告候选集,然后将排序靠前的广告展现出来。
其中ECPM正比于点击率CTR

如何预测CTR?—-逻辑回归LR

将广告特征处理为0,1向量作为输入,通过逻辑回归函数对其进行CTR预测。由于单个向量维度过高,为了防止过拟合,需要加入正则项。常用L1正则

  • L1 VS L2
    • L2正则,可以防止得到单维绝对值过高的w,从而防止模型过拟合。L1则更加激进,不仅可以防止出现单维绝对值过高,还能使得大量特征的权重为0,从而起到特征选择的作用
  • 逻辑回归
    • 之前对极大似然法理解一直不深,贴个链接以后有需要的话推一下子~嘻嘻 逻辑回归推导

相似度预估CTR方式

  • 广告和查询字相似度
    • 广告和查询关键字的共现词个数
    • 广告和查询关键字的cosine距离、KL距离、编辑距离等
  • 语义相似度
    • 广告本身的特征,如广告的历史CTR、历史展现、广告对于商品的价格、广告的字数、广告所包含的词语等。
    • 查询本身的特征,如查询关键字历史的广告CTR、历史展现、查询所包含的词语等。
    • 相似广告的特征,比如与当前广告相似的广告的历史CTR等特征,以及其与当前广告的相似度。
    • 相似查询的特征,比如与当前查询相似的查询的历史CTR等特征,以及其与当前查询的相似度。

对于LR来说,需要把连续的特征转化为0/1离散值,常用的方式有等距划分和等频划分

评估标准

评估标准–>AUC

若正样本数为M个,负样本数为N个,计算AUC的开销为M*N。

样本集过多的情况下,可以通过排序的方式减少AUC计算复杂度。(这块没看懂 呜呜呜)

延伸

知乎上看到一个广告计算中特征工程的帖子,先mark一下~

广告主推荐工具

对于广告主来说,他们关注的重点就是竞价词,竞价词作为被推荐的关键词汇,不仅要保证其能准确定位,还要关注“推荐被采用以后的效果”。

关于竞价词的推荐,有主动推荐,和被动推荐两种方式。主动推荐指广告平台直接替广告商生成竞价词,被动推荐指广告商参与指定部分竞价词。

关于竞价词的匹配,一种可以叫做精确匹配,一种可以叫做模糊匹配。

如果要找到推荐给广告主的所有候选词,需要计算广告主跟候选词全集的相关度,然后排序,即找到<广告主,候选词>的所有打分,然后找到最高的N个。

  1. 广告主到中间节点的边的归一化权重,中间节点到候选词的边的归一化权重。主要是文本相关性,计算相似度的方式如Cosine距离、欧式距离、KL距离、Jaccard系数、Dice系数、Pearson系数……等等。
  2. 根据中间节点出度、入度等信息,计算中间节点的调整系数,结合第一步的相关性,计算出:广告主1,通过一个中间节点,到一个候选词的分数;即<广告主1,中间节点,候选词>的分数。
  3. 根据<广告主1,中间节点,候选词>的数据,固定一个候选词(比如是候选词1),综合所有中间节点,计算所有的<广告主1,候选词1>分数。循环计算,直至算完所有的候选词集合,获得<广告主1,候选词>打分列表。
  4. 根据分数排序,获得最前面的N个词。