这个工具提供了哪些能力
点开任一能力,看清怎么用
每个能力展开后是三件事:它会给你什么、你需要准备什么、哪些必须由你把关。
常见场景:需要估计哪些个体对干预的反应更大(CATE/Uplift)时;需要为营销、定价或个性化推荐选择最优处理策略时;需要评估和比较多个CATE模型的排序质量(AUUC/Qini)时;需要用工具变量方法处理内生性问题时
在结果只有“发生、不发生”两种情况的问题里,它用专门针对增量效果设计的决策树和随机森林,直接从你的数据里学出每个人的增量效果分数,还能画出树的结构图。
它会给你什么
- 每个人的增量效果分数表,以及系统推荐给每个人的处理组。
- 选择完整输出时,还能看到随机森林里每棵树各自的预测。
- 训练好的树结构,可以画成可视化图形查看。
你需要准备
- 特征矩阵,需要转成 numpy 数组格式,不能用 pandas 表格直接传入。
- 处理分组向量,标明每个人属于对照组还是哪个处理组。
- 结果变量,只有两种取值(发生记 1,不发生记 0)。
由你把关
- 树分裂时选用的准则是否符合你的研究目标,由你决定。
- 树的深度和每个叶子节点最少保留多少样本是否合理,增量树容易过拟合,由你核对。
- 有多个处理组时,不同准则的结果是否稳定,由你核对。
当每个人的真实因果效果没法直接知道时,它用几条专用曲线和综合分数,把你训练的多个模型放在一起排名比较;还配了一组压力测试方法,检验结论在可能漏掉干扰因素时稳不稳。
它会给你什么
- 每个模型一个综合得分,可以直接比较高低。
- 一张对比曲线图,直观看出各模型的排名表现。
- 各模型逐段累积的统计明细表。
你需要准备
- 一张用于评估的数据表,包括每个人的实际结果、处理分组、真实效应(只有实验数据才有,可选),以及各个模型的预测值列。
- 结果列、处理分组列、真实效应列在表里的列名,不指定时按默认名称识别。
- 两个可选设置:曲线要不要做归一化(默认要),要不要用更稳健的算法来画曲线(默认不要)。
由你把关
- 模型排名是否符合你的研究目标,两种打分方式各有侧重,由你核对。
- 手头有没有实验数据提供的真实效应值,决定了能不能评估绝对偏差,由你确认。
- 压力测试选得够不够全,有没有覆盖主要威胁,比如假信号、样本依赖和没观测到的干扰因素,由你核对。
根据每个人的特征,估计出他被分进处理组的概率;再按这个概率给两组人配上相似的对手,让处理组和对照组变得可比,并给出一张表,告诉你匹配之后两组的特征还差多少。
它会给你什么
- 每个人的倾向性得分,已裁剪到你设定的上下限范围内。
- 得分数组,以及拟合出来的倾向性模型本身。
- 一张分组描述表,列出各组各特征的平均值、波动幅度和组间差异指标。
你需要准备
- 估计倾向性得分时,需要提供特征数据、处理分组和模型设置。
- 做最近邻匹配时,需要提供倾向性得分和处理分组信息。
由你把关
- 倾向性模型选线性还是非线性,是否符合你的数据里处理实际是怎么分配的,由你决定。
- 得分裁剪的范围是否合适,裁得太窄会放大权重、影响结果,由你核对。
- 匹配之后两组的特征差异是否都降到了常规可接受的标准以内,由你核对。
不管数据来自实验还是观察,它都能把普通的机器学习模型组装起来,估计出“处理对每个人分别有多大效果”,并给出总体的平均效果、误差范围和各特征影响大小的解释。
它会给你什么
- 每个人的处理效果估计值。
- 需要时还能拿到“如果换一种处理会怎样”的反事实预测值。
- 总体的平均效果、置信区间和特征重要性等解释信息。
你需要准备
- 特征矩阵,常见的几种数据表格式都支持。
- 处理分组向量,标明每个人属于对照组还是哪个处理组,支持多个处理组。
- 结果变量,可以是连续数值,也可以是两种分类。
由你把关
- 选哪种学习器是否符合你的数据情况,比如结果是连续还是分类、处理组有几个、数据来自实验还是观察,由你决定。
- 底层用的模型是否匹配效果差异的复杂程度,由你决定。
- 观察数据下倾向性得分估得准不准,估偏了会带坏整个结果,由你核对。
用专门针对“处理效果”设计的决策树和随机森林,从数据里学出不同人群分别有多大效果,效果按人群分组给出,还能画树形图,随机森林的结果附带误差范围。
它会给你什么
- 每个人所在分组的处理效果估计值。
- 训练好的树结构,以及每个特征的重要程度。
- 随机森林里全部的单棵树、每棵树用了哪些样本,还可以附带误差范围。
你需要准备
- 特征矩阵,numpy 数组或 pandas 数据表。
- 处理分组向量,只有两种取值(0 或 1)。
- 结果变量,需要是连续数值。
由你把关
- 分裂准则选“看处理效果”还是“看普通误差”,是否符合你的分析目标,由你决定。
- 分组惩罚这个参数调得是否合适,调太高会看不出人群差异,调太低会让某些组的结果失真,由你核对。
- 每个叶子节点里保留的样本是否够多、效果估计是否稳定,由你核对。
在已经估出每个人的效果之后,它进一步帮你决定“具体该给谁什么处理”:自动学出一套分配方案,挑出最值得干预的对象,并在多种处理和成本限制下算出哪种安排最划算。
它会给你什么
- 每个人的处理分配方案,以及这套方案的整体价值估计。
- 最值得干预的对象名单。
- 每个人最划算的处理选项,以及每种处理分别值多少。
你需要准备
- 预测结果的底层模型,不指定时用默认的梯度提升回归模型。
- 预测处理分组的底层模型,不指定时用默认的分类模型。
- 学习分配策略的模型,不指定时用默认的决策树,需要支持样本权重。
由你把关
- 策略学习依赖的结果模型和倾向模型是否靠谱,由你核对。
- 不同依从类型人群各自的收益是否符合你的研究目标,由你核对。
- 成本和价值的估计是否准确,这会直接影响分配结果,由你核对。
第一次这样开始
把仓库地址直接交给 AI
先让 AI 说明环境和风险,再完成最小安装验证。开始前想清楚要用哪个能力、把对应材料备在手边——每张能力卡展开后有具体清单。
第一次直接复制
帮我安装这个库:https://github.com/uber/causalml 安装前先告诉我需要什么环境,安装后帮我跑通一个最小示例。
别这样用
这些判断,仍然由你负责
- 对观察数据使用元学习器时不检查无混杂假设是否成立
- 混淆AUUC排序(相对评估)和绝对因果效应(需要识别假设)
- R-learner/DR-learner依赖的倾向性得分估计不准导致CATE偏差
- 用Granger因果替代结构性因果解释
技术依据
查看能力拆解、验证范围与来源
技术依据
查看能力拆解、验证范围与来源
处理机制
- 01
核心处理链
用机器学习估计个体处理效应并做uplift建模与策略优化
已核对范围
- 静态读取 inference/tree/uplift.pyx 中 UpliftTreeClassifier、UpliftRandomForestClassifier、DecisionTree 的类与方法签名
- 静态读取 inference/tree/init.py 的 uplift 导出与序列化补丁
- 静态读取 inference/tree/plot.py 与 utils.py 的导出
- 静态读取 metrics/init.py 全部导出
- 静态读取 metrics/visualize.py 的 plot/getcumlift/getcumgain/getqini/auucscore/qiniscore 签名与机制
- 静态读取 metrics/rate.py 的 gettoc/ratescore/plottoc
- 静态读取 metrics/catescoring.py 的 computedrpseudooutcomes/drscore/plugintscore
- 静态读取 metrics/sensitivity.py 的 Sensitivity 类与 SensitivitySelectionBias 等
仍待核对
- 未运行 UpliftTreeClassifier/UpliftRandomForestClassifier,未验证 uplift 分数与分裂实际行为
- 未读取 Cython uplift.pyx 内部分裂准则(如 KL/ED/Chi/CTS)的完整实现,仅静态确认类签名
- 未运行任何评估函数,未验证 AUUC/Qini/TOC 数值与曲线绘制
- 未运行敏感性分析,未验证 Selection Bias / Random Cause 等方法的实际输出
- 未运行任何倾向性模型,未验证校准后的倾向性得分数值
- 未运行 PSM 匹配,未验证匹配后平衡表(table one)实际效果
- 未运行任何 learner.fit/estimateate,未验证任一 learner 实际 CATE/ATE 数值输出
- 未验证 bootstrap CI、多处理组、effectmodifiers 分层估计的实际行为
读取版本
78176f86a594369dcc953fce8a3b6f3dbefa7040许可
Apache-2.0
最近核对
内容 2026-07-10
Stars 2026-07-11
相关文章
科研之我见
AI 科研全流程怎么搭,我梳理出三个核心入口
每天开工先固定阶段入口、材料入口和验证入口,把庞大的科研全流程收缩成一段可执行、可检查的任务。
查看内容