背景

这篇文章学习一下 Amazon 在 ICML 2021 中提出的一种新颖时间序列间因果关系挖掘方法 SyPI (Systematic Path Isolation),此新方法声称超越了格兰杰因果挖掘方法,在给定图约束下可以识别目标时间序列的真因[1] ,即方法可以定位到造成目标时间序列变化的根因!🤔

New method goes beyond Granger causality to identify only the true causes of a target time series, given some graph constraints.

给出原始论文标题和下载链接,感兴趣可以深入学习:

论文标题丨Necessary and sufficient conditions for causal feature selection in time series with latent common causes

论文来源丨ICML 2021

论文链接丨http://proceedings.mlr.press/v139/mastakouri21a.html

本文主要来源于作者对该方法解释,具体细节可以参考上述论文。

问题描述

首先抛出个问题:给定观察到的时间序列和感兴趣的目标时间序列,我们能否在不排除隐藏时间序列的情况下确定目标的原因?

具化下场景:德国乳制品价格的时间序列如下图所示,从这些数据能找出黄油价格波动的原因吗? 个人是看不出来…

乳制品价格相关,但是否代表因果?

这个问题会出现在许多领域,例如金融、生物学、运维和供应链管理,在这些领域中时间序列构成了对系统的观察情况,出现问题后需要对某个目标序列来判断造成序列变化的 “因”。

Amazon 在 ICML 2021 上发表的这篇论文中,作者描述了一种新技术用于检测目标时间序列的所有直接因果特征,在给定一些图约束下仅检测直接或间接因果特征,所提出的方法产生的检测因的假阳率接近于零。真能达到这种程度那就可厉害了…

定义:一般利用有向无环图 DAG 来表示关联变量间的因果关系,其节点代表变量,边代表因果关系。

作者观察到的约束是指一些隐藏时间序列的目标和“记忆”(在某些情况下,缺乏对自身过去的依赖)。作者将假设限制在那些可以自然地从环境中得出并且无法避免的假设。 因此,作者避免其他方法做出的强假设,例如排除隐藏的常见原因(导致多个观察到的未观察到的时间序列)。

作者还希望避免先前方法 (FCI 系列方法) 的其他缺点,例如需要对系统进行干预(以测试特定的因果序列)和需要大型条件集(必须控制以检测相关性的变量集)或详尽的条件独立性测试 ,这阻碍了结果的统计强度。

相比之下,论文提出的方法考虑了隐藏的常见原因,仅使用观察数据,并构建了在信噪比方面小而有效的条件集,考虑到一些似乎难以避免的图形约束。

构建条件集

条件独立

一般情况下统计相关性(即线性情况下的相关性)并不意味着因果关系, 即 correlation 非 causation。

用来表示相关变量之间因果关系的图为有向无环图 (DAG),这意味着边有方向并且没有环。边的方向(在下图中用箭头表示)表示因果影响的方向。在时间序列的情况下使用“full time DAG”,其中每个节点代表与时间序列不同的时间步长。

为了分析第三个变量 S 是否解释了两个其他变量之间的统计依赖性(即相关性),在将统计数据限制为具有固定 S 值的数据点后,检查依赖性是否消失 。在较大的图中, S 可以是一整套变量,称之为 条件集。控制条件集中的所有变量称为 条件独立性测试 ,是在方法中使用的主要工具。

另一个重要的概念是混淆 Cofunding。如果两个变量 XY 是相关的,不是因为一个变量导致另一个变量,而是因为它们都是由第三个变量 U 引起的即被 U 混淆了 。

方法的 Intuition

在下图中,通过搜索条件独立的不同模式,设法区分因果影响和混杂关系。在这两个图中, XY 是相关的(即同时变化)。但是在左图中,当以原因 X 为条件时, ZY 是相互依赖的 ;即当控制 X 时, Y 的变化与 Z 的变化无关 。

混淆因素和因果关系

然而,当 XY 之间存在隐藏的混杂因素时 ,如右图所示, 当以 X 为条件时, ZY 变得依赖 。

这似乎违反直觉。当我们以变量为条件时,我们对待它就好像我们知道它的结果一样。在下图中,因为我们知道 ZX 的贡献,因此该贡献与 X 的实际值之间的差异来自 U (与噪声有一些变化)。由于 YU 变化 ,它也反映了这种变化,并且 ZY 变得相关。

时序中的因果关系

这种寻找条件独立性的相似特征模式以区分原因和混杂因素的想法与论文的方法非常相关。

在时间序列的情况下,图表比上面的例子复杂得多。这里展示了这样一个时间序列图:

带有隐藏时间序列的 Full time graph

上图中有一个单变量(一维)目标时间序列 Y 需要查找其原因,然后有几个观察到的候选时间序列XiX^i,它们可能导致目标或与它有不同的依赖关系,同时允许存在几个隐藏的时间序列 U

从时间顺序上可以知道一些边的方向。另一方面,时间序列对其自身过去的依赖使情况复杂化,因为它在节点之间创建了共因模式。

对于每个候选时间序列,需要隔离当前节点和前一个节点以及相应的目标节点,因此提取了下图中绿色和黄色表示的三元组。

测试 Full time graph 中的条件依赖和独立性

如果可以设法做到这一点,那么当同时对黄色节点和所有紫色节点进行条件处理时,检查绿色节点是否变得独立就足够了。

如果黄色节点和目标的绿色节点之间存在隐藏的混杂因素,那么对黄色节点的调节将迫使两个绿色节点之间产生依赖关系,如上面的第一个示例。但是要执行该测试,需要将我们的三元组与其他时间序列的因果影响隔离开来。

为此,构建了一个条件集 S,其中最多包含每个时间序列中依赖于目标的一个节点。此节点对应于输入目标前一个时间戳的节点( 上图中的YtY_t)。当然还需要包括目标节点本身的前一个时间戳(上面的YtY_t)以删除目标的过去依赖项,以及黄色节点。

在这里看到XjX^jY 之间的关系确实是混杂的(XjX_j 不会导致 Y,尽管它们看起来是相关的)。看到方法的第二个条件被违反,因此,XjX^j 被正确拒绝(因为它不是 Y 的原因 )。

考虑到对图的一些限制,考虑到隐藏混杂的难度,论文中的方法不认为这些限制是极端的,提出并证明了用于识别单滞后图中直接和间接原因的两个定理,即:其中一个节点在候选时间序列仅与目标时间序列中的节点共享一条边。这些定理导致算法只有两个条件独立性测试和明确定义的条件集,其与候选时间序列的数量成线性关系。

结合论文中提出的 SyPI 算法框架,看起来非常简介但是其中理论证明非常多,如下图所示:

SyPI 算法

现在回到文中最初的预测黄油价格示例。用来测试论文方法的真实世界数据包括原料奶的价格、黄油的价格,以及其它乳制品的价格(取决于国家/地区),例如奶酪和乳清粉。方法可以正确地推断出黄油的价格是由原奶的价格引起的,而不是由其他乳制品的价格引起的,尽管它们强烈依赖于它。在一个数据集中,数据不包括原奶的价格,方法可以正确地推断出黄油价格与其他乳制品价格之间的相关性并不意味着因果关系。

总结

这篇论文中提出的时间序列因果挖掘方法非常符合直观感受,考虑了隐变量对观测变量的因果影响。实际中时间序列表现出相关特征变化的果但难以确定造成这种变化的因。

之前很多论文的思路是直接基于格兰杰因果测试观测变量的条件独立性,或者 PC 算法构建因果 DAG,这种情况下很可能挖掘出来很可能是 correlation 而非 causation。



  1. Determining causality in correlated time series. ↩︎