美团DSP广告策略实践

近年来,在线广告在整个广告行业的比重愈来愈高。在线广告中实时竞价的广告因为其良好的转化效果,占有的比重逐年升高。DSP(Demand-Side Platform)做为需求方平台,经过广告交易平台(AdExchange)对每次曝光进行竞价尝试。对于AdExchange的每次竞价请求,DSP根据Cookie Mapping或者设备信息,尝试把正在浏览媒体网站、App的用户映射到DSP可以识别的用户,而后根据DSP从用户历史行为中挖掘的用户画像,进行流量筛选、点击率/转化率预估等,致力于ROI的最大化。segmentfault

美团点评的用户量愈来愈大,积累了大量的用户在站内的行为信息,咱们基于这些行为构造了精准的用户画像,并在此基础上针对美团App和网站的用户搭建了美团DSP平台,致力于获取站外优质的流量,为公司带来效益。本文从策略角度描述一下在搭建DSP过程当中的考虑、权衡及对将来的思考。后端

在DSP实时竞价过程当中,策略端都在哪些步骤起做用;浏览器

  • 对每个步骤的尝试和优化方向作出详细介绍;
  • 总结DSP如何经过AB测试、用户行为反馈收集、模型迭代、指导出价/排序等步骤来打通整个DSP实时竞价广告闭环。

美团DSP在一次完整的竞价展现过程当中可能涉及到两个大的步骤:app

  1. 对AdExchange的竞价请求实时竞价;
  2. 竞价成功以后用户点击进入二跳页、浏览、点击、最后转化。

咱们分别看一下这两个步骤中策略的支持。机器学习

上图给出了每一次竞价广告的粗略示意图,竞价Gateway在收到竞价请求以后,会识别出美团点评用户的流量,根据网站历史CTR、网站品类属性等因素进行简单的流量过滤,把流量分发到后端的AdServer。AdServer做为后端广告的总控模块,首先向RecServer(定向召回服务)获取站外展现广告召回结果,而后根据获取的广告结果向PredictorServer(CTR/点击价值预测服务)请求每一个广告的站外点击率和点击价值。最后AdServer根据获取的点击价值vctr,根据v∗ctrt进行排序,从而挑选出top的广告进行展现。ide

上图给出了竞价成功后,用户从站外展现的广告点击后,所经历的流程示意图。用户点击站外广告后,到达二跳页Gateway,二跳页Gateway向AdServer请求广告列表。AdServer从RecServer获取站内二跳页广告召回结果,而后根据获取的广告结果向PredictorServer请求每一个广告的二跳页点击率并进行排序。排序后的结果返回给二跳页Gateway进行广告填充。性能

在上述两个步骤中,美团DSP策略端的支持由RecServer和PredictorServer提供,在图1和图2分别用红色的箭头和AdServer交互。其中RecServer主要负责站外广告和二跳页的广告召回策略,而PredictorServer主要负责站外流量的CTR预估,点击价值预估和二跳页内的CTR预估。整个策略的闭环以下图:学习

接下来详细介绍下美团DSP的召回、CTR预估、点击价值预估相关的策略。区块链

定向召回服务

定向召回服务分别在实时竞价过程当中提供了站外广告的召回服务,在竞价完成以后提供了二跳页的广告召回服务。站外召回和站内二跳页召回没有本质的区别,比较常见的作法是二跳页会根据用户点击商品的品类进行品类过滤。下面咱们具体看一下目前定向召回相关的具体策略。测试

1、基于实时行为召回
经过实时日志流平台准确的跟踪用户的实时点击浏览/收藏/购买行为,对于相应的用户从新投放用户近一段时间内发生过浏览/收藏/购买行为的商品。须要注意的是这个策略须要考虑召回几率按时间进行衰减,用户的实时行为可以比较强反映用户的近期兴趣,距离当前时间比较长的用户行为对于用户近期兴趣的定向偏弱。

2、基于位置召回
O2O的业务特色与传统的电商有明显的区别,传统电商是在线上达成交易意向,而后经过快递送货的方式完成交易。O2O业务绝大部分消费者是在线上买入电子券,而后要到店进行消费,因此用户的位置信息在广告召回中起着举足轻重的做用。咱们在基于位置的广告召回中尝试了如下三种策略:

  1. 实时地理位置召回

根据用户所在的实时地理位置召回距离比较近的广告。 对于移动端的广告流量,能够比较准确的得到用户的实时地理位置,从而进行比较精准的投放; 对于PC端的流量,地理位置是经过用户访问的IP地址进行推算的,因此地理位置是有偏移的,可是考虑到PC端浏览广告的流量用户位置通常都比较固定,好比用户通常是在上班或者在家休息,咱们仍然使用了这个策略。

  1. 实时商圈热单召回

