paper2skills Playbook

Guardrailed CATE-NBA

Skill-Guardrailed-CATE-NBA · 06-增长模型

causalexperimentforecastingoptimizationpricing广告与投放供应链与补货客服与VOCMAS与智能体工程定价与利润WF-A 智能补货WF-B 广告优化WF-C 客服分诊WF-D 选品扫描WF-F 动态定价WF-G Listing内容优化WF-H 复购增长
年化 ROI10 万元
实现难度⭐⭐⭐☆☆
业务视角
适用角色CEO / 增长负责人 · CMO · 财务负责人
适用平台Amazon · TikTok Shop · DTC 独立站 · 多市场
什么情况下用公司增长放缓,不知道是市场饱和还是产品问题还是获客太贵;老板要 12 个月 GMV 预测,只能靠感觉
成功是什么样的建立增长拆解模型找到瓶颈,预测未来 6-12 个月营收区间,支撑融资/战略会议
业务痛点
增长放缓不知道问题在哪CAC 越来越高已经高于 LTV新市场要不要进没有数据支撑

1. 解决的问题

光算出每个用户的增量效应(CATE)还不够——真实业务有预算上限、有高净值用户保护、有每天不能无限制打扰用户的体验红线。Guardrailed CATE-NBA 打通了"预测→决策"的最后一公里:三层漏斗把因果估算的结果直接转化为带约束的最优行动名单。

2. 核心算法逻辑

光算出每个用户的增量效应(CATE)还不够——真实业务有预算上限、有高净值用户保护、有每天不能无限制打扰用户的体验红线。Guardrailed CATENBA 打通了"预测→决策"的最后一公里:三层漏斗把因果估算的结果直接转化为带约束的最优行动名单。

3. 业务应用场景

业务问题 数据库里 80 万 90 天未下单的沉默用户,运营想全量发 50 元满减券激活,但财务要求总促销预算不超过 1 万美元,且担心本来明天就要下单的老客"白吃"优惠。

| 字段 | 说明 | 格式 | |------|------|------| | `user_id` | 用户唯一标识 | string | | `recency_score` | 近期活跃得分(最近购买时间倒序归一化)| [0,1] float | | `rfm_score` | RFM 综合得分(Recency + Frequency + Monetary)| [0,1] float | | `days_since_last_order` | 距上次下单天数 | int | | `historical_orders` | 历史订单数 | int | | 历史实验数据 | 含处理/对照标签

预期产出 - 每个用户对每种行动的增量得分(CATE 矩阵) - 经护栏过滤后的行动分配名单:A群/满减券、B群/免费小样、C群(铁粉或死粉)/不触达 - 总成本不超过预算的最优触达方案

4. 输入数据要求

请查看原始代码模板获取输入规格。

5. 输出结果

请查看原始代码模板获取输出规格。

6. 业务价值 / ROI

  • 难度 3/5:三层架构中,CATE 估算(Layer 1)可先用 Mock 或简单 T-Learner 快速验证,护栏规则(Layer 2)直接对应业务规则文档,贪心背包(Layer 3)无需引入额外依赖(纯 pandas + numpy 实现),整体上线路径清晰。唯一门槛是需要高质量的历史 A/B 实验数据作为 CATE 训练集。
  • 优先级 4/5:论文已通过线上 A/B 测试验证营收显著正增长;母婴出海高获客成本场景下,精准促活对 LTV/CAC 比值的改善尤为关键;且护栏机制天然满足财务合规要求,落地阻力小。
  • 量化依据:文献报告在对照组(随机发券)基础上,处理组新增 GMV 显著(p < 0.05),资源消耗降低约 40%。

7. 代码模板

代码块数量:2 · 路径:未检测到

from model import (
    Action, GuardrailConfig, GuardrailedCATENBA, generate_mock_users
)

# 定义营销行动选项
actions = [
    Action("coupon_20",   "满减券20元",  unit_cost=20.0),
    Action("coupon_50",   "满减券50元",  unit_cost=50.0),
    Action("free_sample", "免费小样",    unit_cost=8.0),
]

# 配置护栏参数
cfg = GuardrailConfig(
    cannibalization_base_prob_threshold=0.70,  # 高净值用户门槛
    cannibalization_cate_discount=0.50,         # 食人化打折系数
    total_budget=10_000.0,                      # 总预算(元)
    max_actions_per_user=1,                     # 每人最多触达1次
    min_cate=0.02,                              # 最低增量门槛
)

# 加载用户特征(实际替换为业务数据)
X = generate_mock_users(n=50_000)

# 运行完整流水线
model = GuardrailedCATENBA(actions=actions, config=cfg)
result = model.run(X)

# 查看分配结果
print(f"触达用户: {len(result.assignments):,}")
print(f"总成本: {result.total_cost:,.0f} 元")
print(f"预期增量: {result.total_expected_uplift:.3f}")
print("分配明细:", result.summary)

# 导出行动名单
result.assignments.to_csv("action_list.csv", index=False)

8. 论文来源

  • 2512.19805