2023年,一家头部跨境电商在北美投了800万美元开屏广告。CMO问数据团队:这钱到底花得值不值?团队憋了两周,给出的答案是"可能涨了15%,也可能没涨"——因为黑五促销、竞品降价、物流延迟全搅在一起,根本拆不干净。

这不是个案。营销效果归因(Marketing Attribution)长期是数据科学界的"测不准"难题。A/B测试需要随机分组,但地理层面的干预没法随机——你不能随机决定纽约看广告、洛杉矶不看。传统解决方案是时间序列模型,比如Google 2015年开源的CausalImpact(BSTS),用贝叶斯结构时间序列预测"如果没投广告会怎样"。但它有个软肋:对长期趋势和季节性过度敏感,短期实验容易失真。

Meta在2021年甩出的GeoLift,本质上是用合成控制法(Synthetic Control Method)给地理实验造了个对照组。不是预测,而是"拼"——从全国几百个没投广告的城市里,挑出几个跟实验城市最像的,加权组合成一个虚拟的"反事实城市"。

合成控制 vs 贝叶斯预测:两条技术路线的分野

合成控制 vs 贝叶斯预测:两条技术路线的分野

Google的CausalImpact像气象预报员:看北京过去十年的天气规律,预测下周如果没台风会怎样。Meta的GeoLift像基因测序师:找几个跟北京气候、海拔、产业结构最像的城市,拼出一个"虚拟北京"作为参照。

技术细节差异直接决定适用场景。CausalImpact依赖单一时序的历史数据,适合干预前数据充足、趋势稳定的场景。GeoLift需要横截面数据——多个单元的面板数据——在干预前找到最优权重组合。换句话说,前者是"纵向深挖",后者是"横向比对"。

实际跑出来的结果也验证了这点。一位在Spotify做增长的数据科学家对比过两个工具:当实验周期超过8周,CausalImpact的趋势外推误差会累积放大;GeoLift只要对照组选得准,14周以上的长期实验反而更稳。但反过来,如果只有3个城市的历史数据,GeoLift直接罢工——样本量不够拼不出靠谱的对照组。

开源社区的反应很真实。GeoLift的R包在GitHub上星标数两年破千,但Issue区最常见的问题是"为什么我的合成控制权重是负的"——算法允许负权重,意味着某个城市被反向计入对照组,解释成本陡增。CausalImpact的Python移植版(pycausalimpact)维护更活跃,但核心逻辑十年没动过。

从R到Python:工具链迁移背后的工程博弈

从R到Python:工具链迁移背后的工程博弈

Meta最初只发了R版本。2023年之前,想跑GeoLift得先装R环境,再处理依赖地狱——data.table和tidyr的版本冲突能折腾一下午。这对互联网公司的数据团队不友好:他们的pipeline早被Python统治,Airflow调度、Spark集群、MLflow模型管理全是Py生态。

转折点在2023年下半年。一个独立开发者把核心算法用Python重写,开源了pymetageo。不是官方移植,但API设计更贴近sklearn风格,fit()和predict()的调用逻辑让Python工程师零门槛上手。Meta团队的态度很微妙:没在官方文档里推荐,但核心成员在GitHub Issue里回复过技术问题。

更隐蔽的变化是计算效率。原始R版本用quadprog求解二次规划,城市数量过百就慢得感人。Python重写版有人试了CVXPY和OSQP,同样100个城市,求解时间从47分钟压到3分钟。这对需要频繁跑实验的电商团队是刚需——大促期间可能一天要测十几个城市组合。

但迁移也有代价。R版本的robustness check(稳健性检验)模块更完整,能自动输出安慰剂检验和leave-one-out敏感性分析。Python社区版的功能碎片化,有人用Optuna做超参搜索,有人自己写bootstrap重采样,没有统一标准。结果是:小团队图快用Python,严肃做学术发表的还是回R。

落地陷阱:算法正确≠业务可用

落地陷阱:算法正确≠业务可用

技术社区容易忽略的一层:GeoLift解决的是"能不能测",不是"测了信不信"。

某新消费品牌2022年试过GeoLift,选了成都作为实验城市投抖音开屏,用重庆、西安、昆明拼合成控制。算法跑出来的ATT(平均处理效应)是23%销量提升,置信区间不包含零,统计显著。但业务方拒绝采信——重庆同期有火锅节,西安在搞文旅大会,这些外生冲击没被模型捕捉。

Meta论文里提过解法:加协变量(covariates)做增强合成控制。实际操作中,城市级别的协变量要么粒度太粗(GDP、人口),要么获取滞后(社零数据隔月发布)。更现实的方案是缩短实验窗口,把干扰因素压进残差项,但这又和"测长期效果"的需求矛盾。

另一个坑是稀疏数据。GeoLift要求干预前每个单元(城市)都有足够多期的观测值,用于学习权重。下沉市场的县域数据往往缺失严重,算法自动把这些样本踢出候选池——结果对照组全是新一线,实验组是三四线,结构性偏差比算法误差更致命。

这些不是GeoLift独有的问题。CausalImpact面对单一时序的断点、异常值同样头疼。但合成控制法的"黑箱感"更强:贝叶斯模型至少能画出预测区间,合成控制的权重矩阵解释起来像算命——为什么郑州权重0.3、长沙权重-0.15?业务方问起来,数据科学家只能摊手。

2024年的新变量:增量测试与隐私合规

2024年的新变量:增量测试与隐私合规

苹果ATT政策(应用追踪透明度)和谷歌第三方Cookie淘汰,把效果广告行业逼向两个极端。要么彻底放弃归因,信平台的"转化价值"黑盒;要么自建第一方数据体系,用地理实验这类"隐私安全"的测量方案。

GeoLift的复兴踩在这个节点上。不需要用户级ID,只要聚合后的城市-时间面板数据,天然符合GDPR和CCPA的合规要求。Meta自己也在用:2023年Q3财报电话会里,CFO Susan Li提到"geo-based incrementality tests"是评估Reels广告效果的核心工具之一。

但合规优势有代价。聚合数据丢失了用户维度的异质性——你知道成都涨了23%,不知道是新客还是老客贡献的,不知道高净值用户是否响应更强。平台方(Meta、Google)有用户级数据能补全画像,广告主只能干瞪眼。

开源生态的演进方向也分化。一派走"轻量工具"路线,把GeoLift封装成Streamlit应用,PM点几下鼠标就能跑实验,牺牲灵活性换易用性。另一派做"重型框架",把权重优化、敏感性分析、可视化报告全打通,目标是替代Consulting公司的定制服务。两派互不兼容,选型成本反而上升。

回到开头那个800万美元的疑问。2024年,用GeoLift跑一遍大概需要:3个数据工程师2周清洗数据,1个算法工程师1周调参,业务方1周理解"为什么对照组是这四个城市"。最后输出的数字,置信区间宽度可能还有±8个百分点。

这算科学还是玄学?取决于你愿意为"比拍脑袋准一点"付多少成本。