Py学习  »  机器学习算法

机器学习在微博 O 系列广告中的应用

DataFunTalk • 4 年前 • 890 次点击  

分享嘉宾:张克丰 新浪微博

文章整理:崔媛媛

内容来源:DataFunTalk

出品平台:DataFun

注:欢迎转载,转载请留言。


导读:O 系列广告是当前信息流广告的主流投放方式,目标是通过对广告主 ROI 进行优化,提高平台整体收益。其核心是通过技术手段智能化的解决广告主对流量的获取。微博 O 系列广告的策略模型我们将其分为智能出价,智能定向和 ROI 模型三个主要方向。智能出价利用机器学习算法对流量智能分配和扣费智能调控,从而满足广告主和平台的利益均衡;智能定向通过深度学习等技术建立 user 和 ad 的匹配连接,满足广告主对流量的智能获取;ROI 模型利用机器学习算法对用户的点击转换进行预估 ( 常见的 ctr 和 cvr 模型 ),是智能出价中扣费和排序的基础。微博业务算法团队将深度学习技术广泛应用在微博的 O 系列广告系统中,大幅度的提升了微博的变现效率。

❶ 广告博弈

商业广告系统包含三方博弈,从参与方角度主要包括:用户,广告主,媒体平台。

网民通过媒体平台获取信息,广告主通过投放系统进行商品投放,平台根据其兴趣意图给网民推荐相关的商品。平台的目标是整体经济收益,广告主的目标是获得社会效益的最大化。而广告系统是在维护网民、平台和广告主三方利益平衡的前提下,最大化平台收益。

❷ 微博广告产品形态

微博广告的产品形态包括:曝光产品开机报头,信息流产品,视频故事类产品,正文页Banner,评论流广告等。微博广告业务算法部门负责这些广告投放效果上的调优和竞价策略。

❸ 广告计费形态

传统的计费方式包括:CPT,CPM,CPC,CPA,CPS。

近期业界主流公司主要应用的信息流广告计费方式是 O 系列广告计费方式,包括 oCPC,oCPM:

O:代表优化目标

oCPC:优化目标是转化,但是按照点击扣费

oCPM:优化目标是转化,但是按照展现扣费

微博主要是以 CPM 和 oCPM 为主。

❹ 目标拆解:系统分析

上图为广告系统的核心技术栈,它是一个漏斗模型,由定向粗排,精排,机制策略3个部分组成,每一层都有对应的优化目标。

从基础角度上来说,有三率:

展现率:show 曝光

点击率:CTR

转化率:CVR

而 CPA 是广告主的转化成本

从技术架构上来说,每个转化目标能对应到一个层级结构。定向召回对应的优化目标是展现率,在召回已经提升了总体展现之后,为了防止在下游模块被过滤掉,会跟下游模块达成目标一致的情况下最大化的优化展现率。在点击率预估、转化率预估的条件下准确的评价当次流量的价值,为流量选择最优的广告,最大化广告的转化。竞价机制是广告最后的出口,负责维护整个平台的生态,包括广告组间如何进行博弈,平台收入如何最大化,这优化的不是短期的平台收益而是一个从长期的状态下来看的平台收益。

回归效果广告的本质,优化目标是专注于对 show、ctr、cvr、cpa 的优化。

下图是广告系统的核心技术栈,下面将从广告召回,模型预估和竞价机制分别介绍下 O 系列广告的应用。

❺ 核心技术栈

O 系列广告的核心技术栈包括:

数据中台:数据作为互联网最重要的资产,是算法和业务的基石。数据中台统一了微博所有的商业数据,提供了一套稳定、可扩展的读写框架。

用户理解&广告理解平台:对用户和广告的 profile,广告的内容等通过数据挖掘算法进行特征分析和概念抽取,并进行标签化。

广告召回:通过召回技术完成用户和广告的匹配。召回技术在微博平台包括 CF,语义理解,人群聚类,时序,知识图谱等。

ROI 模型优化:通过对流量上的广告效果预估,衡量出流量对该广告的价值。ROI 模型是一个价值预估模型。在微博平台包括加粉,点击,转化等多个目标。

机制策略:控制广告系统的竞价策略,扣费策略等。通过机制策略的调优,辅助广告主,用户和媒体平台三方的博弈。

两翼:广告业务和策略都需要依赖强大的工程能力,而广告引擎框架和机器学习平台能够为技术迭代插上翅膀,支撑着算法的不断迭代,驱动业务发展。

❻ 机制策略:智能出价

首先在机制策略方面介绍智能出价:

微博主要为两种模型:CPM 和 oCPX 模型。

CPM 模型是比较传统的模型,其面临的问题是平台不了解客户真实目标和转化成本,导致无法有针对性的进行优化,此时 ctr 优化只能起到辅助作用。广告主需要一直盯着投放的效果,不断调价,紧盯成本,关键点是平台并没有保证广告主 ROI。

