技术博客|第17期:广告程序化交易(一)- 生态系统

news2025/1/16 8:04:47

32eb8bd0dd5002ba7dfa370473c10faa.png

在《Hulu/Disney Streaming流媒体广告平台中的核心技术(上)》广告流程章节中,我们提到了Disney的主要流量是通过每年定期举行的Upfront大会来进行售卖。Upfront会占据我们大部分的流量。除了Upfront售卖的方式以外,剩余的流量在Disney流媒体广告系统中则是以程序化交易方式进行售卖。

在这篇博文中,我们将着重介绍整个程序化交易的生态系统及其基本广告类型,在后续博文中我们再介绍其中的竞价机制和所面临有关算法方面的问题与挑战。

fe989cdd09135690fd469040b388c10e.png

在前面章节中我们提及到在线广告的三个参与者分别是广告主(Advertiser)、媒体方(Publisher)与受众(Audience)。在在线广告早期时刻,广告主(需求侧)直接与媒体平台(供给侧)进行签约来购买流量。但是对于广告主和媒体方存在如下几个问题:

媒体方:

1) 对于大媒体平台来说存在大量的长尾流量,难以以大订单的方式来进行售卖。

2) 同时也存在很多小媒体平台,拥有优质的流量,无法找到对应的广告主进行售卖。

3)合约广告提前对某一类流量进行了价格锁定,无法利用数据来精准售卖每一个流量。

广告主:

1) 大广告主对长尾流量也有一定的需求,但向多个媒体平台进行采买耗时耗力。

2) 小广告主因为预算问题对长尾流量需求更为迫切,但因为预算等问题没办法与大的媒体平台进行签约。

此时,作为供给侧和需求侧两端的中间平台Ad Network (ADN) 便应运而生。ADN整合了中小媒体的流量或者是大媒体的长尾流量来进行售卖。同时对于广告主来说,它不必单独去与每一家媒体进行对接进行,当有对应的广告需要进行流量投放的时候,直接在ADN平台上进行采买。ADN作为中间平台商,掌握着两方的定价权。对于广告主来说,ADN会提高流量的报价,而对于媒体方来说,ADN会降低流量的报价。通过这种“差价”的方式,ADN来赚取属于它自己平台的收益。

4f65890f9165eb13c9bb35420889b4fc.png

图1:广告主、媒体向ADN购买、售卖流量

但随着在线广告的发展,越来越多的ADN出现在了市场上。不同的ADN拥有不同的流量,供需侧难以达到一个平衡,ADN之间也经常需要相互购买流量。以及ADN牢牢地掌握着广告主和媒体方的定价权。在这种情况下,Ad Exchange (ADX) 进一步集成了多个ADN的流量,来达到流量之间的供需平衡,以及采用一种更为透明的采买方式:实时竞价拍卖(Real-Time Bidding, RTB)的方式来进行流量的购买。

对于媒体方而言,单独与每一家ADN或者ADX进行集成可能十分的麻烦,不同的ADN或者ADX有不同的协议与接口,同样的,在广告主的一侧也有类似的问题。因此代表媒体方的供给侧平台Supply Side Platform (SSP)与代表广告主的需求侧平台Demand Side Platform (DSP)便出现了。对媒体方而言,它不需要单独与每一个ADX进行对接,而只需要与一个SSP进行对接,SSP会对接其余厂商的ADX。对广告主而言,他也不需要单独再与各个ADX进行对接。广告主只需要设置好自己的预算,需要投放的人群以及KPI等指标,则有DSP会代表广告主参与实时竞价。除了前面所提及的ADX,SSP,DSP等之外,为了DSP、SSP、ADX等平台更好的去识别用户,精准定位受众,它们开始求助于一类特定平台:数据管理平台Data Management Platform (DMP) 。DMP负责收集用户侧的数据,为用户打上各个类型的标签。当其他平台需要精准识别用户的时候,便可以向DMP购买服务。当然除了DSP之外,SSP和媒体也有类似需求。综上,对于程序化交易,总共有如下几类角色的参与:广告主 advertiser、媒体方 publisher、用户 user、需求方平台 DSP、供给侧平台 SSP、广告交易平台 ADX/ADN。图2展示了整个程序化交易中所参与的各个角色。

