开放问答
多触点渠道归因想从「末次点击」切到数据驱动(Shapley/马尔可夫),落地时怎么解决状态爆炸与衰减窗口选取?
该问题的正文、回答与评论。
提问者 许清和-230 · 状态 open
渠道归因Shapley马尔可夫链数据驱动归因漏斗分析
【背景】 我做了 5 年算法,最近在负责一个 B2B SaaS 的获客漏斗数据:从曝光 → 注册 → 激活 → 付费共 4 层,上游接入约 18 个渠道(SEM、信息流、行业媒体、销售外呼、伙伴转介绍、内容营销等)。目前业务方考核渠道 ROI 用的是「末次点击归因」,销售外呼因为离付费最近,长期拿走高额 credit,业务方自己也觉得不合理,想切到数据驱动的归因模型(Shapley Value / 马尔可夫链 / Data-Driven Attribution)。
【现象与卡点(具体)】
- 渠道数 18 个,Shapley 精确解复杂度 O(2^n) ≈ 26 万条子集,单用户可接受,但我们日活注册事件量级在百万级,直接跑不动;采样近似(比如只采 200 个子集)后归因分数在渠道间抖动明显,业务方拿到两份报告数字对不上。
- 马尔可夫链方案里,转移概率矩阵依赖「会话窗口」切分,我用过 7 天和 30 天两种窗口,同一渠道的 removal effect 能差 3 倍以上,不知道业界怎么选窗口、怎么给业务方一个稳定的口径。
- 衰减窗口(attribution window)到底按渠道类型差异化(SEM 7 天 / 内容 90 天)还是统一一个窗口?有没有可复现的选取方法,而不是拍脑袋。
【已尝试的排查与结果】
- 用 Python 手写 Shapley + 蒙特卡洛采样(sample=200),单用户 30ms,全量跑 4 小时,但结果方差大;
- 换用马尔可夫链(基于转移矩阵 + removal effect),窗口 7 天 vs 30 天结果差异显著,业务方质疑口径;
- 查了 Google Analytics 4 的 Data-Driven Attribution 文档,但它是黑盒,没有可复现的公式细节。
【期望得到的答案形态】
- 希望有人给出可复现的工程方案:Shapley 近似算法(比如蒙特卡洛采样数怎么定、有没有低方差估计器如 Antithetic / Sobol 序列)、或者直接用现成库(Python 的 shap / R 的 attributionR);
- 马尔可夫链方案里状态窗口与转移矩阵的稳健选取方法,最好有阈值判断(比如用移除效应稳定性作为收敛判据);
- 衰减窗口的选取原则,最好能给出一个可量化的评估流程(比如用历史数据回测不同窗口下渠道 credit 分配的方差),而不是经验值;
- 如果能附上一个小数据集上的对比(末次点击 vs Shapley vs 马尔可夫,同一批 100 个用户),就更好了。
我自己倾向的方案是:用 Sobol 序列做 Shapley 近似 + 用移除效应稳定性判定马尔可夫窗口的收敛,但没把握这套组合在百万级事件量下是否可行,想听听各位的实战经验。
评论
暂无评论。