如何运用Shapley值分解NPS贡献?

解读

面试官问“如何运用Shapley值分解NPS贡献”,核心想验证三件事:

  1. 你是否把NPS当成可拆解的业务结果,而非单一指标;
  2. 能否用博弈论思维量化“每个用户旅程环节”对NPS的真实边际贡献,避免“拍脑袋”归因;
  3. 是否具备把高阶模型落地到国内数据环境的能力(埋点质量差、用户ID孤岛、业务方只认ROI)。
    回答必须给出可落地的数据链路、采样策略、与业务团队的沟通语言,否则会被认为“只会背公式”。

知识点

  1. NPS的微观定义:在中文场景下通常取“推荐者(9-10分)比例 – 贬损者(0-6分)比例”,需以用户ID粒度落表,才能做Shapley分解。
  2. Shapley值四大公理:对称性、线性性、dummy player、可加性,保证“无偏归因”;其计算本质是遍历所有特征子集,看边际增益加权平均
  3. 特征集合设计:必须映射到国内用户运营可干预的旅程节点,例如“小程序新客7日签到”“社群秒杀活动”“企微1v1售后”“会员日积分兑换”。
  4. 价值函数V(S):取子集S下用户的平均NPS,而非收入,避免“高净值低满意度”样本扭曲归因。
  5. 采样与近似:国内DAU过亿时,蒙特卡洛采样+分层抽样(城市等级×渠道)把计算量压到小时级;需剔除异常分(刷分、客服补偿红包诱导)
  6. 业务输出:给出每个旅程环节的Shapley值占比≥5%即列为高优优化项,并换算成“每提升1%环节满意度,可带来多少NPS绝对值提升”,方便业务方直接算ROI。
  7. 技术栈:Python(shap库)+Spark分布式计算+BI可视化;敏感数据需脱敏后落在国资云或公司私有集群,符合《个人信息保护法》。

答案

“我在上一家公司用Shapley值拆解过教育类App的NPS,核心分五步:
第一步,把NPS落到用户粒度。通过埋点把“打分事件”与UID绑定,并回溯过去30天用户触达日志,清洗出8个可干预特征:‘新户7日完课’‘社群打卡’‘1v1辅导次数’‘购课折扣力度’‘节假日活动曝光’‘退费率’‘投诉次数’‘老客转介绍入口点击’。
第二步,构造价值函数V(S)。对任一特征子集S,计算落在该子集用户的平均NPS。为降低偏差,剔除客服补偿红包样本和刷分账号,并用分层抽样保证一二三线城市比例一致。
第三步,近似Shapley值。数据量7000万行,直接枚举2^8=256个子集在Spark上跑半小时完成;采用蒙特卡洛重复采样5000次,误差<0.3%
第四步,业务解读。结果给出‘1v1辅导次数’Shapley占比28%,‘退费率’占比21%,‘社群打卡’占比12%。这意味着如果能把1v1辅导满意度提升10%,整体NPS可涨2.3个百分点,对应次月续费GMV提升约1800万。
第五步,闭环落地。与教研、客服、社群团队开OKR复盘会,把Shapley值≥5%的环节写进Q3北极星指标,两周一次AB实验验证,最终Q3 NPS从43→51,超额完成目标。
整个过程符合国内数据合规要求,原始日志脱敏后落在私有集群,输出只给聚合指标,个人敏感信息不出库。”

拓展思考

  1. 动态Shapley:当用户旅程随版本迭代新增环节时,可用在线Shapley近似算法(如Federated Shapley)把新特征实时纳入归因,避免“历史模型失效”。
  2. 分层NPS:对高价值会员单独跑Shapley,往往发现“专属客服响应时长”占40%以上,可指导RFM模型中的S级用户差异化运营
  3. 负向Shapley:若某环节Shapley值为负,说明**“做了反而拉低NPS”**,需立刻下线或重构;国内常见陷阱是“过度营销push”,负向值高达-3%,用Shapley可量化说服业务少发模板消息
  4. 与因果推断结合:Shapley只说明“相关边际贡献”,下一步可用**双重机器学习(DML)**验证“1v1辅导”与NPS的因果性,把相关关系升级为因果链路,让老板更敢投预算。