4d55a1d924fba4f345f975c6856af2ca.png

图2:程序化交易市场参与角色

在这一套整个实时竞价系统中,广告主便可以根据用户之前的行为、用户潜在的行为以及可能的属性来进行竞价。整个竞价过程通常发生在200ms以内。图3则展示了当一个用户访问一个网页时,实时竞价发生的过程。

f944b0db85cfe8805da9059437b0afb5.png

图3:RTB竞价流程

1. 当用户访问一个网页时,媒体端获得一次广告展示的机会。

2. 对应的媒体平台将这次广告展示机会发送给SSP。

3. SSP作为代理,将这次广告展示机会转发给某个ADX。

4. ADX向下游多个DSP询问该流量的报价。

5. 当DSP收到一个竞价请求之后,从DMP中获取对应请求的相关信息,如用户标签、行为等等。

6. DSP内部也会存在多个广告主的订单,它们之间也会有一轮竞争。

7. DSP将内部选择出来的广告返回给ADX。

8. ADX在接受到多个下游DSP的广告及其报价之后,会进行一轮竞价,选择出价最高的广告作为获胜的广告。

9. ADX会通知下游获胜的DSP(即出价最高的DSP),当该广告向用户进行展示的时候,ADX会向对应的DSP收取一定的费用。具体的费用如何收取,则涉及到我们下一章节介绍的竞价机制。

10. ADX将获胜的广告返回SSP。

11. SSP将广告返回对应的媒体广告平台。

12. 媒体将获胜的广告展现给用户。

13. 如果用户有点击、转化等行为,则会将对应的行为数据发送到对应展示广告的DSP中。

上述描述了一次实时竞价所发生的步骤。在上面步骤中的,有很多算法与数据发力的点,比如在DSP端:

(1)DSP如何在预算有限的情况对某一个展示机会进行竞价来达到广告主所要求的KPI。

(2)DSP如何去估计用户的标签属性,点击率,转化率。

(3)如何估计市场中对某类流量的竞价情况。

亦或在媒体端,通常会对流量设置一定的底价来保护自己的利益,那么如何设置底价才能够使得自己的收益最大,也是实时竞价中一个核心的问题。

c80bc297fbcbf67616c3e0e4754b9266.png

在前面我们讨论了实时竞价是如何进行的。但RTB是一个公开的市场,公开竞价(Open Auction,OA),也就是对于任何一个接入ADX的DSP来说,都可以对SSP发送过来的流量进行竞价。而对Hulu/Disney来说,用户的广告体验一直是我们第一位的要求。对所有在Hulu/Disney上投放的广告都会有专门的人员进行审核来避免一些暴力、质量体验极差的广告出现在用户的视野中。对于我们的程序化广告交易而言,我们参与的并不是一个公开的市场,而是一个私有市场(Private Marketplace,PMP)。为了保证对应广告的质量,只有经过我们邀请进来的广告主才有资格对我们的流量进行竞价。根据广告主的需求不同,在PMP市场中,媒体方可能与广告主签订如下三类程序化交易订单:

1. Programmatic Guaranteed(PG):这种订单的形式是保价保量。即广告主会以固定价格来购买媒体方的流量,并且媒体会保留一部分的流量给该订单。

2. Unreserved Fixed Rate (UFR):在有的地方也叫Prefered Deal,这种订单的形式是保价不保量,即广告主以固定价格来购买媒体方的流量,但是媒体对该种类型的广告的投放不做任何的保证。

3. Invite Only Auction (IOA):这种订单的形式是既不保价,也不保量。广告主会对流量按价格进行竞拍。媒体对该种类型的广告的投放不做任何保证。

d2d2309dcdba48ff4b594e6c98a536ee.png

图4:程序化交易广告类型