oCPX 模型,X 的意思是既可以是 C 也可以是 M 或者是 A,广告主给出期望的转化成本,平台通过系统的优化保障转化成本,广告主此时关注的是在保证转化成本的同时跑量速度如何,带来多少转化,广告主无需频繁的去调价,平台可以保证广告主 ROI。

可以看出 oCPX 比传统的 CPM、CPC 等模型增加了更多模型智能化的解决方案,所以有句话讲:CPM 靠运营和销售,oCPX 靠算法人力。

接下来介绍一下 oCPX 中重要的策略,智能出价:

每个流量上进行智能出价时,系统会根据转换率计算当前流量下的广告出价,比如 CPC 会计算点击的成本,CPM 会计算这次展现的成本,oCPM 会计算这次转化的成本。但是大多数广告主关注的不是一次的 pv 而是全局的总投放 pv 或者当天的 pv,所以对它们的控制模式分为两种:第一种是实时控制,按照当前转化做扣费;第二种是全局成本控制,按照当天的成本扣费(平台默认广告主关注的是当天的成本),比如说一次转化会很高,出价也会相应的很高,但是由于给广告主历史的投放是已经超出广告主成本那么需要在扣费进行打折。

智能出价核心技术点:根据广告主的投放的成本和这次转化的效果智能计算出价,是一个兼顾全局的+局部的调节,局部算法使用贪心算法,没有考虑到全局的优化,根据广告主今天的转化和历史转化以及消耗情况控制每次的扣费成本,目标是提高广告主的 ROI,同时在保证广告主 ROI 的情况下,让平台整体的收益最大化。

全局算法使用控制系统理论 PID 算法:

智能出价面临的问题是:对于 APP 安装,数据存在较长的延时反馈,比如说用户看到广告和用户安装 APP 可能会间隔1天2天甚至7天,如果在这一次计算他的转化率的时候,没有考虑到部分未来数据的延迟问题,面临的问题是转化率偏低,这一次就扣少了,所以我们会有个归因的推理算法,利用推理模型来预测这个用户有可能转化的成本。

以上介绍的是一个扣费的公式,接下来介绍全局控制算法:

ecpm=广告主的出价*pctr*pcvr*调价因子

Pid 算法:

举例说明:例如追车问题,中间距离较远,距离较远需要调高速度,比如速度从100调整到120,追一段时间后马上要超过了,这时候我们就要控制下来,需要对加速度进行调节。

成本控制算法在广告系统应用也是类似。比如说广告主的成本是50,扣费的时候有可能扣低了到40,也有可能扣高了到60,那么必须要全天维持在接近50,需要这种控制算法不断的去调每次 pv 的出价,让广告主的成本保持稳定。

❼ 定向召回:智能定向

智能定向主要是解决广告主给定创意,不需要选择复杂的定向,系统自动寻找感兴趣的人群,就可以获得好的转化效果。智能定向会对广告主有自己的数据包/已选定向,根据后验的回传数据,智能为当前数据包/定向进行探索和扩展,尽量保持在投计划持续效果不降低。

比如说广告主在信息流产品中选择定向,但是这个定向在充分消耗之后就没有多少转化了,原因是筛选的数据包的可转化用户已经完成了转化,剩下的不感兴趣的也很难再有转化了。广告主通常的投放策略是先把定向选择的很窄,让整体转化率很高,所以整个流量分配很大的问题就是拿不到量,那么平台需要在投放的前期3~4天做定向筛选,在达到一定的 pv 级别,模型稳定,效果置信,可以放开定向,这样很多广告系统在放开后会比原定向增加两三倍的 pv 量,同时效果保持稳定,那么广告主的 ROI 在达到要求的条件下能够获取更多转化,对系统的整个流量的利用率提高了很多。

智能定向通过广告投放累计数据,并提取数据中的规律建立模型,系统进行智能决策。通过模型优化的方式智能决策,实现用户的匹配和广告之间的智能匹配,提高整体的匹配效率;通过快速实时的转换数据反馈,提高整体的模型转化效果。

智能定向的架构如上图所示,通过训练平台,智能定向系统,模型生成到生成匹配结果,到后端的日志反馈。有以下几个维度:对数据过滤,比如分行业的过滤,有些数据比较稀疏,在智能定向还没有引进,后边会加入;第二是通过模型算法,目前用的占比最大的是双塔模型。

双塔模型目标是解决性能的问题,用户侧和广告侧的分离训练,当然带来的问题是用户和广告之间特征交叉的信息是学不到的,这样看可能会觉得影响整体的 auc。但是最终发现效果不错,同时训练速度很快,我们在双塔模型中引用的特征包括 id 类特征、文本特征、连续值等基础类的特征。