根据用户所在的实时地理位置推断出用户目前所在商圈,给用户投放当前商圈的热门消费单。商圈的范围通常在几千米范围以内,对于用户到店消费是一个合理的距离范围,因此咱们离线挖掘出每个商圈的热门消费单,做为用户召回的候选。

  1. 偏好商圈热单召回

经过离线分析用户历史的浏览/点击/购买行为,分析出用户的历史商圈偏好,召回用户偏好的商圈消费热单做为广告候选集。这个策略须要用户的userid,仅对于可以识别并能映射到userid的用户适用。

能够看到策略1和策略2是不须要userid的,因此这两个策略也是咱们在识别不到userid的时候一个比较好的冷启动召回策略。

3、基于协同过滤召回
基于协同过滤的召回策略咱们融合了user-based和item-based两种。

4、基于item-based的协同过滤
咱们首先经过用户的购买行为计算item之间的类似度,好比经过计算发现item A和item B之间的类似度比较高,咱们把item A做为候选推荐给购买item B的用户,做为item B的用户的召回候选集之一;一样也把item B做为候选推荐给购买item A的用户,做为购买item A的用户的召回候选集之一。由于item-based协同过滤的特征,这一部分召回基本可以把热门爆款单都拉到候选集中。

5、基于user-based的协同过滤
咱们一样须要先计算用户之间的类似度。计算用户类似度时,除了考虑用户购买的商品,还能够把用户所消费过的商家及商家所在的商圈做为类似度权重考虑进来。这么作是由于,不少商品是在全国多个城市均可以购买的,若是只采用用户购买的商品来计算类似度,可能把两个不一样城市用户的类似度计算的比较高,加入商家和商圈的权重,能够大大下降这种状况的可能性。

6、基于矩阵分解的场景化召回
对于O2O消费的某些场景,好比美食和外卖,用户是否发生购买与用户目前所处的场景有很大关系,这里的场景包含时间、地点、季节、天气等。举个例子来讲,工做日的中午,若是还在下雨,这个时候外卖的购买几率通常是比其余商品高的。

基于此,咱们开发了基于矩阵分解的场景化召回策略。咱们采用了FM模型来进行建模,建模的特征包括季节、时间(工做日/周末,一天以内的时段)、地点、天气等。这个策略的目的是但愿召回用户实时的基于场景化的需求。

上文提到在实时竞价阶段,AdServer会跟PredictorServer请求每一个广告的站外点击率和点击价值,最后AdServer根据获取的点击价值v和ctr,根据$v∗ctr^t$进行站外广告排序,挑选top的广告。最终的报价公式以下:
$$a∗∑i=1kvi∗ctrti+b(1)$$
k是本次竞价要展现的广告数,t,a,b都是根据实际流量状况进行调整。其中t为挤压因子,为了控制ctr在排序和报价中起做用的比重,t越大,ctr在排序和报价中的比重越高;a,b须要根据DSP须要获取的流量和须要达到的ROI之间的权衡进行调整,a,b越大,出价越高,获取的流量越多,成本越高,ROI就减小。

公式1中CTR直接做为一个引子进行出价计算,因此这里的CTR必须是一个真实的点击率。由于在站外广告点击日志中,正样本是很是稀疏的,为了保证模型的准确度,咱们通常都会采用负样本抽样。这样模型估计出来的CTR相对大小是没有问题的,能够做为排序依据,可是用来计算出价的时候,必须把负样本采样过程还原回去,咱们在下面的小节中详细解释。

站外CTR预估

该模型目标是,对于RecServer召回的广告,预测出广告的相对点击率和真实点击率,相对点击率用于排序, 真实点击率用于流量报价。对于每一个流量,AdExchange会下发给多个DSP,报价最高的DSP会胜出,获取在这个流量上展现广告的机会。为了可以引入更多的优质流量,减小流量成本,提升ROI、CTR预估模型须要充分考虑站点、广告、用户等维度的信息。

广告的点击与转化主要与用户、广告、媒体(user,ad,publisher)这三个因素相关。咱们的特征也主要从这三个方向去构建,并衍生出一些特征。

特征选择

  1. 用户特征

用户浏览,购买的品类,用户画像,浏览器,操做系统等特征。

  1. 广告特征

广告deal的属性特征,如商家、品类、价格、创意类型等特征。
广告deal的统计特征,如历史CTR、CVR、PV、UV、订单量、评分等。

  1. 媒体特征

网站类别,网站域名,广告位,尺寸等特征。

  1. 匹配特征(主要是用户与广告维度的匹配)

