Causal-Sklearn - 基于CausalEngine™核心的因果回归和分类


Causal-Sklearn:当机器开始理解”这是谁”

基于CausalEngine™算法的scikit-learn兼容包——将因果推理能力带入传统机器学习生态系统。当AI学会问”这是谁”而不只是”输出是什么”时,我们正在探索因果智能的新可能。

核心理念:从群体统计到个体故事

想象你面前有两个学生,他们有着完全相同的背景资料——同样的年龄、同样的测试分数、同样的学习时间、同样的家庭环境。但当考试结果出来时,一个得了95分,另一个只有65分。

传统机器学习将其归为统计噪声,它学习的是群体层面的条件期望 $E[Y \vert X]$,其范式是从可观测特征到结果的映射:$X \rightarrow Y$。对于这个案例,它的结论是:”相同的输入,不同的输出,这属于无法解释的误差项。”

因果机器学习则认为这是两个本质不同的个体。它学习的是个体层面的结构方程 $Y = f(U, \varepsilon)$,其范式是从不可观测的因果表征到结果的推理:$U \rightarrow Y$。它的结论是:”这是两个完全不同的个体,我的任务是理解他们内在的、驱动成绩差异的本质原因。”

这不只是数学符号的变化,这是思维方式的转变:从关注群体统计,到理解个体故事。 这是 causal-sklearn 的核心理念。

四大核心特点:为什么选择causal-sklearn

causal-sklearn不只是另一个机器学习包,它具有四个重要特点:

🎯 特点一:因果 vs 相关 尝试超越传统模式匹配,探索因果关系理解。传统方法问:”什么和什么相关?” causal-sklearn试图回答:”为什么会这样?”

🛡️ 特点二:更好的鲁棒性 在噪声和异常值存在时表现良好。在30%标签噪声环境下的实验中,CausalEngine的误差(MAE 11.41)低于标准sklearn MLP(MAE 47.60)。

方法 MAE ↓ RMSE ↓ R² ↑
sklearn MLP 47.60 59.87 0.8972
CausalEngine (standard) 11.41 13.65 0.9947

🧮 突破三:全新的数学框架 以柯西分布为核心,基于深刻的哲学洞察(”在反事实世界里,一切皆有可能”),带来了计算上的意外礼物——完全解析化的推理过程。

🔧 特点四:sklearn兼容设计 可以融入现有ML工作流,使用方式与sklearn保持一致。只需改变导入语句即可使用。

# 从传统方法
from sklearn.neural_network import MLPRegressor

# 到因果方法,只需改变导入
from causal_sklearn import MLPCausalRegressor

个体选择变量U:理解个体的新视角

为了让机器理解个体,我们引入了个体选择变量U——一个新的数学概念。

双重含义 $U$ 具有双重含义:

  • 身份一:个体选择变量 $U=u$ 意味着从所有可能的个体中”选择”了特定个体 $u$。这回答了”我们面对的是哪一个个体?”
  • 身份二:个体因果表征 向量 $u \in \mathbb{R}^d$ 包含了这个个体所有内在的、驱动其行为的本质属性。这回答了”这个个体的本质特征是什么?”

优雅的数学框架 通过引入 $U$,我们实现了个体差异建模与因果推理的优雅统一:

\[\begin{aligned} \text{感知阶段:} & \quad Z = \text{Perception}(X) \\ \text{归因阶段:} & \quad U \sim \text{Cauchy}(\mu_U(Z), \gamma_U(Z)) \\ \text{行动阶段:} & \quad S = \text{Action}(U) \\ \text{决策阶段:} & \quad Y = \text{Decision}(S) \end{aligned}\]

这个框架的特点在于:

  • $f(\cdot)$ 的普适性:对所有个体都是同一个因果律
  • $U$ 的个体性:每个个体都有独特的表征
  • 推理的可解释性:每一步都有明确的含义

从统计变异到因果表征的理论跃迁 让我们用一个对比来理解这个突破的重要性:

方法类型 个体差异处理 数学表示 哲学地位
传统回归 误差项 $Y = f(X) + \varepsilon$ 统计噪声,需要抑制
混合效应模型 随机效应 $Y = f(X) + b_i + \varepsilon$ 统计变异,无结构
因果回归 因果表征 $Y = f(U, \varepsilon)$ 因果实体,可解释

这种转变让我们能够将个体差异从”需要控制的变异”转化为”需要理解的信息”,并为个体化反事实推理提供了数学基础。

认知启发架构:四个问题构成的智能循环

人类是如何理解世界的?我们设计了一个四阶段的推理过程,模拟人类从观察到理解的完整认知过程,它与传统的 $Y = \text{BlackBox}(X)$ 黑箱映射有着本质区别。我们的因果架构是哲学驱动的透明推理:$X \rightarrow Z \rightarrow U \rightarrow S \rightarrow Y$。

