oCPC实践录 | 目标ROI的出价与转化回传调控算法

2024-01-01 14:28

本文主要是介绍oCPC实践录 | 目标ROI的出价与转化回传调控算法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这篇文章我们聊聊广告主在oCPC下,怎么调控自己的出价或者回传转化优化自己的ROI。

ROI是广告主最关心的指标了,根据oCPC出价的基本原理ocpc_bid = pcvr * given_cpa * k, 广告主在整个出价中有两个可以控制的变量来影响出价,一个是直接的given_cpa,另一个是通过回传转化进而影响pcvr。

在oCPC实践录 | oCPC转化的设计、选择、归因与成本设置(4)中我们聊过,调整出价和调整回传是不等价的,不在这里赘述了。

ROI我们先定义一下:ROI=变现收入/广告花费,当ROI>1时毛利是正的,赚钱;当ROI<1时毛利是负的,亏钱。现在广告主有一个目标ROI,我们定义为target_ROI。

广告主可以通过调整出价或者转化影响出价,进而决定最终的ROI。做这个控制有个非常重要前提假设:调高出价(或转化率)ROI下降,调低出价(或转化率)ROI上升。这个假设往往是不能够严格保证的,因为调高出价有可能会买到高价值的流量,ROI不一定会下降,反之调低出价有可能会失去高价值流量,ROI不一定会上升。类似的逻辑我们在大厂广告算法专家:oCPC产品策略设计与投放实践(下)中也提到过。

现在正常的平台都会开放一个marketing API接口,供广告主自动化操作广告账户,包含广告的出价。因此,借助于这个工具,广告主可以做实时的ROI控制。

我们可以实时预估或者计算广告的真实ROI数据real_ROI,又有一个目标ROI即target_ROI,那一个很简单的思路就是无模型控制算法PID了,这里的无模型是指不去探究系统运行的机理,直接根据real_ROI和target_ROI的偏差调整出价,使得real_ROI=target_ROI,具体的算法逻辑在oCPC实践录 | 随你千变万化,oCPC PID控制(1),oCPC实践录 | 随你千变万化,oCPC PID控制(2),oCPC实践录 | 随你千变万化,oCPC PID控制(3)中有介绍过,不再赘述。

有聪明的小伙伴就发现一个问题,平台侧不是有个k值吗?他们也在控制出价,也会影响到ROI,那怎么办呢?有两个方法:

第一个方法是广告主侧的ROI控制与平台侧的成本控制,都把对方看成是一种系统干扰。直白说就是:不考虑对方的作用。

第二个方法是广告主侧的ROI控制与平台侧的成本控制分离解耦,这就需要探究系统的运行机理,使用基于模型的控制算法。系统的运行机理是一个转化的真实变现价值我们是知道的,除以target_ROI就应该是转化出价了,因此广告主直接计算平均每个转化的变现价值/除以target_ROI,将其设置为given_CPA即可,剩下的事情就是平台侧的成本控制保证real_cpa=given_cpa, 两者是解耦的。这就非常依赖平台侧的成本控制了。

(二)

有一些广告主是通过代理投放广告的,出价是通过代理控制的。所以可以通过调整转化回传来影响成本控制和ROI了。

第一个思路仍然是无模型的控制算法(PID),直接根据real_ROI和target_ROI的偏差调整回传,使得real_ROI=target_ROI,同样,会面临预估与调整出价一样的问题,不再赘述。

另一个思路是有模型的控制算法。从回传侧看系统的运行机理时,ROI等于一个转化的变现价值除以given_cpa,因此说只有转化价值累积超过given_cpa * target_ROI时才应该回传一个转化,点到为止了哈。

(三)

之前笔者做ROI产品时发现存在严重掉量的问题,当时没有分析到原因,直到看到有做目标ROI的回传时,才意识到平台侧ROI产品的一些隐忧。之前ROI产品的设计都是针对每个流量下的用户价值进行调价,但有些广告主是将多个用户累积的价值当成一个转化回传的。如果按照原来的思路将每个用户(或者转化用户的价值)的价值都进行回传,这个值会很小,会严重影响用户LTV的建模,进而影响出价和量级。

这篇关于oCPC实践录 | 目标ROI的出价与转化回传调控算法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/559529

相关文章

JDK21对虚拟线程的几种用法实践指南

《JDK21对虚拟线程的几种用法实践指南》虚拟线程是Java中的一种轻量级线程,由JVM管理,特别适合于I/O密集型任务,:本文主要介绍JDK21对虚拟线程的几种用法,文中通过代码介绍的非常详细,... 目录一、参考官方文档二、什么是虚拟线程三、几种用法1、Thread.ofVirtual().start(

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

深入理解Mysql OnlineDDL的算法

《深入理解MysqlOnlineDDL的算法》本文主要介绍了讲解MysqlOnlineDDL的算法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小... 目录一、Online DDL 是什么?二、Online DDL 的三种主要算法2.1COPY(复制法)

springboot依靠security实现digest认证的实践

《springboot依靠security实现digest认证的实践》HTTP摘要认证通过加密参数(如nonce、response)验证身份,避免明文传输,但存在密码存储风险,相比基本认证更安全,却因... 目录概述参数Demopom.XML依赖Digest1Application.JavaMyPasswo

分析 Java Stream 的 peek使用实践与副作用处理方案

《分析JavaStream的peek使用实践与副作用处理方案》StreamAPI的peek操作是中间操作,用于观察元素但不终止流,其副作用风险包括线程安全、顺序混乱及性能问题,合理使用场景有限... 目录一、peek 操作的本质:有状态的中间操作二、副作用的定义与风险场景1. 并行流下的线程安全问题2. 顺

Java 结构化并发Structured Concurrency实践举例

《Java结构化并发StructuredConcurrency实践举例》Java21结构化并发通过作用域和任务句柄统一管理并发生命周期,解决线程泄漏与任务追踪问题,提升代码安全性和可观测性,其核心... 目录一、结构化并发的核心概念与设计目标二、结构化并发的核心组件(一)作用域(Scopes)(二)任务句柄

Java中的Schema校验技术与实践示例详解

《Java中的Schema校验技术与实践示例详解》本主题详细介绍了在Java环境下进行XMLSchema和JSONSchema校验的方法,包括使用JAXP、JAXB以及专门的JSON校验库等技术,本文... 目录1. XML和jsON的Schema校验概念1.1 XML和JSON校验的必要性1.2 Sche

SpringBoot集成WebService(wsdl)实践

《SpringBoot集成WebService(wsdl)实践》文章介绍了SpringBoot项目中通过缓存IWebService接口实现类的泛型入参类型,减少反射调用提升性能的实现方案,包含依赖配置... 目录pom.XML创建入口ApplicationContextUtils.JavaJacksonUt

MyCat分库分表的项目实践

《MyCat分库分表的项目实践》分库分表解决大数据量和高并发性能瓶颈,MyCat作为中间件支持分片、读写分离与事务处理,本文就来介绍一下MyCat分库分表的实践,感兴趣的可以了解一下... 目录一、为什么要分库分表?二、分库分表的常见方案三、MyCat简介四、MyCat分库分表深度解析1. 架构原理2. 分

Java 中的 equals 和 hashCode 方法关系与正确重写实践案例

《Java中的equals和hashCode方法关系与正确重写实践案例》在Java中,equals和hashCode方法是Object类的核心方法,广泛用于对象比较和哈希集合(如HashMa... 目录一、背景与需求分析1.1 equals 和 hashCode 的背景1.2 需求分析1.3 技术挑战1.4