用户浏览、购买的品类与广告品类的match, 商家的match。
用户浏览广告的不一样时间粒度的频次特征,好比用户浏览当前广告的次数、用户上次点击广告距离当前的时间差。

  1. 组合特征

在LR+人工特征的实现过程当中,须要人工构造一些组合特征,好比,网站+广告、用户消费水平+价格、广告主+广告品类等,对于FM和FFM能都自动进行特征的组合。

  1. 环境特征

广告的效果每每与用户所处的外部环境相关。好比 时段、工做日/节假日、移动端的经纬度等。

特征处理
最后再看咱们具体如何构建模型。

  1. 模型选择

因为站外的站点数量巨大、广告位较多、广告的品类较多,形成训练样本的特征数较大,须要选择合适的模型来处理,这里咱们选用了LR+人工特征的方式,确保训练的性能。

  1. 特征降维

点击率模型须要考虑用户维度的数据,因为美团的用户量巨大,若是直接用用户id做为特征会形成特征数急剧增大,并且one-hot encoding后的样本会很是稀疏,从而影响模型的性能和效果。因此咱们这里采用了用户的行为和画像数据来表征一个用户,从而下降用户维度的大小。

  1. 负样本选择

对于站外广告,有不少广告位比较靠近页面的下方,没有被用户看到,这样的广告做为负样本是不合理的。咱们在负样本选择的时候须要考虑广告的位置信息,因为咱们做为DSP没法获取广告是否真实被用户看到的信息。这里经过适当减小点击率较低的展位负样本数量,来减轻不合理的负样本的状况。
对于二跳页广告,只取点击的位置以前的负样本,而未点击的则只取top20的广告做为负样本。

  1. 负样本采样

因为广告点击的正负样本分布极其不均,站外广告的点击率广泛较低,绝大多数样本是负样本,为了保证模型对正样本的召回,须要对负样本按照必定比例抽样。

  1. 真实CTR校准

因为负样本抽样后,会形成点击率偏高的假象,须要将预测值还原成真实的值。调整的公式以下:
$$q=p(p+1−pw)(2)$$
q: 调整后的实际点击率。 p: 负样本抽样下预估的点击率。 w: 负样本抽样的比例。

二跳页CTR预估

当用户点击了广告后,会跳转到广告中间页,由于站外流量转化很是不容易,因此对于吸引进来的流量,咱们但愿经过比较精细化的排序给用户投放尽量感兴趣的广告。

因为进入二跳页的流量大概比站外流量少两个数量级,咱们可使用比较复杂的模型,同时由于使用比较多的用户/广告特征,因此这里咱们选择了效果比较好的FFM模型。

特征和样本处理方面的流程基本相似CTR预估模块中的样本处理流程。差异在于广告在展现列表中的位置,对广告的点击几率和下单几率是有很是大影响的,排名越靠前的广告,越容易被点击和下单,这就是position bias的含义。在抽取特征和训练模型的时候,就须要很好去除这种position bias。

咱们在两个地方作这种处理: 在计算广告的历史CTR和历史CVR的时候,首先要计算出每一个位置的历史平均点击率ctr_p,和历史平均下单率cvr_p,而后再计算i广告的每次点击和下单的时候,都根据这个item被展现的位置,计算为$ctr_0/ctr_p及cvr_0/ctr_p$。 * 在产生训练样本的时候,把展现位置做为特征放在样本里面,而且在使用模型的时候,把展现位置特征统一置为0。

上文提到广告是根据v∗ctrt进行排序,并经过公式1进行报价。这里面的v就是点击价值(点击价值是指用户发生一次点击以后会带来的转化价值)。

广告业务的根本在于提升展现广告的eCPM,eCPM的公式能够写为v∗ctr∗1000,准确的预估点击价值是为了准确预估当前流量对于每个广告的eCPM。刘鹏在《计算广告》中提到,只要准确的估计出点击价值,经过点击价值计算和CTR计算获得的eCPM进行报价,就始终会有利润,这是由于AdExchange是按照广义第二出价进行收费的。

在实际投放过程当中,出价公式能够随着业务目标的不一样进行适当的调整,好比咱们的出价公式中包含了挤压因子t,和a b两个参数。出价越高带回来的流量越大,可能带来质量良莠不齐的流量,通常在一段时间以内会引发CTR的下降,这样会带来CPC点击成本的提升,因此ROI会下降。反之出价比较低的状况下,带来的流量越少,通过比较细致的流量过滤,CTR能长期保持在一个较高的水平,点击成本CPC比较低,ROI就会比较高。