第一问:”我看到了什么?” (Perception) \(Z = \text{PerceptionNetwork}(X)\) 从复杂的原始信息中提取有意义的特征,就像人类观察世界时自然进行的感知过程。这一阶段将混乱的外部证据转化为结构化的认知特征。

第二问:”这背后是什么样的个体?” (Abduction)

\[\begin{aligned} \mu_U(Z) &= \text{LocNetwork}(Z) \\ \gamma_U(Z) &= \text{ScaleNetwork}(Z) \\ U &\sim \text{Cauchy}(\mu_U(Z), \gamma_U(Z)) \end{aligned}\]

这是整个系统的核心创新。不是问”这个输入会产生什么输出”,而是问”什么样的个体会产生这样的证据?”这是一种逆向推理——从结果推原因,正是人类智能的核心特征。

第三问:”这样的个体会如何行动?” (Action) \(S = \text{ActionNetwork}(U)\) 基于对个体本质的理解,应用普适的因果规律,预测其可能的行为。这里体现了因果律的确定性和普适性:相同的个体表征总是产生相同的决策倾向。

第四问:”具体的决策是什么?” (Decision) \(Y = \text{DecisionHead}(S)\) 将抽象的决策倾向转化为具体任务需要的输出格式,建立因果推理与实际应用之间的桥梁。

哲学选择:柯西分布与计算优势

在设计这个系统时,我们面临一个根本性的哲学选择:当我们不能完全确定一个个体的本质时,应该如何表达这种不确定性?我们的答案源于一个深刻的认知原则:

“在反事实的世界里,任何结果都有可能由任何个体创造。”

这句话提醒我们保持开放:我们永远无法完全洞悉一个个体的全部潜能。这种哲学立场,自然地将我们引向了柯西分布——那个在传统统计学中被认为”病态”的分布,因为它重尾的特性为”一切皆有可能”的反事实推断保留了概率,且其期望和方差未定义,诚实地表达了”我们永远无法完全了解一个个体”的哲学事实。

\[f(x \vert \mu, \gamma) = \frac{1}{\pi\gamma}\left[1 + \left(\frac{x-\mu}{\gamma}\right)^2\right]^{-1}\]

有趣的是,这个选择带来了计算上的便利。柯西分布具有线性稳定性: \(X \sim \text{Cauchy}(\mu, \gamma) \Rightarrow aX + b \sim \text{Cauchy}(a\mu + b, \vert a \vert \gamma)\) 这让我们的整个四阶段推理过程可以完全解析化,无需任何采样!我们因为哲学上的自洽而选择了柯西分布,却意外地获得了计算上的巨大优势。这正是深刻理论的标志。

CausalEngine的技术实现

统一推理框架 CausalEngine通过温度参数 $\tau$ 和采样标志实现了多种推理模式的统一:

def inference(self, X, temperature=1.0, do_sample=False):
    # 感知阶段
    Z = self.perception_network(X)

    # 归因阶段
    mu_U, gamma_U = self.abduction_network(Z)

    if temperature == 0:
        # 纯因果模式
        U_effective = mu_U
    elif do_sample:
        # 采样模式
        noise = torch.distributions.Cauchy(0, 1).sample(mu_U.shape)
        U_effective = mu_U + temperature * self.b_noise * noise
    else:
        # 标准模式
        gamma_U_effective = gamma_U + temperature * torch.abs(self.b_noise)
        U_effective = torch.distributions.Cauchy(mu_U, gamma_U_effective).sample()

    # 行动阶段
    S = self.action_network(U_effective)

    # 决策阶段
    return self.decision_head(S)

不确定性的因果分解 CausalEngine能够将总体不确定性分解为两个有明确含义的部分: \(\text{总不确定性} = \text{认知不确定性} + \text{外生不确定性}\) 其中:

  • 认知不确定性 $\gamma_U(X)$:我们对个体 $U$ 理解的局限性
  • 外生不确定性 $\vert\beta_{\text{noise}}\vert$:世界本身的固有随机性
def uncertainty_decomposition(self, X):
    mu_U, gamma_U = self.abduction_network(self.perception_network(X))

    return {
        'epistemic': gamma_U,           # "我们不知道"
        'aleatoric': torch.abs(self.b_noise),  # "世界本身随机"
        'total': gamma_U + torch.abs(self.b_noise)
    }

这种分解为可信AI的发展提供了重要基础。

从理论到实践:causal-sklearn的诞生

我们希望让因果智能的革命性思想触手可及。causal-sklearn的设计目标是让用户以最小的学习成本享受因果推理的强大能力。

无痛升级的设计哲学 从传统方法到因果方法,只需改变导入,无缝集成。

# 传统方法
from sklearn.neural_network import MLPRegressor
model = MLPRegressor(...)
# 因果方法:只需改变导入
from causal_sklearn import MLPCausalRegressor
model = MLPCausalRegressor(...)

灵活的推理模式 CausalEngine提供了四种推理模式,每种都对应不同的应用场景和哲学假设:

