文章目录
- Google Meridian技术解析:端到端贝叶斯营销组合建模、ROI分析与预算优化
- 一、引言
- 二、数据与因果边界
- 2.1 最小数据结构
- 2.2 DAG式思考先于采样
- 三、配置模型与ROI先验
- 四、NUTS采样与收敛诊断
- 五、Analyzer提取经营结论
- 六、预算优化与报告复用
- 七、总结
Google Meridian技术解析:端到端贝叶斯营销组合建模、ROI分析与预算优化
一、引言
亲爱的朋友们,创作不容易,若对您有帮助的话,请点赞收藏加关注哦,您的关注是我持续创作的动力,谢谢大家!有问题请私信或联系邮箱:jasonai.fn@gmail.com
营销组合模型(MMM)试图回答三个经营问题:销售中有多少来自媒体、每个渠道的增量 ROI 是多少、下一笔预算应该放在哪里。困难在于广告有滞后、边际回报会饱和,渠道又常在同一时期共同涨跌,简单回归很容易把相关性误当成贡献。
Google Meridian 用贝叶斯模型显式描述 adstock、饱和与不确定性,并提供 Analyzer、可视化和 BudgetOptimizer。下面给出一条从数据到可分享报告的端到端路线。具体类名和参数可能随版本调整,运行前应以安装版本的官方 Notebook 为准。
二、数据与因果边界
2.1 最小数据结构
| 字段 | 示例 | 作用 |
|---|---|---|
| 时间 | week | 统一观测粒度 |
| 地区 | geo | 利用跨地区变化增强识别 |
| KPI | revenue / conversions | 被解释目标 |
| 媒体投入 | spend_search | ROI 与预算优化输入 |
| 媒体曝光 | impressions_search | 建模真实投放强度 |
| 控制变量 | price、promotion、season | 减少遗漏变量偏差 |
| 人口规模 | population | 处理地区尺度差异 |
数据应先补齐完整的“地区×时间”面板,统一币种和税口径,并记录渠道定义变化。MMM 不能仅凭模型恢复从未发生过的变化:如果所有渠道每周同比例增减,模型很难分清谁真正贡献了增长。
2.2 DAG式思考先于采样
促销既可能提高销量,也可能改变投放;价格、节日、竞品和供给约束也会同时影响 KPI。控制变量不是越多越好:把媒体影响路径上的中介变量塞进模型,反而会截断真实贡献。建模前应先画出业务因果图,并说明每个控制项为什么存在。
三、配置模型与ROI先验
Meridian 通常通过数据加载器建立InputData,再用ModelSpec描述先验和采样设置。下面是工作流骨架,字段映射请按当前版本调整:
frommeridian.dataimportloadfrommeridian.modelimportmodel,spec loader=load.DataFrameDataLoader(df=df,kpi_type="revenue",time_column="week",geo_column="geo",kpi_column="revenue",media_to_channel={"search_impressions":"Search"},media_spend_to_channel={"search_spend":"Search"},controls=["price","promotion"])input_data=loader.load()model_spec=spec.ModelSpec(paid_media_prior_type="roi")mmm=model.Meridian(input_data=input_data,model_spec=model_spec)ROI 先验把业务知识放进可审计参数:成熟品牌词可能有较窄先验,新渠道则应更宽。先验不是“把答案写进去”,而是在弱识别数据上防止荒谬估计。应做先验预测检查,确认先验不会轻易生成不可能的销售规模。
| 先验策略 | 适用场景 | 风险 |
|---|---|---|
| 统一弱先验 | 缺少历史实验的新项目 | 渠道差异表达不足 |
| 实验校准ROI先验 | 有增量实验或地理实验 | 实验窗口未必代表长期 |
| 专家先验 | 数据稀疏但业务知识强 | 容易把主观偏见固化 |
| 分层先验 | 多地区、多渠道共享信息 | 模型更复杂、诊断要求高 |
四、NUTS采样与收敛诊断
Meridian 使用 MCMC/NUTS 获取后验分布。示意代码如下:
mmm.sample_posterior(n_chains=4,n_adapt=1000,n_burnin=500,n_keep=1000,seed=42,)不能把“程序跑完”当成收敛。至少检查 R-hat、有效样本量、链轨迹、发散次数和后验预测;R-hat 应接近 1,关键参数要有足够 ESS,预测分布需覆盖真实 KPI 的时间与地区结构。
数据检查 → 先验预测 → NUTS采样 → 链诊断 ↑ ↓ 后验预测 ← 异常定位 ← 参数重设/数据修正若渠道贡献高度互相替代,增加采样次数只能更准确地描述“不确定”,不能凭空创造识别。此时更有效的是加入实验先验、改善地区变化或合并无法区分的渠道。
五、Analyzer提取经营结论
Analyzer 可用于汇总渠道贡献、ROI、边际 ROI、adstock 与饱和曲线。汇报时应给出后验区间,而不是只给均值。
| 指标 | 回答的问题 | 决策用途 |
|---|---|---|
| 贡献 | 渠道带来多少增量 KPI | 复盘历史 |
| ROI | 每单位投入带来多少价值 | 跨渠道效率比较 |
| 边际ROI | 再投一元的预期回报 | 调整下一笔预算 |
| Adstock | 影响会延续多久 | 安排投放节奏 |
| 饱和曲线 | 何时进入收益递减 | 判断扩量上限 |
渠道 A 的 ROI 均值高于 B,不等于 A 必然更好。可直接计算后验样本中的比较概率:
prob_a_better=(roi_samples["A"]>roi_samples["B"]).mean()若概率只有 0.58,更诚实的结论是“证据不足以稳定排序”,而不是做确定性排行榜。
六、预算优化与报告复用
BudgetOptimizer 在响应曲线和约束下搜索渠道组合。固定预算回答“同样的钱怎样重分”,灵活预算则要同时给出总预算边界、渠道上下限和业务约束。
| 优化模式 | 关键约束 | 适用问题 |
|---|---|---|
| 固定预算 | 总额不变、渠道上下限 | 下季度同预算提效 |
| 灵活预算 | ROI目标、总额区间 | 应增加还是削减预算 |
| 情景分析 | 多组先验与成本假设 | 评估结论稳健性 |
优化器会放大模型误差,因此应比较基线方案、最优方案和保守方案,并对关键渠道设置现实变动上限。最终用 Meridian 的 Summarizer/visualizer 导出 HTML 报告,记录数据版本、代码 Commit、先验、随机种子和模型对象;保存后的模型适合复用分析,不应替代新数据到来后的重新拟合。
七、总结
| 维度 | 核心结论 |
|---|---|
| 建模 | adstock、饱和和贝叶斯先验共同表达媒体机制与不确定性 |
| 诊断 | NUTS 跑完不等于可信,必须检查链与后验预测 |
| 分析 | ROI 要和边际 ROI、概率比较及区间一起解释 |
| 优化 | 预算建议必须受业务约束,并进行保守情景验证 |
Meridian 的价值不是自动生成一张“渠道功劳表”,而是把数据、假设、不确定性和预算决策放进同一条可复现链路。MMM 真正成熟的标志,是团队能解释结论为何成立,也知道它在什么条件下会失效。
参考资料:
- Meridian 官方文档 — Google
- Meridian 开源仓库 — Google
- Meridian示例Notebook