想象你是重点中学的教研主任,辅导机构送来一大批学生数据,请你研究一个问题:怎样判断某个学生上了辅导班之后,成绩能提升多少?每个学生都有基础分、课外投入、年级等特征,上辅导班是“处理”,最终提分是“结果”,而你真正关心的,是提分效果如何随学生类型而变化。因果森林,就是一棵能自动把学生分成不同群体、并在每个群体里分别估计“辅导班平均提分效果”的决策树。可这里藏着一个陷阱:如果让老师用同一批学生的数据,既设计“怎么分组”,又核算“每组提分多少”,分组方案难免暗中迁就这份数据,最终报出的提分数字虚高——这就是过拟合偏差。Honest splitting 的解决办法朴素得惊人:把数据一分为二,一半交给“出题组”设计分组规则,另一半交给“评审组”独立核算每组的真实提分。出题与阅卷分开,成绩才可信。这篇教程就用“出题组与评审组”的比喻,拆解诚实分裂为什么能带来无偏的因果效应估计,以及它在工程落地中的取舍。
掌握 Honest splitting,你就抓住了因果森林与传统机器学习最根本的分水岭——它是面试、论文评审与因果效果评估中判断“模型是否严谨”的第一道关卡,也是因果机器学习从业者的必备功底。
可视化演示
展示诚实分裂的样本分割机制、与自适应分裂的偏倚对比,以及方差-偏差权衡曲线,揭示因果森林无偏CATE估计原理。
本节配有交互动效(进入视口后自动加载,约 3KB)。
诚实分裂样本分割 训练集50/50随机分为划分子集与估计子集,各司其职 split∩est=∅ 消除自适应分裂的选择性偏差
因果森林入门
培训部每天都会收到家长提问:“我家孩子基础一般、课外时间不多,上辅导班到底有没有用?”这个问题没法用一句“平均提分多少”回答——因为效果因人而异。有的学生上了课突飞猛进,有的却收效甚微。教研组真正想要的,是一张“学生特征 → 预期提分”的对照表,让每个学生都能对号入座。这就是因果森林要解决的问题:它不是回答“总体上有没有用”,而是回答“对某一类人,效果有多大”。
把“某一类人”用特征向量 $x$ 表示,比如基础分、每周练习时长、年级。因果森林定义的目标叫 CATE(条件平均处理效应),即“特征为 $x$ 的学生,上辅导班与不上的平均提分差”。为了估计这个差异,我们先把学生按特征递归地切成更小的群体,再在每个群体里对比处理组与对照组的平均结果。这种“切分-对比”的结构,正是决策树;而把许多棵随机化的树聚合起来取平均,就是因果森林。树的每一次分裂都在问:按这个特征切一刀,能不能让左右两边学生的提分效果差异更明显?
1. 潜在结果对照:$Y(1)$ 与 $Y(0)$ 分别代表同一学生在“上辅导班”和“不上”两种平行世界里的成绩,它们的差才是辅导班真正带来的变化。
2. 条件平均:$\mathbb{E}[\cdot \mid X = x]$ 表示只对“特征等于 $x$”的那一小群学生求平均,而不是全校平均。
3. 异质性表达:当 $x$ 变化时 $\tau(x)$ 也随之变化,这就是我们常说的“效果因人而异”。
理解了目标,接下来就要问:要得到可信的 $\tau(x)$,最大的拦路虎是什么?答案藏在“切分规则”与“效果核算”撞车的那一刻。
过拟合偏差根源
假设教研主任图省事,让一位老师拿 30 个已结课学生的数据,既负责设计“什么特征的学生分一组”,又负责计算每组的平均提分。这位老师一定会无意识地选出那种“恰好让这 30 人提分差距最大”的分组方案。可一旦换一批学生,这个方案很可能失效——因为方案本身就在迁就原数据,报出来的提分自然虚高。这就是过拟合:模型记住了数据里的偶然噪声,却误以为是真实规律。
传统决策树和随机森林在预测任务中也会过拟合,但因果场景下的过拟合更隐蔽。普通的预测过拟合,是“预测值”太贴近训练标签;而因果树用的是同一份数据去“选结构”再“算效应”,分裂规则会主动挑出那些“碰巧看起来效应很大”的叶子。用统计学的说法,这种由数据驱动的结构选择会给叶内效应估计注入选择偏差,使估计值系统地偏离真实效应,而且往乐观方向偏——这就是乐观偏差。
1. 叶内均值差:$\bar{Y}_{L,1}$ 是叶子 $L$ 中上过辅导班的学生的平均提分,$\bar{Y}_{L,0}$ 是没上过的平均提分,两者相减得到该叶的处理效应估计。
2. 数据决定结构:$\hat{L}(\mathcal{D})$ 表示叶子划分是由同一份数据优化出来的,划分规则和效应计算用的是同一批人。
3. 选择性偏差:正因为划分规则特意挑出了“效应大”的区域,$\hat{\tau}(L)$ 的期望不再等于真实效应,而是偏高。
要打破“出题人自己给自己打分”的死循环,最简单的办法是换一拨人来阅卷——这正是 Honest splitting 的出发点。
诚实分裂设计
出题与阅卷分离,听起来像考试制度的基本常识,但在机器学习里,直到 Honest splitting 提出之前,“同一份数据既当出题人又当阅卷人”竟然是被默认接受的。诚实分裂的做法很简单:把学生数据随机分成两个互不相交的子集。第一个子集叫划分子集(splitting subsample),只负责设计分组方案——决定“按什么特征、在什么阈值处切分学生”;第二个子集叫估计子集(estimation subsample),被密封保存,等整棵树的形状完全确定后,才拿出来核算每个叶子里的平均提分。
为什么要“密封保存”?回顾偏差的来源可知:只要分组方案与效应核算共享任何一条学生记录,方案就有机会“认识”答卷人。诚实分裂用一道物理隔离切断了这层关系:划分规则只能看到划分子集,因此它无从针对估计子集里的学生作弊。当树长好后,估计子集里的学生在每个叶子中形成一个干净的小型对照实验,我们只需在叶内做一次普通的“处理组均值减对照组均值”,就能得到该叶子的 CATE 估计。
1. 不相交拆分:$\sqcup$ 表示两个子集把全部数据完整划分,同一条样本要么进入出题组,要么进入评审组,绝不重复。
2. 独立性保证:$\mathcal{D}_s \perp \mathcal{D}_e$ 意味着随机拆分后,两个子集在统计意义上是相互独立的,出题组无法推断评审组的学生分布。
有了这道隔离,下一节要回答的问题是:为什么隔离之后,叶效应估计就能做到无偏?
无偏性保障
把数据拆开之后,“无偏”是怎么发生的?关键在于条件独立。当整棵树的形状已经完全由划分子集确定,我们再来看估计子集:在给定树结构的条件下,估计子集里每个叶子的样本,其处理分配和结果分布都与“树是怎么长出来的”无关。于是,叶子内部的均值差就退化为一个普通的随机对照实验分析——而随机对照实验的均值差,期望恰好等于真实处理效应。
从数学上看,这就是把“选择偏差”从期望运算里赶了出去。此前的不诚实估计中,$\hat{\tau}(L)$ 的期望里混入了“分裂规则偏向大效应叶子”的成分;而诚实分裂条件下,我们首先固定住结构 $L$,再对估计子集求期望,结构选择带来的偏差没有机会进入这个期望。因果树因此获得了一个可贵的性质:即使树的分裂规则本身不是完美无缺的,叶子的效应估计仍然是条件无偏的——评审组不认识出题人,所以不会替出题人的偏好背书。
1. 条件于出题组:$\mid \mathcal{D}_s$ 表示“树结构已由出题组数据决定”。此时结构不再是随机变量,选择过程已经结束。
2. 叶内对照:估计子集在叶子内做处理组与对照组的均值比较,等价于一台“微型随机实验”,其期望等于真实效应。
3. 期望相等:取期望后,结构选择带来的乐观偏差无处藏身,等式右边恰好是真实的 $\tau(x)$。
单棵树的估计无偏了,但无偏不等于稳定。要让估计在样本量增大时可靠地逼近真相,还需要“渐近一致性”这把保险锁。
渐近一致性
无偏性像一个公平的裁判:它保证“平均来看不偏不倚”,但单次评估仍可能上下波动。评审组的学生越多,提分核算的平均值就越稳定,越接近真实水平——这正是大数定律在生活中反复上演的剧本。Honest splitting 为因果森林带来的第二个礼物,就是在一定的正则条件下,CATE 估计会随着样本量增大而概率收敛到真实效应,这就是渐近一致性。
有了一致性还不够,做决策的人还想要“这个估计到底有多准”。因果森林的估计量进一步满足渐近正态性:当样本量很大时,估计值围绕真实值呈钟形分布,方差以 $1/n$ 的速率收缩。依托这个性质,我们可以为每个叶子(每个学生群体)的 CATE 构造置信区间,比如“基础分中等、每周练习 5 小时的学生,提分 8 到 12 分,置信度 95%”。置信区间让决策者不再面对一个冷冰冰的点估计,而是清楚地看到不确定性有多大。
1. 误差放大镜:$\sqrt{n}(\hat{\tau}(x) - \tau(x))$ 把估计误差放大 $\sqrt{n}$ 倍,便于观察误差的极限分布。
2. 分布收敛:$\xrightarrow{d}$ 表示分布收敛,即大样本下误差的分布越来越接近右边那个钟形曲线。
3. 方差含义:$V(x)$ 是渐近方差,它决定了置信区间的宽窄;方差越小,区间越窄,决策越有底气。
理论性质再漂亮,落地时也要直面现实:有限的样本、两组数据的比例、重复实验的预算——这些工程取舍,决定了一场“诚实考试”能不能真正办起来。
工程实践要点
组织一场诚实考试,教研主任立刻会面临两个现实问题:样本本来就少,还要劈一半给评审组,够用吗?两组按什么比例分?直觉告诉我们,划分子集太少,分组方案粗糙、找不准切分位置;估计子集太少,叶子里的样本量不足,提分核算方差暴涨。常用的经验法则是五五开,把一半数据用于建树、一半用于效应估计,在“结构质量”和“估计精度”之间取平衡。
如果整体样本量非常紧张,还可以采用“重复诚实分裂”:多次随机划分数据,每次训练一棵诚实的因果树,最后把一批树的结果平均。这就是因果森林的完整形态——每棵树各自出题、各自评审,森林再把大家的意见汇总。平均化能显著摊薄单次随机划分带来的方差,同时保留诚实分裂的无偏性。值得注意的是,诚实分裂对样本量的需求比普通随机森林更大,因为它本质上只用了一半数据估计效应,相当于为“可信度”支付了样本成本。
1. 叶内噪声:$\sigma^2(x)$ 是叶内结果的固有波动,例如同类型学生的提分个体差异,它决定方差的下限。
2. 有效样本量:$n \cdot p_e = n_e$ 是估计子集的实际样本量,它出现在分母上,样本越多方差越小。
3. 方差反比:整体来看,方差与估计样本量成反比,这就是“评审组人越少,分数越不稳”的数学本质。
聊完了工程细节,一个更基本的问题浮现出来:这套“出题-阅卷分离”的思路,与传统机器学习里的训练/验证划分到底有什么本质区别?
传统ML对比
传统机器学习回答的是“会涨多少分”,因果机器学习回答的是“辅导班带来的涨分是多少”。前者只需要相关模式:基础分高的学生通常会考高分,哪怕他们根本没上辅导班;后者必须剥离出“反事实”——同一个学生,上了与没上之间的差异。这个目标差异,导致两者在数据使用哲学上分道扬镳。传统机器学习用验证集是为了调超参数、防预测过拟合,本质仍是“同一批规律”的反复打磨;诚实分裂则是为了切断“结构学习”与“效应估计”之间的数据依赖,它服务的不是预测精度,而是因果推断的可信度。
随机森林与因果森林在代码结构上长得几乎一样:都是多棵树、子采样、特征随机化。但分裂目标完全不同——随机森林最小化预测均方误差,因果森林最大化处理效应的异质性;更重要的是,因果森林在结构上强制内置了诚实分裂,而传统随机森林没有也不需要有这个机制。用均方误差的视角看,诚实分裂让估计子集的数据只用于“评估”而不参与“建模”,偏差大幅下降,方差小幅上升,净效果是 MSE 明显改善。
1. 偏差项:$\mathrm{Bias}^2$ 是估计量系统性偏离真相的部分,诚实分裂主要消除它——出题人与阅卷人分开,偏见无处生根。
2. 方差项:$\mathrm{Variance}$ 是估计量在不同样本下的抖动幅度,诚实分裂因样本切分略有增大。
3. 误差平衡:二者的和才是真正的风险,诚实分裂用可接受的小方差换掉了危险的偏差,总误差更小。
明白了与传统 ML 的差异,最后把目光投向真实业务:一套基于诚实分裂的因果森林系统,是怎样从训练走向部署的?
部署与展望
教研机构最终决定把“诚实测评”做成标准流程:数据进来,策略出去。第一步是训练:收集历史学生的特征、是否上辅导班、提分结果,按五五开拆分,训练一批诚实的因果树。第二步是评估:在新的候选学生上预测每个分群的 CATE,并输出置信区间,供业务方判断哪些群体值得投放。第三步是决策:把“提分显著为正且区间不跨零”的群体列为重点推荐对象,把“效果不显著”的群体标记为谨慎观察。这套流程的可贵之处在于,每一步的结论都带着可信度标签,而不是一个经不起复盘的虚高数字。
当然,诚实分裂不是万能药。在观测数据中,学生是否上辅导班往往受家庭经济状况等未观测因素影响,这类混淆变量会让 CATE 估计即使经过诚实分裂也仍然有偏;此时需要引入倾向得分加权等工具做额外校正。此外,诚实分裂对数据量要求较高,冷启动阶段样本不足时,可以先用规则加小模型做过渡方案,积累数据后再切换到因果森林。工程中的常见做法,是把诚实分裂与“自助聚合 + 子采样”结合成完整的诚实因果森林,并定期用新样本重训,让模型随业务一起进化。
成熟的教育测评体系是一步步迭代出来的,而诚实分裂就是这套体系的地基。它用“出题与阅卷分离”这一朴素思想,让因果森林在数据驱动的时代,依然守住了统计推断最基本的尊严。
AI 应用场景
外卖平台的个性化优惠券派发
阶段:策略决策与效果评估
解决的问题:传统运营按全量平均 ROI 决定是否发券,忽视了不同用户对满减券的敏感度差异;若用同一批数据同时做分群和效果评估,还会把“碰巧在发券期下单多”的用户误判为高价值用户,导致预算浪费。
具体案例:某外卖平台使用诚实因果森林,将历史用户随机划分为划分子集与估计子集。划分子集用来学习“客单价、下单时段、品类偏好”等特征如何影响券的增量 GMV;估计子集独立核算每个分群的 CATE 与置信区间。结果显示,对客单价 30 元以下、高频夜宵用户发小额券增量最大,而对高端商务用户发券反而侵蚀利润。平台据此调整预算分配,整体 ROI 提升 18%。
精准医疗中的药物响应预测
阶段:模型开发与临床试验验证
解决的问题:肿瘤治疗中,全体患者的平均疗效往往掩盖了个体差异;传统的亚组分析用同一批数据探索分组又验证效果,很容易得到无法复现的“假阳性亚组”,误导临床决策。
具体案例:某研究团队收集 2000 名肺癌患者的基因表达特征与靶向药应答数据,用诚实因果森林估计不同特征组合下的药物响应 CATE。估计子集给出的每个亚组响应差异及其置信区间,被用于设计后续前瞻性验证试验,最终筛选出“特定基因突变 + 低免疫评分”的高响应人群,将试验样本量需求降低了 40%。
AB实验后的异质性效应分析
阶段:实验后分析与策略放大
解决的问题:AB 实验通常只报告平均效应,但产品团队真正想知道“哪个用户群受益最大”。若事后直接按实验数据做决策树探索,分组规则与效应估计共用同一批样本,会高估高潜人群的效果。
具体案例:某 SaaS 公司在灰度上线新版协作功能后,采用诚实因果森林分析客户规模、行业、活跃度对留存提升的异质性效应。划分子集找出“50-200 人规模、教育行业、周活跃 3 次以上”的高响应分群,估计子集给出留存提升 4.2% 且 95% 置信区间为 [3.1%, 5.3%] 的结论。团队据此把功能优先推向该人群,再做全量发布。
Python 演示
import numpy as npfrom numpy.random import default_rng def make_data(n=1200, seed=7): rng = default_rng(seed) X = rng.uniform(-1, 1, (n, 2)) e = rng.uniform(0.3, 0.7, n) T = (rng.uniform(size=n) < e).astype(int) tau = 0.6 + 0.8 * (X[:, 0] > 0) y0 = X[:, 1] + rng.normal(0, 0.5, n) y = y0 + T * tau return X, T, y, tau class HonestCausalTree: def __init__(self, alpha=0.5, max_depth=4, min_leaf=50): self.alpha = alpha self.max_depth = max_depth self.min_leaf = min_leaf self.tree = None def _var(self, Y, T): if T.sum() < 2 or (1 - T).sum() < 2: return 0.0 return (Y[T == 1].mean() - Y[T == 0].mean()) ** 2 def _split(self, X, Y, T, idx): best = None for j in range(X.shape[1]): vals = np.unique(X[idx, j]) for thr in (vals[:-1] + vals[1:]) / 2: m = X[idx, j] < thr if m.sum() < self.min_leaf or (~m).sum() < self.min_leaf: continue gain = self._var(Y[idx], T[idx]) - ( self._var(Y[idx[m]], T[idx[m]]) + self._var(Y[idx[~m]], T[idx[~m]])) if gain > 0 and (best is None or gain > best[0]): best = (gain, j, thr) return best def _build(self, X, T, Y, idx_s, idx_e, depth): node = {} best = None if depth < self.max_depth: best = self._split(X, Y, T, idx_s) if best is None: node['leaf'] = True node['tau'] = (Y[idx_e][T[idx_e] == 1].mean() - Y[idx_e][T[idx_e] == 0].mean()) return node _, j, thr = best node['j'], node['thr'] = j, thr node['leaf'] = False m_s = X[idx_s, j] < thr m_e = X[idx_e, j] < thr node['left'] = self._build(X, T, Y, idx_s[m_s], idx_e[m_e], depth + 1) node['right'] = self._build(X, T, Y, idx_s[~m_s], idx_e[~m_e], depth + 1) return node def fit(self, X, T, Y, honest=True): n = len(Y) perm = default_rng(0).permutation(n) n_s = int(n * self.alpha) self.idx_s = perm[:n_s] self.idx_e = perm[n_s:] est_idx = self.idx_e if honest else self.idx_s self.tree = self._build(X, T, Y, self.idx_s, est_idx, 0) def predict(self, X): out = np.zeros(len(X)) for i in range(len(X)): node = self.tree while not node['leaf']: node = node['left'] if X[i, node['j']] < node['thr'] else node['right'] out[i] = node['tau'] return out if __name__ == '__main__': X, T, Y, tau = make_data() for label, honest in [('honest ', True), ('naive ', False)]: tree = HonestCausalTree() tree.fit(X, T, Y, honest=honest) mae = np.abs(tree.predict(X) - tau).mean() print(label + 'MAE = %.3f' % mae)
tau = 0.6 + 0.8 * (X[:, 0] > 0)构造真实的异质性处理效应:只有特征 0 大于 0 的学生,提分效果才更高,这是评测估计正确性的“标准答案”。self.idx_s = perm[:n_s]; self.idx_e = perm[n_s:]把样本随机拆成互不相交的划分子集与估计子集,这是 Honest splitting 的核心动作。best = self._split(X, Y, T, idx_s)分裂规则只在划分子集上寻找最佳切分,评审组的数据绝不参与出题。est_idx = self.idx_e if honest else self.idx_shonest 模式下叶子只用估计子集;naive 模式故意让叶子用划分子集,用于演示过拟合偏差。node['tau'] = (Y[idx_e][T[idx_e] == 1].mean() - Y[idx_e][T[idx_e] == 0].mean())叶子内用评审组做“处理组均值 - 对照组均值”,得到无偏的叶效应。while not node['leaf']:预测时沿树结构逐层下探,直到抵达叶子,把叶子的 tau 作为该样本的 CATE 估计。
常见误区
误区我以前做机器学习时也经常把数据分成训练集和验证集,Honest splitting 听上去就是换了个名字的同一件事,本质都是“一部分数据建模,一部分数据评估”。
正解两者目的有本质区别。训练/验证划分是为了调超参数、防止预测模型过拟合,验证集多次参与模型选择,最终模型仍可能对验证集“记住”;诚实分裂则是为了切断“树结构学习”与“处理效应估计”之间的数据依赖,它是一次性的物理隔离,不允许估计子集以任何形式影响树结构。用考试比喻说,传统验证集像“模拟考后老师根据成绩微调教学方案”,判卷人还是老师本人;诚实分裂则是“高考出题组和阅卷组彻底分属两套班子”。
为何常见:因为两者都表现为“把数据切成两份”,初学者看到表象上的相似,容易忽略它们在因果推断与预测建模中的根本目的差异。
误区本来样本就不够用,还要拿出一半数据只做估计、不参与建树,树的质量肯定下降,CATE 估计也不会好到哪里去,所以诚实分裂没什么实际价值。
正解诚实分裂确实增加了方差,但它换来的是无偏性和可信的置信区间。在因果推断中,有偏估计比方差更危险:一个有偏的提分报告会把营销预算投向错误的人群,而方差大至少还能通过置信区间暴露不确定性。从 MSE = 偏差² + 方差 来看,诚实分裂通常让总误差下降而非上升。此外,因果森林通过多棵树集成、重复随机划分来摊薄方差,实际效果非常稳健。
为何常见:人们习惯用“数据利用率越高越好”的直觉评价方法,没有意识到因果任务中“诚实性”本身就是一种必须用样本去购买的核心资产。
误区随机森林每棵树都从原始数据中有放回地抽样,样本已经“随机”了,分裂规则和叶值之间应该没有系统性依赖,不需要再搞 Honest splitting。
正解自助采样虽然带来随机性,但同一个样本完全可以同时出现在分裂规则的选择和叶值的计算中。树的分裂仍然是在挑选“效应最大的区域”,叶值估计仍然共享了被挑选的数据,乐观偏差一丁点都不会减少。诚实分裂要求的是结构学习与效应估计使用互斥的数据,这是“采样方式”无法替代的制度性隔离——就像抽签决定出题人后,出题人仍然不能同时是考生。
为何常见:把“随机性”误认为“独立性”是很自然的直觉,但随机采样只保证了样本代表性,并没有切断同一批样本在建模流程中被重复使用的依赖关系。
误区只要代码里写了 honest=True,叶子算出来的 CATE 就是绝对真相,任何偏差都不存在了。
正解诚实分裂消除的是“分裂规则与叶效应估计共享数据”带来的选择性偏差,但其他偏差来源依然存在:未观测的混淆变量会造成混淆偏差,树的深度有限带来模型设定偏差,小样本下估计仍有随机波动。诚实分裂保证的是“在给定树结构下,叶估计条件无偏”,而不是“在所有现实问题中绝对无偏”。它更像是保证了裁判公正,但若比赛本身有偏(数据有混淆),结果仍然可能有偏。
为何常见:大脑喜欢把“无偏”理解成“绝对正确”,而统计意义上的无偏通常是有条件的;加上框架名称听起来很绝对,容易产生这种过度简化。
面试题
Q1. Honest splitting 将训练样本划分为哪两个子集?
- A.训练集与测试集
- B.分裂集与估计集← 正确答案
- C.处理组与对照组
- D.打分集与验证集
答案:B。Honest splitting 的核心是把数据分为“分裂集(划分子集)”与“估计集(估计子集)”。训练集与测试集是传统预测模型的划分方式;处理组与对照组是实验设计中的分组;打分集与验证集并非标准术语。用比喻说,出题组用的卷子与评审组用的答卷必须来自两拨人。
Q2. 在 Honest splitting 机制下,叶节点中 CATE 的估计应使用哪个子集的数据?
- A.划分子集
- B.估计子集← 正确答案
- C.全部样本
- D.验证子集
答案:B。叶子形状由划分子集决定,叶内 CATE 必须由估计子集独立核算,才能切断结构选择对效应估计的污染。如果退回划分子集或全部数据,等于让出题人给自己打分,偏差会卷土重来。
Q3. 以下哪项是 Honest splitting 要解决的核心问题?
- A.特征值缺失
- B.过拟合偏差← 正确答案
- C.计算效率太低
- D.标签噪声太大
答案:B。Honest splitting 专门解决“同一数据既决定分裂规则又计算叶效应”导致的乐观偏差。特征缺失、计算效率、标签噪声是工程层面的常规问题,不是诚实分裂的设计目标。
Q4. Honest splitting 与训练/验证划分最本质的区别是什么?
- A.目的在切断数据复用偏差← 正确答案
- B.只是划分比例有所不同
- C.目的在防止特征维度过高
- D.目的在提升预测的准确率
答案:A。诚实分裂是为了切断结构选择与效应估计之间的数据依赖,服务于因果推断的无偏性;训练/验证划分则是为了调参和防预测过拟合。比例、维度、预测准确率都不是问题的核心。
Q5. 关于渐近一致性,诚实因果森林的估计量满足什么性质?
- A.大样本下估计偏差趋于零← 正确答案
- B.大样本下估计方差不衰减
- C.小样本下估计高度无偏
- D.任意随机森林都能自动一致
答案:A。渐近一致性指样本量趋于无穷时估计收敛到真实 CATE,偏差趋于零。一般随机森林并不自动具有因果一致性;小样本无偏是有限样本性质而非渐近性质;方差在大样本下以 1/n 速率衰减。
Q6. 若总体样本量固定,估计子集占比越小,CATE 估计的方差会怎样?
- A.估计方差越小
- B.估计方差越大← 正确答案
- C.方差保持不变
- D.方差先降后升
答案:B。方差与估计子集样本量成反比,占比越小,用来核算效应的样本越少,方差越大。这与评审组人数越少、分数越不稳定的直觉完全一致。
Q7. 关于 Honest splitting 与过拟合偏差,正确的说法是?
- A.会引入新的偏置
- B.消除数据复用致偏差← 正确答案
- C.只影响估计方差
- D.显著提升计算成本
答案:B。Honest splitting 通过把结构学习与效应估计的数据分开,消除由数据复用带来的选择性(乐观)偏差。它不会引入新偏置,也不只是影响方差;计算成本变化可忽略。
Q8. 哪些是工业界使用诚实因果森林评估个性化策略的理由?
- A.能对CATE构造置信区间← 正确答案
- B.自动消除所有混淆变量
- C.有限样本中效应估计更诚实← 正确答案
- D.完全不需要领域知识清洗
答案:AC。诚实分裂的无偏性让 CATE 可配合理的置信区间,使策略判断更可信;它在有限样本下消除了乐观偏差,因此“更诚实”。但它不能自动消除未观测混淆变量,也无法替代领域知识与数据清洗。
Q9. 关于 Honest splitting 设计要点,正确的有?
- A.划分子集与估计子集必须不相交← 正确答案
- B.分裂规则仅由划分子集决定← 正确答案
- C.处理组对照组必须不重叠
- D.估计子集可参与分裂过程
答案:AB。两个子集互不相交,且树的分裂规则只能使用划分子集。处理组与对照组的划分是实验设计层面的问题,与诚实分裂的数据拆分不同;估计子集若参与分裂,隔离就失效了。
Q10. 关于诚实因果森林估计量的性质,下列正确的是?
- A.分裂有偏时叶估计仍无偏← 正确答案
- B.仅需估计与分裂独立← 正确答案
- C.渐近正态需叶内样本无穷← 正确答案
- D.需要叶内处理完全随机化
答案:ABC。给定树结构后,叶估计的无偏性只依赖于估计子集与分裂子集的独立性,与分裂准则是否有偏无关,因此 A、B 正确。渐近正态推导要求叶内样本量趋于无穷,C 正确。D 说得过强:因果森林在观测数据中通过倾向得分等工具调整,并不要求每个叶子内处理完全随机化。