程序化广告行业(49/89):平台对接与用户识别技术全解析
程序化广告行业(49/89):平台对接与用户识别技术全解析
大家好!在之前的博客中,我们逐步探索了程序化广告行业的诸多重要内容。一直以来,我都希望能和大家一起深入学习这个领域的知识,共同进步,这也是我持续分享的动力。今天,我们将继续深入探讨程序化广告中DSP与外部平台对接的更多细节,以及关键的用户识别与ID映射技术。
一、DSP与Trading Desk及PDB的对接要点
- DSP与Trading Desk对接
- 对接方式差异:DSP与Trading Desk(TD)对接主要有API和Pre - bid两种方式。采用API方式时,如果TD只对接报表查询接口,广告投放由DSP平台负责,TD仅能查询投放数据;若TD同时对接报表查询和投放策略设置接口,广告主可在TD平台设置活动策略,DSP依据这些策略出价 。而Pre - bid对接则是DSP在出价前将流量转发给TD,TD结合自身投放策略和DMP数据做出价决策并反馈给DSP。在这种方式下,TD在活动策略设置上更具自主性,比如可利用自有DMP数据,且能横跨多家DSP平台实现预算和频次控制。
- 对接关键考量:Pre - bid对接对延迟时长要求极高,由于RTB竞价要求DSP在100ms内返回出价响应,所以DSP通常要求TD在20 - 30ms内返回出价决策,否则视为不出价。因此,双方对接前需进行延迟性测试,且同源机房的对接效果更佳。此外,在正式投放前,执行方要使用TD进行小量投放并测试对数,确保双方数据差异在标准范围内,避免后期争议。
- DSP与PDB对接
- PDB模式特点:PDB(程序化直接交易)模式的核心是保价保量,买卖双方需确保按照约定的流量量进行交易。采购流量有两种方式,100%采购模式操作相对简单,但无法挑选受众,可能造成广告费用浪费;1:1.5退量模式则允许买方挑选目标受众,流量质量更高,但对广告投放平台的技术要求也更高,需要精准把控退量计算。
- 退量算法关键:在1:1.5退量模式中,退量算法至关重要。简单的固定退量比方式并非最优,因为渠道流量存在波动,可能导致目标受众覆盖率偏低。最优的退量算法是结合目标退量比例、历史退量比例和上一分钟的退量比例,进行分钟级的实时动态调整出价比例,以确保投放更多目标人群并保证整体退量比。
二、用户识别与ID映射技术剖析
- 用户识别原理
- PC端的困境:在PC端,通常使用cookie来标识用户,但cookie存在诸多问题。其生命周期较短,一般3个月左右就会过期,而且容易被电脑管理软件清理。一旦cookie过期,重新“种”的cookie无法与原cookie匹配,导致无法识别同一用户。此外,不同浏览器的cookie相互独立,不同技术平台“种”的cookie命名规则和所属域名不同,使得各平台间无法共享数据,除非建立cookie映射关系。
- 移动端的优势:移动端相对稳定,安卓使用Android - ID或IMEI号,iOS使用IDFA号来识别用户。这些设备号ID周期稳定,且各技术平台获取的设备号ID一致,能更准确地识别用户。
- cookie映射技术
在程序化广告的流程中,不同参与者对PC用户的cookie命名方式不同。为了识别同一用户,就需要cookie映射技术。通过这种技术,可以将不同参与者的cookie串联起来,实现对同一用户的追踪和识别,从而为精准广告投放提供支持。
三、代码示例:模拟PDB退量算法
下面用Python代码模拟一个简单的PDB退量算法,帮助大家更好地理解其实现逻辑。假设我们已知目标退量比例、历史退量比例和当前分钟的流量数据,通过算法来决定是否对当前流量进行曝光。
# 假设目标退量比例为0.3,历史退量比例为0.25
target_return_rate = 0.3
historical_return_rate = 0.25
def pdb_return_algorithm(current_flow, target_user_flag):
# 假设每分钟流量波动范围在80 - 120之间
flow_fluctuation = 100 + (current_flow % 40) - 20
current_return_rate = (historical_return_rate * 0.4 + target_return_rate * 0.6) * (1 + (flow_fluctuation - 100) / 100)
if target_user_flag:
return True
else:
if current_return_rate > target_return_rate:
return True
else:
return False
# 模拟当前流量为100,是否为目标用户为False
current_flow_example = 100
is_target_user = False
result = pdb_return_algorithm(current_flow_example, is_target_user)
if result:
print("对当前流量进行曝光")
else:
print("不曝光当前流量")
上述代码只是一个简单的模拟示例,实际的PDB退量算法会更加复杂,需要考虑更多的因素和数据,但通过这个示例,大家可以对退量算法的基本思路有一个初步的认识。
写作这篇博客花费了我大量的时间和精力,从复杂的平台对接知识到技术细节的梳理,再到代码示例的编写,每一步都希望能帮助大家更好地理解程序化广告行业。如果这篇文章对您有所帮助,希望您能点赞、评论支持一下,也请关注我的博客,后续我还会继续分享更多相关知识,咱们一起在这个领域不断探索、共同进步!