另外还有集中模型在使用,推荐系统最常见的是 cf 模型。上图左边是目前微博的 DeepCF 网络结构,用的 pointwise 的方式训练的 deepcf 模型。右边是人群定向的方式,部分应用场景,比如有些游戏的客户会选择指定游戏人群,我们就以人群聚类的方式,以转化作为目标 label,通过这种方式筛选出一批对游戏感兴趣的用户,让广告主能够精确定向到目标人群,平台提升整体的流量利用率,从而达到智能扩展的目标。

❽ 模型预估

微博的业务场景是比较复杂的,包括点评赞转发等互动的行为,还包括推广目标,例如表单提交,应用下载,点击等。复杂的场景带来复杂的优化策略。线上共有十几个模型进行优化。那么接下来会重点介绍 cvr 模型:

CVR 模型预估

Cvr 模型直接影响着广告主的竞价能力和扣费金额,如 ecpm 计算公式所示。上图 cvr 为什么和 ctr 做乘积,原因首先是因为从展现到转化是非常稀疏的,在万分之几的概率,而且样本数据非常少,从条件概率角度上来讲,P(转化|曝光)=P(点击|曝光)*P(转化|点击),分解点击率和转化率,总体降低了稀疏性,更利于模型估计。点击率同业界的点击率的计算方式,而转化率是多种的,比如下载付费、表单填写等,不同的垂直领域,转化率差距非常大。有的是万分之一,有的是万分之二,有的是千分之一等,值域相差近10倍。第二个原因是转化数据回流的时间,有的是分钟级到天级的、有的是半个月级的,部分 label 的置信性有限。第三个原因是转化数据总量很少,比如说整个全网数据量也有限,从展现到转化一天的数据量级很小。第四个原因是,有些数据的回传是靠第三方监控的,有的是靠广告主的回传的,这些数据的可靠性是有质疑的,如何保证这部分数据的质量这也是很重要的一个环节。

面对以上挑战,首先在数据处理上做了一些工作。

模型在数据处理时根据不同的转化目标回传情况进行周期性过滤,比如 app 推广类转化数据延迟较高,会根据广告主粒度进行回传数据的置信度判断,如果样本置信度高则保留,如果样本置信度低则舍弃。另一个问题,转化的延迟,比如说预测的转化是万分之一,很难预估的非常准确,因此需要对模型预估的转化率进行实时校准,整体流程如下图所示。

模型算法采用的是 DeepFm 模型,利用 FM 解决二阶特征交叉,利用 deep 模型解决高阶特征抽象和交叉。

当 cvr 模型不稳定时,会导致大量的扣费异常,因此需要通过模型校准的方式修正预估的 ctr 和 cvr。模型校准就是通过后验的方式,通过模型预估值与真实投放结果的比较,看 gap 是多少,同时通过分桶的方式细化校准模型,这样能很快降低与转化率之间的 gap,从而使扣费维持在广告主可接受的 ROI 范围内。

特征工程:

下图是线上 ctr cvr 模型预估的框架:包括离线模型训练和在线模型预估两个方面。

整体框架主要包含:日志处理,特征分析流程。如上图所示,这一套方案也是业界比较常用的,包括在线预估的训练模型样本的数据流。合适的模型+大量的数据特征挖掘会使 cvr 模型跟业界的差距不会很大,所以我们在人力有限的情况下,在 deepfm 模型的特征方面做了如下工作:

① 包括用户历史用户行为的特征,比如我们用3天的数据进行建模,最近点击了哪些广告,用于把握用户近期的广告侧兴趣。

② 用户关键词,近期搜索词和点击行为对应的关键词,用户标签,用于从文本分析角度把握用户近期兴趣图谱。

③ 实时 session 特征,Bias 特征,统计类特征等,统计类的特征在国外是用的比较多的,包括用户历史的 pvn转化等等。目前大概是两亿左右的数据。

❾ 统一模型离线架构

最后,介绍下统一的离线模型框架。由于维护的模型较多,因此我们需要统一的一套模型框架来管理离线模型训练和评估。上图对模型框架进行抽象,实现了统一的特征体系,通用的训练框架,可定制模型算子,托管了微博商业端所有的模型算法。

PS:欢迎加入 DataFunTalk 计算广告交流群,与小伙伴们一起讨论计算广告相关问题。加管理员微信 ( 微信号:DataFunTalker ) 或识别文末二维码回复:计算广告会自动拉你进群。

分享嘉宾


张克丰

新浪微博 | 资深算法专家

——END——

文章推荐:

阿里妈妈点击率预估中的长期兴趣建模

推荐系统技术演进趋势:召回->排序->重排

社群交流:

一个「在看」,一段时光!👇

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/52535
 
890 次点击