在上述不同种类型的订单中,对于媒体投放的广告流量,不同类型的订单有不同的优先级。一般而言,媒体方会把最优质的流量分配给直接售卖(Direct Sales)的订单与PG类型的订单。接下来如果有剩余流量,则可能给UFR以及IOA类型的订单。最终如果还可能有剩余流量的话才会分配给Open Auction参与公开竞价。在上述不同种类型的订单中,对于媒体投放的广告流量,不同类型的订单有不同的优先级。一般而言,媒体方会把最优质的流量分配给直接售卖(Direct Sales)的订单与PG类型的订单,接下来如果有剩余流量,则可能给UFR以及IOA类型的订单,最终如果还可能有剩余流量的话才会分配给Open Auction参与公开竞价。

f4f897239cb0a5b3fa7a10e2a284745b.png

图5:不同类型订单优先级

但是在Hulu/Disney的程序化广告中,因为前面说需要保证广告质量以及用户体验,所以只有PG,UFR与IOA三种程序化订单参与。当我们的广告流量无法投放直接售卖的广告或者这三类程序化订单的时候,我们也不会将流量发送给公开市场去进行竞价。

e1288a69e84db5f9b0c390ada7892bcd.png

Hulu/Disney流媒体的广告系统是一个大而全的广告系统。包含我们通过一方直接签约售卖的广告与程序化广告。对于我们一方售卖的广告,以保量广告为主,计费模式为CPM(Cosp Per Mille)计费,其中的核心需求是广告投放一要满足保量,二是要满足投放均匀。具体可以参看《Hulu/Disney Streaming流媒体广告平台核心技术》中的介绍。

在满足了一方广告投放需求之后,我们会将剩余的优质流量发送给PMP市场来最大化Hulu的广告收益。因此,如何平衡一方广告和三方广告之间投放来最大化我们的整体收益是一个十分有挑战的问题。为了解决该问题,在我们的广告系统内部,有一个专用的引擎:统一决策引擎,来平衡一方广告与三方广告的投放,从而最大化Hulu的广告收益。对于该引擎而言,它主要解决以下几个问题:

1. 哪些流量已经满足了当前的一方广告投放需求,可以发送给PMP市场来进行竞价从而替换掉当前一方广告。它的目标是尽可能将多的机会发送给PMP市场,但同时又满足自己一方广告的投放。

2. 在决定给PMP市场发送当前流量的时候,我们的底价如何设置?它的目标是尽可能的抬高PMP市场的竞价,同时避免设置过高导致拒绝过多的来自程序化交易市场的竞价请求,从而最大化我们程序化广告的收益。

3. 在PMP广告返回之后,替换掉一方广告的时候,怎么进行比价从而决定当前的程序化广告可以替换掉内部已经选出来的一方广告来最大化收益。

在我们的实际广告系统内,广告的投放逻辑如下,对于每个用户,我们会一次性的选择多个广告进行展示。

f7cc3bd982b3a577a9123d2aa8c994c1.png

图6:Hulu广告系统投放逻辑

在我们广告系统内,对于内部广告投放引擎,只选择出合适的一方广告进行投放。在统一投放引擎内,负责上述的三件事情。

1. 首先衡量一方广告有没有任何的投放风险。比如对于广告1,如果在模型的预测下有一定的投放风险,则会将广告保留。因为Hulu的首要目标还是要满足一方广告的投放需求。但是对于广告2,3,4,当前投放情况良好,则可以将对应的流量发送给PMP市场,来探索是否有更高的出价。

2. 根据下面三个因素来计算出一个合适的底价:1)流量的本身价值,2)一方广告的投放情况,3)对PMP市场竞价的建模,将流量和对应的底价发送给PMP市场。PMP市场在进行竞价之后,会返回相应的广告,包含我们上述提及到的三类广告以及对应的获胜价格。

3. 将一方广告与三方广告进行综合选择。在这里,我们会对内部的每一个无投放风险广告进行一个损失的衡量,损失主要考虑投放风险大小和该广告本身的CPM。最后做一个统一的收益优化。

4. 最后则将最终决策所产生的广告返回给客户端,呈现给用户。

