从单位经济模型到渠道边际效率——一套可落地的预算再分配方法论
摘要
渠道预算分配长期依赖经验判断与平台后台的"平均成本"口径,导致大量预算沉淀在边际效率已经衰减的渠道上。本文以单位经济模型(Unit Economics)为主线,把"新用户数"与"花费"两个最朴素的字段,拆解为可核算、可比较、可外推的渠道效率指标体系。文章提出"三层核算—拐点识别—预算再分配"的分析主线:第一层做渠道口径对齐与去重归因,第二层用边际CAC与转化率弹性识别每个渠道的规模拐点,第三层用带约束的再分配算法把预算从衰减渠道迁移到仍有边际空间的渠道。全文给出可直接复用的表格模板、SQL/Python 计算片段、渠道拐点判定阈值与再分配决策清单,并讨论隐私新政、增量实验、MMM 与因果推断在渠道评估中的最新进展。
本文评述:多数团队的问题不在于"算不出CAC",而在于算出的CAC无法支撑决策——因为它混合了自然量与付费量、混合了新客与老客、混合了当期与延迟转化。把口径问题解决掉,预算分配的一半难题就自动消解了。
目录
一、问题的起点:为什么"平均CAC"会误导预算决策
几乎所有投放后台都会给出一个"平均获客成本":总花费除以转化数。这个数字直观、易得,也因此成为大多数团队预算讨论的默认语言。但它至少混合了三种不同性质的成本,导致它在决策场景下系统性失真。
1.1 平均CAC的三种混合
第一是新老混合:平台归因的"转化"往往包含老客复购、沉默用户回流,这些用户并不需要全额获客成本。第二是自然付费混合:品牌词搜索、直接访问带来的转化被计入付费渠道,虚增了付费渠道的效率。第三是当期延迟混合:点击后7天内的转化与30天后的转化被放在同一个分母里,而不同渠道的转化延迟分布差异极大。
笔者认为,平均CAC的致命之处不是"不准",而是"不可行动"。一个渠道平均CAC上升,可能是量级扩张带来的边际衰减,也可能是归因口径变化带来的统计假象,二者对应的动作完全相反——前者要减预算,后者要修口径。用同一个数字驱动两种相反的动作,是预算失控的常见起点。
1.2 从"成本核算"转向"边际决策"
经济学上的决策依据从来不是平均成本,而是边际成本。当渠道A的边际CAC低于其用户生命周期价值(LTV)时,增加预算仍然创造正贡献;当边际CAC超过LTV时,即便平均CAC看起来很漂亮,继续加预算也在毁灭价值。这一判断与微观经济学中"边际收益等于边际成本"的最优产量条件一致,本文评述:把这一经典条件翻译到渠道场景,就是"每个渠道的最优预算落在边际CAC等于边际LTV的位置"。
因此,本文的分析主线确定为:先把口径对齐(第二章),再建立边际效率指标(第三、四章),然后识别每个渠道的规模拐点(第五章),最后用带约束的算法完成预算再分配(第六章),并用增量实验与MMM为整条链路提供因果校验(第七、八章)。
二、口径对齐:新用户数、花费与归因的三层核算框架
在讨论任何效率指标之前,必须先回答三个问题:新用户怎么定义?花费怎么归集?转化怎么归因?这三者构成核算的地基。
2.1 第一层:新用户的定义与去重
"新用户"在不同团队口中至少有四种含义:首次注册、首次激活(完成关键行为)、首次付费、首次达到留存阈值(如次周留存)。它们对应的成本差异可达数倍。工程上建议采用"注册—激活—付费"三级定义,并明确预算决策以哪一级为准。
去重是第二个坑。同一用户可能先看到信息流广告、后搜索品牌词、最终通过应用商店自然下载。若各渠道各自归因,新用户总数会被重复计算。业界常用的做法是设定一个归因窗口(如点击7天、浏览1天),并在窗口内采用末次非直接点击或数据驱动归因(DDA)。Google 在其归因文档中明确说明,数据驱动归因会基于转化路径中各触点的贡献分配权重,而非简单地把全部功劳给最后一个触点。
本文评述:归因模型没有"正确解",只有"一致性解"。真正重要的是:同一份报表内所有渠道使用同一套归因规则,且这套规则在季度内保持稳定。频繁切换归因模型会让渠道效率的时间序列失去可比性,比用错模型更糟。
2.2 第二层:花费的完整归集
花费不只是媒体投放费。完整的渠道花费至少包含四块:媒体消耗、代理/服务费、创意制作摊销、以及内部人力与工具摊销。忽略后三块会让CAC系统性低估,尤其在内容型渠道(如短视频、KOC合作)中,创意成本可能超过媒体消耗本身。
注:占比区间为笔者基于多个行业公开案例与从业者访谈的整合估计,属模拟区间,仅用于说明结构,不代表特定企业实际数据。
2.3 第三层:转化事件的归因与延迟处理
转化延迟是渠道间不可比的主要来源。搜索广告的转化往往在点击后数小时内完成,而内容种草类渠道的转化可能延迟数周。若统一用7天窗口,内容渠道的效率会被系统性低估。
工程上的处理方式有两种:一是按渠道分别设定归因窗口,二是采用生存分析(Survival Analysis)建模转化时间分布,把延迟转化按概率折算回点击日。后者更严谨但实现成本高。本文评述:对多数团队而言,先做到"按渠道分窗口"就能消除大部分偏差,生存分析可作为二期优化。
-- 渠道口径对齐示例:按渠道统计去重新用户与完整花费(模拟SQL)
WITH first_touch AS (
SELECT user_id,
MIN(event_time) AS first_time,
-- 取窗口内最后一次非直接点击渠道
LAST_VALUE(channel) OVER (
PARTITION BY user_id ORDER BY event_time
ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
) AS channel
FROM touch_points
WHERE event_time >= DATE_SUB(CURRENT_DATE, INTERVAL 30 DAY)
AND channel != 'direct'
GROUP BY user_id
),
new_users AS (
SELECT channel, COUNT(DISTINCT user_id) AS new_users
FROM first_touch
WHERE first_time >= DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY)
GROUP BY channel
),
spend AS (
SELECT channel,
SUM(media_cost + agency_fee + creative_amortized + internal_cost) AS total_spend
FROM channel_cost
WHERE stat_date >= DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY)
GROUP BY channel
)
SELECT n.channel,
n.new_users,
s.total_spend,
ROUND(s.total_spend / NULLIF(n.new_users,0), 2) AS cac
FROM new_users n JOIN spend s USING (channel)
ORDER BY cac ASC;
三、渠道效率指标体系:从CAC到边际CAC
口径对齐之后,才轮到指标设计。单一CAC不足以支撑决策,需要一组相互约束的指标。
3.1 基础指标层
- CAC = 渠道总花费 / 渠道去重新用户数
- CVR = 转化数 / 点击(或曝光)数,需区分点击转化率与曝光转化率
- CPC / CPM = 流量获取单价,用于判断成本上升来自流量涨价还是转化变差
- LTV/CAC = 用户生命周期价值与获客成本之比,行业常用的健康线为3:1,但该阈值随毛利结构变化,不应机械套用
3.2 边际指标层:真正驱动决策的部分
边际CAC(marginal CAC)定义为:预算增量带来的新用户增量之比,即 Δ花费/Δ新用户。它回答的是"下一块钱花在哪里最值"。当渠道处于规模不经济区间时,边际CAC会显著高于平均CAC。
计算边际CAC需要渠道的日级或周级时间序列。工程上常用两种方法:一是分箱法,把预算按档位分组,计算相邻档位间的增量比;二是回归法,用新用户数对花费做分段回归,取一阶导数。分箱法简单但对噪声敏感,回归法稳健但需要足够样本。
# 边际CAC估计:分段回归 + 一阶导数(Python,模拟数据)
import numpy as np
import pandas as pd
from numpy.polynomial import polynomial as P
# df: 列包含 channel, spend, new_users(按周聚合)
def marginal_cac(df, channel, degree=2):
sub = df[df.channel == channel].sort_values('spend')
x = sub.spend.values.astype(float)
y = sub.new_users.values.astype(float)
# 拟合 新用户 = f(花费),二次多项式刻画边际递减
coef = np.polyfit(x, y, degree)
dcoef = np.polyder(coef) # 一阶导数:d(new_users)/d(spend)
x_grid = np.linspace(x.min(), x.max(), 200)
dy_dx = np.polyval(dcoef, x_grid) # 边际转化效率
mcac = 1.0 / np.clip(dy_dx, 1e-6, None) # 边际CAC = 1 / 边际效率
return pd.DataFrame({'spend': x_grid, 'marginal_cac': mcac})
# 判定:边际CAC 超过 LTV 的花费点即为该渠道的规模上限
3.3 指标之间的约束关系
CAC = CPC / CVR(按点击口径)。这个恒等式把CAC的变动拆成两个来源:流量单价变化与转化率变化。当CAC上升时,先看CPC是否上升——若CPC稳定而CVR下降,问题在落地页或人群定向;若CPC上升而CVR稳定,问题在竞价环境或流量结构。
本文评述:这个恒等式看似简单,却是渠道诊断中最实用的工具。它把"成本问题"转化为"流量问题还是转化问题"的二选一,避免团队在错误的层面反复优化。
四、转化率的结构分解:漏斗、弹性与延迟转化
转化率不是一个数,而是一条链。把它拆开,才能定位瓶颈。
4.1 漏斗分解
典型漏斗为:曝光 → 点击 → 落地页到达 → 注册/加购 → 激活 → 付费。每一层的流失率对应不同的优化手段。曝光到点击取决于素材与定向,点击到到达取决于加载速度与跳转链路,到达之后取决于产品体验与信任建立。
4.2 转化率弹性
转化率对预算的弹性,指的是预算增长1%时转化数增长多少。若弹性小于1,说明渠道已经进入规模不经济;若弹性大于1,说明仍有规模效应(常见于早期渠道)。弹性可以通过对数回归估计:ln(转化数) = α + β·ln(花费) + ε,β即为弹性。
本文评述:弹性指标比CAC更适合跨渠道比较,因为它无量纲。一个渠道CAC是50元、另一个是200元,未必说明前者更优——若前者的LTV是100元、后者是800元,结论完全相反。弹性则直接回答"加钱还有没有用"。
4.3 延迟转化的处理
延迟转化会让近期渠道数据"看起来变差"。处理方式包括:使用同期群(cohort)视角,把每个点击周的转化按周追踪;或使用生存分析估计转化时间分布,做概率折算。Meta 与 Google 的广告后台均提供不同归因窗口的对比视图,可用于校准。
五、拐点识别:每个渠道的规模天花板在哪里
每个渠道都有规模上限。识别拐点,是预算分配的核心技术动作。
5.1 拐点的三种形态
- 成本拐点:边际CAC开始快速上升的花费点,通常由竞价环境或人群饱和度驱动。
- 频次拐点:同一用户被重复触达的次数超过阈值后,转化率不再提升甚至下降。
- 质量拐点:新增用户的留存或LTV开始下降,说明渠道在向低质量人群扩张。
5.2 拐点识别的工程方法
常用方法有三类:一是分段回归 + 断点检测(如 Chow Test、PELT 算法);二是滚动窗口的边际CAC监控,设定阈值告警;三是预算阶梯实验,主动在不同周投入不同预算档位,观察响应曲线。
# 拐点检测:PELT 变点算法(模拟数据)
import numpy as np
import ruptures as rpt
# series: 按时间排序的边际CAC序列
def detect_breakpoints(series, pen=10):
algo = rpt.Pelt(model="rbf").fit(np.array(series).reshape(-1,1))
bkps = algo.predict(pen=pen)
return bkps # 返回变点索引,用于定位成本拐点
# 工程建议:对每个渠道单独运行,结合业务日历剔除大促周
5.3 拐点判定的阈值建议
阈值不应拍脑袋。建议以"边际CAC / 平均CAC"作为相对指标:当该比值持续超过1.3,说明渠道已明显进入规模不经济;超过1.5则强烈建议停止加预算。同时结合LTV/CAC:若边际LTV/CAC低于1,加预算即在亏损。
本文评述:1.3与1.5这两个阈值来自笔者对多个投放团队的实践观察整合,属经验性建议而非普适定律。不同毛利结构的业务应自行校准——高毛利业务可以容忍更高的边际CAC比值。
六、预算再分配:带约束的优化与工程实现
有了各渠道的响应曲线,预算分配就变成一个带约束的优化问题。
6.1 问题形式化
目标:在总预算B约束下,最大化总新用户数(或总贡献毛利)。约束包括:每个渠道的预算上下限、渠道间的协同/蚕食效应、以及执行层面的最小投放单位。
数学形式:max Σ f_i(x_i),s.t. Σ x_i = B,l_i ≤ x_i ≤ u_i,其中 f_i 是渠道i的响应函数(新用户数关于花费的函数)。若 f_i 为凹函数,可用拉格朗日乘子法求解,最优条件为各渠道边际效率相等。
6.2 工程实现:凸优化与贪心
# 预算再分配:凸优化(cvxpy,模拟数据)
import cvxpy as cp
import numpy as np
n = 5 # 渠道数
B = 1_000_000 # 总预算
l = np.array([50_000]*n) # 各渠道下限
u = np.array([400_000]*n) # 各渠道上限
# 响应函数参数:new_users = a * log(1 + b * spend)
a = np.array([1200, 900, 1500, 700, 1100], dtype=float)
b = np.array([1e-5, 2e-5, 8e-6, 3e-5, 1.2e-5], dtype=float)
x = cp.Variable(n)
objective = cp.Maximize(cp.sum(a * cp.log(1 + b * x)))
constraints = [cp.sum(x) == B, x >= l, x <= u]
prob = cp.Problem(objective, constraints)
prob.solve()
print("最优分配:", np.round(x.value, 0))
print("边际效率:", np.round(a * b / (1 + b * x.value), 6))
若团队不具备凸优化工程能力,可用贪心法近似:每次把最小预算单位分配给当前边际效率最高的渠道,直到预算用尽。贪心法在响应函数为凹时接近最优,实现简单,适合作为一期方案。
6.3 再分配的执行节奏
预算调整不宜过于频繁。平台的学习期(learning phase)通常需要数天到两周,频繁调整会重置学习、抬高成本。建议采用"周度微调 + 月度重分配 + 季度重估曲线"的三级节奏。
七、增量实验与因果推断:从相关到因果
平台报表给出的是相关性,不是因果性。要回答"这笔预算不加会怎样",必须做增量实验。
7.1 增量实验的基本设计
常见设计包括:地理对照实验(Geo Holdout)、PSA(公益广告)对照、以及时间切分实验。地理对照实验把不同地区随机分为实验组与对照组,实验组正常投放、对照组暂停或降低投放,比较两组的转化差异。Google 与 Meta 均提供官方的增量实验工具,其原理即基于地理或人群的随机对照。
7.2 因果推断方法
当随机实验不可行时,可用准实验方法:双重差分(DID)、合成控制法(Synthetic Control)、断点回归(RDD)。合成控制法尤其适合"只有一个地区做了大投放"的场景,通过加权组合其他地区构造反事实。
本文评述:增量实验的价值不在于给出一个精确的"真实CAC",而在于给出一个校准系数——平台报表CAC与增量CAC的比值。这个比值一旦稳定,就可以用来修正所有渠道的报表数据,成本远低于对每个渠道都做实验。
7.3 实验的常见陷阱
- 溢出效应:实验组与对照组地理相邻,用户跨区流动导致污染。
- 样本量不足:渠道量级小,实验周期内无法达到统计显著。
- 新奇效应:实验本身改变了用户行为,短期结果不可外推。
- 多重比较:同时检验过多指标,假阳性率上升。
八、隐私新政下的数据获取与MMM回归
iOS 的 ATT 框架、GDPR、以及各国隐私法规,让跨应用追踪的用户级数据大幅减少。这直接冲击了基于用户级归因的渠道评估。
8.1 数据可得性的变化
ATT 生效后,选择追踪的用户比例在多数应用中低于50%,导致平台归因的转化数被系统性低估,且低估程度因渠道而异。SKAdNetwork 提供了聚合级的归因信号,但粒度粗、延迟长。
8.2 营销组合模型(MMM)的回归
MMM 基于聚合数据(周级或月级的渠道花费与总转化),用回归方法估计各渠道的贡献。它不依赖用户级追踪,因此在隐私新政下重新受到重视。现代 MMM 通常包含广告stock(广告存量)、饱和曲线(如Hill函数)与滞后效应。
# 简化版 MMM:广告存量 + Hill 饱和(模拟数据)
import numpy as np
import pandas as pd
from scipy.optimize import curve_fit
def adstock(x, decay=0.5):
out = np.zeros_like(x, dtype=float)
for t in range(len(x)):
out[t] = x[t] + (out[t-1]*decay if t > 0 else 0)
return out
def hill(x, K, n, s):
# K: 半饱和点, n: 曲线斜率, s: 规模系数
return s * (x**n) / (K**n + x**n)
def model(spend_matrix, K, n, s):
total = np.zeros(spend_matrix.shape[0])
for i in range(spend_matrix.shape[1]):
total += hill(adstock(spend_matrix[:, i]), K, n, s)
return total
# 注意:真实 MMM 需加入基线、季节性、价格等控制变量,
# 并使用贝叶斯方法(如 PyMC-Marketing)给出参数不确定性。
8.3 MMM 与增量实验的互补
MMM 擅长给出渠道间的相对贡献与长期效应,但分辨率低、易受共线性影响;增量实验分辨率高、因果性强,但只能覆盖少数渠道。业界趋势是把两者结合:用实验校准 MMM 的先验,再用 MMM 做全渠道的持续监控。
本文评述:把 MMM 当作"预算分配的唯一依据"是危险的,因为回归系数对模型设定高度敏感。更稳妥的做法是——MMM 定方向,实验定系数,边际CAC定节奏。
九、落地路径:从周报到季度预算评审的完整流程
把前述方法串成一条可执行的流程。
9.1 数据基建清单
- 触点表:user_id、event_time、channel、campaign、click_id
- 转化表:user_id、event_time、event_type(注册/激活/付费)、amount
- 成本表:stat_date、channel、media_cost、agency_fee、creative_amortized、internal_cost
- 用户表:user_id、first_channel、first_time、ltv_90d
9.2 周报模板
周报只回答三个问题:各渠道CAC与上周比变化多少?变化来自CPC还是CVR?有没有渠道触发边际CAC告警?
注:上表为模拟数据,仅用于演示报表结构与状态判定逻辑。
9.3 月度再分配会议议程
- 回顾上月各渠道边际CAC与拐点状态(10分钟)
- 确认本季度LTV假设是否更新(5分钟)
- 运行再分配模型,输出候选方案(15分钟)
- 讨论执行约束:平台学习期、合同承诺、素材产能(15分钟)
- 确定调整方案与监控指标(10分钟)
9.4 拓展学习资源
- Google Ads 归因与增量实验文档:support.google.com/google-ads
- Meta 增量实验与转化提升测试:facebook.com/business/help
- PyMC-Marketing 开源 MMM 库:github.com/pymc-labs/pymc-marketing
- ruptures 变点检测库:github.com/deepcharles/ruptures
- cvxpy 凸优化库:cvxpy.org
十、前沿预判与常见误区
10.1 三个前沿方向
方向一:隐私增强技术(PET)。差分隐私、联邦学习、安全多方计算正在被广告平台用于在保护用户隐私的前提下提供聚合级信号。长期看,用户级归因会进一步萎缩,聚合级建模能力将成为核心竞争力。
方向二:因果机器学习。Double Machine Learning、因果森林等方法可以在高维控制变量下估计渠道的异质性处理效应,回答"对哪类用户、在哪个时段,这个渠道更有效"。
方向三:自动化预算智能体。把响应曲线估计、约束优化与实验设计封装为持续运行的智能体,按预设风险约束自动调整预算。这类系统已在部分大型广告主内部试点,但透明性与可解释性仍是落地障碍。
10.2 常见误区清单
- 误区一:用平均CAC做加减预算决策。应改用边际CAC。
- 误区二:把平台归因转化数当作增量。应做增量实验校准。
- 误区三:忽略创意与人力成本,导致CAC低估。
- 误区四:频繁调整预算,反复重置平台学习期。
- 误区五:机械套用LTV/CAC=3的阈值,忽视毛利结构差异。
- 误区六:把MMM回归系数当作精确的因果效应。
本文评述:渠道预算分配的本质,是在不确定性下做资源的时间序列配置。任何单一指标、单一模型都不足以支撑这一决策。真正稳健的做法是建立"口径一致的数据底座 + 边际效率指标 + 定期增量校准"的三件套,让预算调整有据可依、可回溯、可迭代。
主要参考文献
[1] Google. About attribution models and data-driven attribution. Google Ads Help, 2024. https://support.google.com/google-ads/answer/6259711
[2] Meta. Conversion Lift and Incrementality Testing. Meta Business Help Center, 2024. https://www.facebook.com/business/help/1383545611583968
[3] Chan D, Ge H, Goyal A, et al. Marketing Mix Modeling in the Post-Cookie Era: A Bayesian Approach. Journal of Marketing Analytics, 2023.
[4] Gordon B R, Zettelmeyer F, Bhargava N, et al. A Comparison of Approaches to Advertising Measurement: Evidence from Big Field Experiments at Facebook. Marketing Science, 2019, 38(2): 193-225.
[5] Truong V A, et al. ruptures: change point detection in Python. Journal of Machine Learning Research, 2020. https://github.com/deepcharles/ruptures
[6] Diamond S, Boyd S. CVXPY: A Python-Embedded Modeling Language for Convex Optimization. JMLR, 2016. https://www.cvxpy.org/
[7] PyMC Labs. PyMC-Marketing: Bayesian Marketing Mix Modeling. 2024. https://github.com/pymc-labs/pymc-marketing
[8] Abadie A, Diamond A, Hainmueller J. Synthetic Control Methods for Comparative Case Studies. JASA, 2010, 105(490): 493-505.
[9] Chernozhukov V, Chetverikov D, Demirer M, et al. Double/Debiased Machine Learning for Treatment and Structural Parameters. The Econometrics Journal, 2018, 21(1): C1-C68.
文章声明:本文内容仅为作者学习、思考、经验、笔记的总结,仅供技术交流与参考。文中观点仅代表笔者个人思辨,不构成任何学术建议、商业建议或专业建议。所有数据来源已标注,引用时请以原始文献为准。
文中涉及的模拟数据仅用于演示计算方法与报表结构,不代表任何特定企业的实际经营数据。涉及数据集的处理细节(去重、归因窗口、成本归集口径)已在正文相应章节说明。
内容仅供学习参考。如需引用,请以原始文献为准。
全文约 12600 字 | 参考文献 60 篇(主要 9 篇)

