某中心向DoWhy贡献新型因果机器学习算法
我们很高兴宣布开源因果机器学习算法,这些算法是某中心多年图形因果模型研究的成果。除了常规效应估计外,这些算法支持多种复杂因果查询,包括但不限于异常值和分布变化的根因分析、因果结构学习以及因果结构诊断。内部已应用于从供应链到某中心云服务的多个团队。
在与某机构的共同努力下,我们创建了名为PyWhy的新GitHub组织,作为微软因果机器学习库DoWhy的新家,我们的算法正被整合其中。DoWhy是GitHub上最受欢迎的因果性库之一。某中心和某机构很高兴与DoWhy用户和贡献者社区合作。
图形因果模型
大多数现实世界系统,无论是分布式计算系统、供应链系统还是制造流程,都可以使用可能相互施加因果影响的变量来描述。例如,由许多不同Web服务组成的微服务架构。网站加载时间增加的原因是什么?是后端数据库缓慢?负载均衡器故障?还是网络延迟?
现有因果性库(包括DoWhy)专注于各种类型的效应估计,其总体目标是识别干预对某些目标变量的影响。在微服务架构中,它们有助于回答诸如“如果更改缓存服务配置,是否会改善网站加载时间,还是使其更糟?”等问题。
我们的贡献利用图形因果模型的力量,补充了DoWhy的现有功能集。GCM是图灵奖得主Judea Pearl开发的形式化框架,用于对系统中变量之间的因果关系建模。GCM的关键组成部分是因果图,它直观地表示观察变量之间的因果关系,箭头从原因指向结果。
在效应估计中,分析师在因果过程中的某个点进行干预并观察后果,这切断了干预点上游原因的影响,干预的效果可能在因果链中传播时变化。相比之下,在根因分析中,分析师观察一个效果(例如网站减速),并通过系统性地控制其他解释,识别最直接负责该效果的事件(例如缓存服务问题)。
因果图中的每个变量都有自己的因果机制,描述其值如何从其父代的值生成。可以训练概率模型来学习这些因果机制,并使用它们将异常事件或机制变化归因于特定节点。这种对机制贡献的分解是我们根因分析新算法的核心思想。
例如,在上述微服务架构中,可能意外部署有缺陷的服务,该服务使用次优SQL查询从数据库获取数据,从而增加网站延迟。使用称为“分布变化归因”的功能,可以识别有缺陷的服务。
某中心的根因分析算法改编博弈论中的Shapley值概念,以确定不同因果机制对因果序列结果的贡献。
但GCM可以做得更多:可用于计算干预效果、估计反事实、计算节点对其后代的直接和内在影响,或将异常归因于潜在的上游根本原因。通过发布算法,希望使更广泛的研究人员和实践者能够使用这些工具,并帮助推进GCM的科学方法。
PyWhy
对于效应估计,DoWhy已经使用两种最流行的因果推断科学框架——图形因果模型和潜在结果——并将它们组合在一个库中。通过我们的贡献,希望可以进一步推动框架及其专用研究社区之间的协同作用。
但长期愿景超越DoWhy、潜在结果和GCM。这体现在创建PyWhy的努力中,以及帮助指导这个新GitHub组织方向的承诺。欢迎其他人加入努力并成为社区的一部分。
对PyWhy的希望和雄心如其使命所述:“构建一个因果机器学习的开源生态系统,推动技术进步,并使其对实践者和研究人员可用。我们构建和托管可互操作的库、工具和其他资源,涵盖各种因果任务和应用,通过基础因果操作的通用API和对端到端分析过程的关注连接起来。”
如果你是研究因果机器学习问题的科学家或对其感到好奇,请访问py-why.github.io/dowhy/gcm了解更多关于DoWhy中新GCM功能的信息,或在github.com/py-why/dowhy上浏览源代码。
如果你拥有因果机器学习库并认为你的库适合PyWhy,请访问github.com/py-why了解更多关于这个新组织的信息,或在Discord上与我们交谈。
致谢:Patrick Bloebaum, Dominik Janzing