Causal Discovery
了解因果发现如何利用视觉数据、Ultralytics YOLO 和实用指南来揭示因果关系、DAG 和 AI 应用。
因果发现是从数据中学习可能存在的因果关系的过程,通常表示为有向图。与主要从模式中预测结果的普通机器学习不同,因果发现探讨的是哪些变量可能会直接影响其他变量。例如,它可能会调查雨水是否会增加交通拥堵、拥堵是否会改变信号灯时长,或者两者是否都受到第三个因素的影响。
其结果是关于因果结构的假设,而非自动证明。其可靠性取决于数据质量、领域知识、统计假设以及通过实验或新环境进行的验证。
因果发现的工作原理#
因果发现系统将测得的变量视为节点,将它们可能存在的因果关系视为边。在诸如 X → Y 的有向边中,相对于分析中包含的其他变量,X 是 Y 的候选直接原因。这些关系通常由贝叶斯网络或有向无环图表示,这意味着箭头不能形成有向循环。
算法通常通过以下三种方式之一来学习结构:
- 基于约束的发现测试变量在以其他变量为条件后是否呈统计独立性。PyWhy 基于约束的发现文档解释了这些独立性模式如何限制可能的图结构。
- 基于分数的发现使用平衡拟合度与复杂度的分数来比较候选图。
- 基于函数模型的发现假设变量是通过特定的数学关系和噪声模式生成的。在线性非高斯无环设置中,数据中的不对称性可能有助于确定边的方向。
causal-learn 文档提供了涵盖这些类别的实现。然而,观测数据通常支持几个等效的图,而不是一个唯一定向的有向无环图。
核心概念与相关术语#
因果发现必须与几个相关概念区分开来:
- 相关性衡量统计关联。两个变量可能一起变化,因为一个变量导致另一个变量、因果关系倒过来,或者第三个变量同时影响两者。谷歌关于相关性与因果关系的指导突出了为什么仅靠预测关联是不够的。
- 因果推断估计明确干预的效果,例如更改机器设置。发现提出图;推断使用假定的图来回答特定的效果问题。DoWhy 因果建模指南展示了图如何使这些假设变得明确。
- **因果表征学习**旨在从图像等复杂输入中获取有意义的潜在变量。因果发现通常研究已定义变量之间的关系。
- **可解释人工智能**描述了模型产生预测的原因。特征重要性可以在不表明更改特征会改变现实世界结果的情况下解释预测。
重要的图概念包括混杂因素(同时影响拟合原因和结果)、中介因素(传递效果)以及对撞因子(受其他两个变量影响)。加州大学洛杉矶分校因果有向无环图简介解释了为什么对错误的变量进行条件设定会引入偏差,而不是消除偏差。
AI 和计算机视觉的实际应用#
-
制造检验:计算机视觉系统可以记录缺陷数量、传送带速度、材料类型、温度和维护事件。因果发现可以表明更高的速度是否直接导致缺陷,或者两者是否都是产量需求增加的结果。在减慢生产线速度或更改维护计划之前,这种区分至关重要。
-
交通管理:目标检测和目标跟踪可以生成车辆数量、排队长度和运动轨迹。结合天气、事件和信号设置,因果发现可以帮助区分信号灯时长是会造成长队,还是为了响应现有拥堵而进行了调整。在选择政策干预时,这种方向性至关重要。
这些图可以指导之后的假设分析,包括DoWhy 干预文档中描述的模拟。
从视觉数据中构建变量#
Ultralytics YOLO 输出可以为更大的因果数据集提供观测变量。此示例使用 YOLO26 和预测模式从图像中提取计数:
from ultralytics import YOLO
# Run object detection
model = YOLO("yolo26n.pt")
results = model("https://ultralytics.com/images/bus.jpg")
# Convert detections into measurable variables
result = results[0]
detected_objects = [result.names[int(class_id)] for class_id in result.boxes.cls]
person_count = detected_objects.count("person")
total_objects = len(detected_objects)
print({"person_count": person_count, "total_objects": total_objects})在许多时间戳、相机或运行条件下运行此工作流会产生可与上下文变量结合的观测值。高质量的数据标注和一致的测量至关重要,因为检测错误会产生错误的依赖关系。Ultralytics 平台可以在此更广泛的管道中支持云端数据集标注、模型训练、部署和监控。
局限性与实用指导#
因果发现无法可靠地恢复从未测量过的变量。隐藏的混杂因素、数据集偏差、选择效应、小样本和测量错误都可能产生误导性的边。
在对发现的图采取行动之前:
- 添加已知的时间和物理约束。
- 测试边在各个站点、时期和数据子集之间是否保持稳定。
- 将图与专家知识进行比较。
- 量化不确定性,而不是将每一条边都视为确定的。
- 在可行的情况下,通过对照干预验证重要的关系。
最后,使用因果效应估计(而非仅靠图发现)来衡量干预规模。EconML 处理效应文档说明了这一独立的估计阶段。因果发现最有价值的地方在于,它是在做出现实世界决策之前生成、挑战和完善因果假设的结构化方法。