美团DSP在点击价值预估上经历了两个阶段:
第一阶段是站外广告的落地页是广告的详情页面时,广告的点击价值预估比较简单,只须要预估出站外流量到达广告详情页以后的CVR便可。正负样本的选择也比较简单,采集转化样本为正样本,采集浏览未转化样本做为负样本。咱们也进行了适当的负样本采样和真实CVR校准,这里采用的方法跟上一节相似,再也不赘述。 模型方面,在控制特征复杂度的基础上,咱们选择了效果不错的二次模型FFM,复杂度和性能都可以知足线上的性能。 特征方面,咱们使用了站外实时特征+部分离线挖掘特征,因为FFM预测复杂度是(knn),k是隐向量长度,n是特征的个数,特征的选择上须要挑选贡献度比较大的特征。

第二阶段,通过统计,详情页的用户流失率很是高,为了下降流失率,咱们开发了广告二跳页,在二跳页里面,用户在站外点击的广告排在第一位,剩下的是根据咱们的召回策略和排序策略决定的。根据公式1,点击价值是由二跳页的k个广告共同决定的。可是在站外广告排序和报价的过程当中,咱们没法获取中间页的召回结果,因此在实际状况中是没法适用的。目前咱们的策略是直接对当前用户和当前商品的特征创建一个回归模型,使用用户在二跳页上成交的金额做为label进行训练,模型分别尝试了GBDT和FM,最终采用了效果稍好些的GBDT模型。

离线评估

业内经常使用的量化指标是AUC,就是ROC曲线下的面积。AUC数值越大,模型的分别能力越强。

Facebook提出了NE(Normalized Entropy)来衡量模型,NE越小,模型越好。
$$NE=−1N∑ni=1(1+yi2log(pi)+1−yi2log(1−pi))−(p∗log(p)+(1−p)∗log(1−p))(3)$$
N:训练的样本的数量。 yi:第i个样本的lable,点击为+1, 未点击为-1。 pi:第i个样本预估的点击率。 P:全部样本的实际点击率。

离线咱们主要使用的是AUC和NE的评估方法。

在线AB测试

经过在线ABtest,确保每次上线的效果都是正向的,屡次迭代后,站外CTR提高30%,广告二跳页CTR提高13%,二跳页CVR提高10%。

在线监控

  1. 在线AUC监控

在线预估的CTR和CVR,创建小时级流程,计算每一个小时的在线AUC。发现AUC异常的状况,会报警,确保模型在线应用是正常的。

  1. 在线预估均值监控

在线预估的值会计算出平均值,确保均值在合理的范围以内。均值太高会致使报价偏高,获取流量的成本增长。均值太低,形成报价偏低,获取的流量就偏少,对于估值异常的状况能及时响应。

本文介绍了美团DSP在站外投放过程当中的策略实践。不少细节都是在业务摸索过程当中摸索出来的。后续有些工做还能够更细致深刻下去:

  1. 流量筛选

流量筛选目前仍是比较粗暴的根据网站历史的CTR等直接进行过滤,后续会基于用户的站内外的行为,对流量进行精细化的筛选,提高有效流量,提升转换。

  1. 动态调整报价

在DSP的报价环节,点击率预估模型会对每个流量预估出一个CTR,为了适应adx市场的须要,会加上指数和系数项进行调整。可是经过这种报价方式获取的流量,因为外部竞争环境的变化,流量自然在不一样时段的差别,常常会出现CPC不稳定。该报价的系数对于全部的媒体都是一致的,而通常的优质媒体都是有底价的,且不一样媒体的底价不一致,形成该报价方式没法适用全部的媒体,出现部分优质媒体没法获取足够的流量。
咱们的目标是在CPC必定的状况下,在优质媒体、优质时段尽量多的获取流量,这里咱们须要根据实时的反馈和指望稳定的CPC来动态调整线上的报价。从而在竞价环境、时段、媒体变化时,CPC保持稳定,进一步保证咱们的收益最大化(一样的营销费用,获取的流量最多)。

  1. 位置召回

基于位置的召回策略中,咱们对用户的商圈属性没有做区分,比较粗粒度的统一召回,这样其实容易把用户当前时间/位置真正有兴趣的商品拍的比较靠后;比较好的办法是经过精准的用户画像和用户消费时间/位置上下文挖掘,根据用户竞价时的位置和时间,分析出用户转化率高的商圈,从而进行更加精准的投放。

在业务上,美团DSP会逐步接入市场上主流的AdExchange和自有媒体的流量。技术上,会持续探索机器学习、深度学习在DSP业务上的应用,从而提高美团DSP的效果。



欢迎订阅「K叔区块链」 - 专一于区块链技术学习

博客地址: http://www.jouypub.com
简书主页: https://www.jianshu.com/u/756c9c8ae984
segmentfault主页: https://segmentfault.com/blog/jouypub
腾讯云主页: https://cloud.tencent.com/developer/column/72548
相关文章
相关标签/搜索