这三个问题具体的解决方案我们会在后面的博客中进行介绍。通过我们引入了该统一决策引擎,Hulu能够将满足一方广告投放要求后剩余流量进行最大程度的变现。

0476d7a58984748a0f4d046665656225.png

在本篇博客中,我们介绍了程序化交易的基本流程,以及不同的程序化交易广告类型,包含了PG、UFR、IOA、OA,以及当前Hulu是如何进行程序化和非程序化广告投放的。在下一篇博文中,我们将会介绍程序化广告中一个核心的问题:竞价机制(拍卖的组织者是如何进行收费)。

作者与团队介绍

Changsheng Xiang,广告智能团队资深算法工程师。

观众至上的广告业务是Hulu和迪士尼的重要战略。北京广告智能团队的使命是通过使用数据和AI技术,在电视和流媒体上优化广告业务并革新迪士尼的广告平台。我们构建各种解决方案以衡量和优化广告生命周期的各个环节。我们是一支强大的跨职能团队,致力于提供端到端解决方案,涵盖了从机器学习,大数据,微服务到数据应用等各方面技术领域。

1a617cb3e1374ef7f689effec9fb7f9d.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/162322.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

解析数字员工,为何其已成为企业优势选择

数字化转型浪潮来袭,“数字员工”市场加速升温,各行各业都开始探索数字员工的应用场景。到底什么是数字员工,他们又有哪些优势而备受企业青睐?“抛头露面”与“幕后英雄”数字员工是一种形象化的称呼,所谓“数字员工”…

AOSP安卓源码下载

Android源码下载 在国内想下载Android要么科学上网,要么使用国内搭建的镜像,有清华镜像,中科大的镜像网站。这里使用清华镜像网站镜像Android源码的下载清华镜像网站地址,为啥我要写这篇笔记嘞,虽然网上有很多这方便的…

理发之前先用 AI 替你尝试新发型 #hairstyleai

让 Tony 老师傻眼的 AI 发型效果神器上线!💇hairstyleai 依靠人工智能的力量尝试新发型! hairstyleai 是一个在线人工智能网站,可以根据你的照片,使用强大的人工智能技术生成不同的发型,看看到底哪种最适合…

Layer Normalization

1、原理 Layer Normalization是针对自然语言处理领域提出的,例如像RNN循环神经网络。在RNN这类时序网络中,时序的长度并不是一个定值(网络深度不一定相同),比如每句话的长短都不一定相同,所有很难去使用BN…

Gradle学习笔记之build.gradle文件

文章目录简介常见属性代码仓库subprojects和allprojectsext自定义属性buildscript简介 build.gradle是gradle构建脚本文件,支持java、groovy等语言。 每个gradle项目或模块都会有一个build.gradle文件,该文件是项目构建的入口,可配置版本、…

【RabbitMQ二】——RabbitMQ入门教程(简单模式)

RabbitMQ入门教程(简单模式)前言RabbitMQ相关术语RabbitMQ简单模式示例总结如果博主的文章对您有所帮助,可以评论、点赞、收藏,支持一下博主!!!前言 本篇博客主要是实现RabbitMQ最简单的模式,一个生产者,一…

【指针笔试题上】你知道大厂面试题的指针题是什么样的吗?快来通过这些面试题目检测一下自己吧!

目录 前言: 一.strlen和sizeof的区别 二.一维数组笔试题解析 三.二维数组笔试题解析 四.总结: 博客主页:张栩睿的博客主页 欢迎关注:点赞收藏留言 系列专栏:c语言学习 家人们写博客真的很花时间的,你们…

【自学Docker】一文解决Docker安装

Docker Centos安装 Docker版本 Docker 从 1.13 版本之后采用时间线的方式作为版本号,分为社区版CE和企业版EE。 Docker社区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外的收费服务,比如经过官方测试认证过的基础设施、容器…

1.1 java 基础语法