model_deterministic = MLPCausalRegressor(mode='deterministic') # 与传统方法等价
model_exogenous = MLPCausalRegressor(mode='exogenous') # 强调环境随机性
model_endogenous = MLPCausalRegressor(mode='endogenous') # 强调认知不确定性
model_standard = MLPCausalRegressor(mode='standard') # 平衡两种不确定性,通常性能最佳

超越点估计的丰富信息 与传统方法只能给出点估计不同,causal-sklearn能够提供完整的推理故事,包括预测分布和不确定性分解。

# 获得完整的因果叙述
point_predictions = model.predict(X_test)
distributions = model.predict_dist(X_test)
uncertainty = model.uncertainty_decomposition(X_test)

立即开始:5分钟体验因果智能

安装与验证

# 通过PyPI安装(推荐)
pip install causal-sklearn
# 验证安装
python -c "import causal_sklearn; print('因果智能已就绪!🎉')"

你的第一个因果模型

from causal_sklearn import MLPCausalRegressor
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split

X, y = make_regression(n_samples=1000, n_features=20, noise=0.1)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
regressor = MLPCausalRegressor(mode='standard', random_state=42)
regressor.fit(X_train, y_train)

# 不只是预测,还有理解
predictions = regressor.predict(X_test)                # 点预测
distributions = regressor.predict_dist(X_test)         # 分布参数
uncertainty = regressor.uncertainty_decomposition(X_test)  # 不确定性分析

print(f"预测值: {predictions[0]:.3f}")
print(f"个体表征位置: {distributions['loc'][0]:.3f}")
print(f"认知不确定性: {uncertainty['epistemic'][0]:.3f}")
print(f"外生不确定性: {uncertainty['aleatoric'][0]:.3f}")

性能验证 我们提供了快速验证脚本,让您亲眼见证因果智能在噪声环境下的卓越性能。

# 运行快速测试(回归+分类)
python scripts/quick_test_causal_engine.py

令人震撼的实验结果(30%标签噪声):

  • 回归任务: Causal (standard) 的MAE(11.41)远低于sklearn MLP(47.60)。
  • 分类任务: Causal (standard) 的Accuracy(0.9225)显著高于sklearn MLP(0.8850)。

您还可以通过运行真实世界数据集(如加州房价)的教程,来更深入地了解其性能。

python examples/comprehensive_causal_modes_tutorial_sklearn_style.py

超越预测:通往”不同”AI的可能性

更诚实、公平、有洞察力的AI CausalEngine的能力远不止于精准预测。

  • 更诚实: 它能精确量化不确定性的来源(认知局限 vs. 世界随机性),让AI成为可信赖的决策伙伴。
  • 更公平: 它通过分离个体的”本质”($U$)与”表面属性”,为构建基于能力而非统计偏见的决策系统提供了技术基础。
  • 更具洞察力: 它让每个预测都变成一个完整的、可解释的因果故事,从感知、归因到行动和决策。

结语:探索因果推理的新路径

在机器学习的历史长河中,我们一直在追求更好的预测。但causal-sklearn代表着一个更深刻的追求:让机器真正理解世界。

不再满足于”什么和什么相关”,而是追求”为什么会这样”。 不再只关注”群体的平均表现”,而是理解”每个个体的独特性”。 不再只做”模式匹配”,而是进行”因果推理”。

当你看到CausalEngine如何从数据中识别出每个个体的独特本质,当你体验到AI不再只是预测而是真正”理解”时,你就会明白:我们不只是在使用一个更好的算法,我们在参与一场智能的革命。

Judea Pearl用”因果阶梯” 描述了智能的三个层次:关联、干预和反事实。传统机器学习大多停留在第一层。而CausalEngine从诞生之初,就是为攀登更高的阶梯而设计的。它的归因推断本身就是一种反事实思考(”什么样的个体会产生这样的结果?”),其数学框架为干预和反事实分析提供了坚实的基础。我们相信,这不只是一个更好的预测工具,而是通往真正因果智能的重要一步。

立即开始体验吧!

# 第一步:安装
pip install causal-sklearn

# 第二步:体验
git clone https://github.com/1587causalai/causal-sklearn.git
python scripts/quick_test_causal_engine.py

如果您在研究中使用了Causal-Sklearn,欢迎引用:

@software{causal_sklearn,
  title={Causal-Sklearn: Scikit-learn Compatible Causal Regression and Classification},
  author={Heyang Gong},
  year={2025},
  url={https://github.com/1587causalai/causal-sklearn},
  note={基于CausalEngine™核心的因果回归和因果分类算法的scikit-learn兼容实现}
}



Enjoy Reading This Article?

Here are some more articles you might like to read next:

  • AI 的哥白尼时刻:我们关于线性因果律的大胆宣言
  • Cauchy Distribution: A Statistical Gem Not to Be Overlooked
  • 基于个体随机变量假设的分布回归方法
  • Qwen 3: Alibaba Cloud's Latest LLM Breakthrough (and a Workflow Test)
  • 重构你的大脑