DSP

展示广告的实时竞价算法浅析

2019-07-13 16:35发布

在传统媒体的广告投放平台中,用户和广告主都是被动的:一旦用户接触到媒体,广告就会展现出来。 而在实时竞价的广告体系,广告主会通过第三方平台(DSP)的协助合理地评估每个用户在当前广告位曝光某个商品所产生的收益,从而决定是否要对该用户点位进行竞价。在这样的背景下诞生了新兴的计算广告学。  作为第三方平台,DSP公司需要一套完善的算法框架去达成互联网用户的价值评估和点击率(转化率)预测,从而对每个曝光合理地竞价(当一个用户访问了一个有广告位的页面时,DSP公司通过合理评估来选择是否去竞价以及该出多少钱去竞价)。根据不同广告主的KPI需求(比如CPC, CPM, CPA等不同的结算方式),一般的DSP公司还会对算法框架进行调整,为每个广告主生成量身定制的策略。下文详细记录整个算法流程中的两个重要环节。 1.选人 不少DSP公司将选人作为算法流程的第一步,即针对某个广告主公司(或行业)挑选出一批对其来说颇具价值的互联网用户。其本质是用户与广告主的交叉打分。在这种做法下,选人和后续的点击率预测是分离的,但人的价值得分可以作为点击率预测的一个feature(具体在第2部分阐述)。那么该怎么打分?一个常规做法是根据用户的浏览历史,来总结这个用户对某个特定广告主的价值。举个例子,新东方在线的潜在用户显然是平常对英语类网站关注较多的。如果我们知道了这些网站以及他们的权重,就可以根据某个互联网用户的浏览行为对这个人进行打分。这个打分也是一门很有学问的东西,需要针对不同类型的广告主,考虑不同窗口时段的用户浏览行为。这句话什么意思?意思就是用户对不同广告商品的兴趣时长是不同的,如果有人想买车或者报英语班,可能在很长一段时间都会浏览与汽车或英语相关的页面。但如果只是想买些吃的或者生活用品,可能在网上浏览几分钟的页面就买了,所以打分的时候要具体这些因素。如果上面的文字理解了,那么选人的问题已经被转化成了如何提取代表性的网页(url)以及给他们赋予权重的问题。 选取代表性url的方式有两种。第一种是行为广告,即根据用户的浏览历史以及最后的广告转化情况训练一个机器学习的模型,计算每个url的lift值, ctr以及分类器的权重等指标,综合起来给每个url打分,然后选取得分高的url作为代表性的url特征。 第二种是上下文广告,这里我们不直接分析用户的浏览历史,而是通过NLP的方法获取用户理论上可能访问的相关网站作为url特征。比如说为广告主新东方在线选人时的url特征应该都是与英语相关的。如过我们能用爬虫获取一批与英语相关的页面,获取可以把它们作为url特征。换个角度,如果我们能获取各个页面之间的相似性(具体做法不在这里延伸了),我们可以找一批与页面新东方在线空间距离相近的url作为特征。有了url特征,我们可以用它们来选人了,当一个人在某个时间区间内访问了这些url,那么他应该有了一个相应的得分。而且但他访问的次数越频繁,他的得分应该越高,且这个得分应该是随时间衰减的。至此,我们大致完成了整个工程的第一步,选取某个广告主的相关用户。关于选人的更多细节就不在这里透漏了,具体可参考M6D这个DSP公司发的论文。 选人是否是必须的?其实个人认为,选人完全可以和出价结合在一起,只要我们有办法把用户这个维度合理地加入点击率预估时的特征空间。毕竟,即使完成了选人这一步,我们仍旧需要在广告主,展现等多个维度进行点击率的预估,然后通过点击率来决定出价。举个例子,如果DSP公司能准确的给每个用户打上标签,比如用户对某个行业的关注度等,那么可以直接用人的属性与其他维度进行交叉预测点击率,不需要选人,这样也能保证将一部分流量分配作为探测(未被选中的用户的)流量。  2.出价 出价是决定DSP公司命运的一个环节,DSP代理的广告主之间存在一个竞价过程——这是一个博弈过程,营销平台以此逼近媒体流量价值的最大值。广告主在竞价过程中,除了要提供给用户最符合其需求的广告外,这一商业竞价过程也是广告投放的一个核心内容。从机器学习的角度上分析,这是一个有多个constrain的optimization问题。如果出价高了会赔钱,出价低了又会竞不到流量。再加上竞得价是第二高出价这一竞价机制,DSP公司之间的博弈会变得更为有趣。 传统的计算广告出价公式为CTR(点击率)*CPC(cost per click),然后还可以引入到达率,转化率等调整因子。CPC往往是广告主(或DSP优化师)设定的期望值,或是实时的CPC反馈。因此,出价问题转化成了一个CTR预估的问题(暂不考虑预算等其他constrain)。CTR的预估是一个典型的机器学习问题。在这个问题里,每条输入数据包含多个维度:广告主,展现(媒体),用户等。广告主维度包含了广告的商品信息,展现维度包含了域名.广告位.广告类型等等,用户维度不仅包含用户的浏览器.设备等信息,还包括用户本身的人群属性(性别,兴趣等)。为了准确的预测CTR,往往需要多个特征维度的交叉。举个例子,某个性别的用户在某个类型商品上的转化率可以作为一个很好的特征。在实际预测中,算法工程师有很多模型可以选择,常用的如朴素贝叶斯,逻辑回归,随即森林等。若采用回归模型,则需要用one-hot encoding将categorical variable 转化为 numerical variable,使输入变为很高维度的向量,这里可以采用各种特征工程以及特征交叉。另外,用soft的贝叶斯转化率代替hard的0,1作为特征值往往会有不错的效果。多个模型ensemble也可以在工业上直接应用。得出了预估的CTR,往往之后还有一个校准的过程,使出价函数变得更为平滑,具体细节就不在这里阐述了。 实时的CTR是否比预估(校准后)的CTR更准? 不少DSP公司优先采用(比如域名和广告位的)实时CTR计算出价。事实上这样做考虑的维度信息是非常少的。在我看来,当训练数据足够的情况下,预估的CTR更能反应通过长期积累的经验反映出的CTR情况,同时也支持多个维度非常flexible的交叉。而实时的CTR则更能反映某个广告主或某个点位的CTR在短期内的波动情况,但多维度交叉比较困难。将二者按一定比例加权是合理的处理方式。