目录 一、Java 基础语法 (1)对象: (2)类: (3)方法: (4)实例变量: 二、如何运行java程序(前提是java的环境已经创建完…

19.Isaac教程--C语言接口(Isaac C API)

Isaac C API ISAAC教程合集地址: https://blog.csdn.net/kunhe0512/category_12163211.html 文章目录Isaac C API程序流程和消息格式ROS示例独立示例启动和停止应用程序向 Isaac 应用程序发布消息从 Isaac 应用程序接收消息语言环境设置示例消息ImageProtoRangeScanProtoStateP…

C语言 八皇后(包含错误代码及分析)

基本思路:用递归思想解决,在8*8的棋盘放置8个皇后,则放置成功会每行有且仅有一个皇后(因为皇后不能同行),所以可以循环行,尝试在某列放置,和 全排列 http://t.csdn.cn/kvIXC 的解决方…

vulnhub DC系列 DC-4

总结:爆破,teehee提权 目录 下载地址 漏洞分析 信息收集 密码爆破 命令执行 ​编辑 ssh爆破 提权 下载地址 DC-4.zip (Size: 617 MB)Download: http://www.five86.com/downloads/DC-4.zipDownload (Mirror): https://download.vulnhub.com/dc/D…

远程连接mysql报错:1130 - Host XXX is not allowed to connect to this MySQL server

问题描述 1130 - Host 123.120.193.96 is not allowed to connect to this MySQL server 译:不允许主机 123.120.193.96 连接到此 MySQL 服务器 远程连接的时候出现如下错误: 问题分析 根据描述提示,在用Navicat配置远程连接Mysql数据库时遇…

【Node.js】写一个数据自动整理成表格的脚本

前言 企业项目进行数据埋点后,埋点事件名需要整理成Excel表格便于统计,目标是将下图左侧数据转化成下图右侧的Excel表格: 考虑到左侧埋点数据是随项目迭代增加的,埋点数据每增加一次我就要把数据一条一条的CtrlC/V复制粘贴至Ex…

春节要放假了,外贸人你准备好了吗?

一转眼,老外们的假期即将结束,而我们的春节假期即将开启。有人会想:工作一年了,好不容易春节放个假,我是不是应该好好休息了?对别人是!但是对于我们外贸人,并不是!很多外…

第十三届蓝桥杯C++B组省赛 J 题——砍竹子(AC)

1.砍竹子 1.题目描述 这天,小明在砍竹子,他面前有 nnn 棵竹子排成一排,一开始第 iii棵竹子的高度为 hihihi。 他觉得一棵一棵砍太慢了,决定使用魔法来砍竹子。 魔法可以对连续的一段相同高度的竹子使用,假设这一段…

数学基本算法

欧几里得算法 求两个数的最大公约数: /**** param a 整数* param b 整数* return 两个整数的最大公约数*/public static int gcd(int a,int b){return b0?a:gcd(b,a%b);} 扩展欧几里得 /*** * param a * param b (a,b)两个整数* param x * param y (x,y)…

LeNet5模型与全连接模型的差异

1 问题深度学习训练过程中,有很多的训练模型,我们组就在思考LeNet模型与之前运用的全连接模型在训练精度损失与验证精度损失上有什么差别?2 方法这是LeNet模型的主要代码,对数据进行两成卷积与两次池化之后再建立三成全连接即可。…

Oracle数据库的监控指标

一、Oracle 监控指标 Oracle数据库常见性能指标主要有:当前登录数、非阻塞锁数、当前死锁数、阻塞锁数、当前锁数、会话数等内容,如下图所示。 注意:以下是 Oracle 监控所需要的指标,具体根据需要监控哪些、超阈值而定。 1.1 新建主机群组 1.2 新建模板 1.3 创建主机 …

Qt 6.4.2在Windows上安装过程及简单验证

Qt是一个跨平台的C开发库,用来开发图形用户界面(Graphical User Interface, GUI)。它支持Windows、Linux、macOS、Android、iOS、QNX等平台,一个框架、一套代码库、任意平台部署。Qt有开源和商业两种许可。 Qt从5.15开始官方不再直接提供开源的exe…