假设我们可以观察一个一维时间序列,无限长。然后任务是根据已经观测到的数据来预测未来该时间序列可能的值。

那么最简单的做法的是直接回归,稍微复杂一点的做法可以是选定一个窗口做自回归。

但是今天看到一种方法,叫相空间重构,也可以用来做此类预测。相空间重构的核心是,将一维的时间序列嵌入到一个高维空间里。比如说,对于任意一个离散一维时间序列里的 \(x(t)\), 我们提取出 \(\{x(t-(N-1)),x(t-(N-2)),\cdots, x(t)\}\) 这 \(N\) 个点来, 然后构建出一个 \(N\) 维空间。在这个空间里再做预测。

至于如何确定这个 \(N\) 的大小,有一些方法,例如自回归谱,互信息等来确定。

一旦确定下来以后对该时间序列未来值的预测就变成了一个回归问题。也就是说,对于某个特定的点对应的相空间的点,找到和它最近的点,其平均值可以用来作为预测值。可以看到,这个过程是不需要一个参数的,也不需要一个“model”。比如有篇利用了这个方法进行种群数量预测的 文章(10.1073/pnas.1417063112) 就起了个标题叫 Equation-free mechanistic ecosystem forecasting using empirical dynamic modeling.

上面这种操作的基础是 Takens 嵌入定理,虽然定理并没有说明这种嵌入要如何构造。但是如果我们暂时抛开漂亮的定理不论,那么这个过程其实还是一种 dynamical pattern matching. 因为其最后一步操作还是最近邻法,只是说,现在的近邻不是基于单个点来找而是基于一个时序 pattern 来找的。可以看出,这里最核心的点是如何确定这个 pattern 的时间窗口长度:如果过小,则和普通的回归毫无差别,如果过大则很难找到类似的点。而自回归系数可以确定一个类似的窗口大小,但是其只能提取线性相关性,由于上面提到的重构法实际上对是否线性没有任何要求,因此这么做是浪费了一些潜在信息的。另一种方法就是直接测量互信息。在指定一个 \(N\) 以后,我们可以直接计算这个互信息。一般来说,这个互信息会随着 \(N\) 变大而不断衰减,那么可以在 \(N, I(x(t); x(t-N+1))\) 曲线第一次降低到极值的时候截断。然而这个互信息的计算在很多情况是非常麻烦的。如果时间序列是一维的还好,一旦观察数据自身是高维的,互信息就只能估算,还不一定准。

类似地,我们也可以把这个东西看成一种特殊的 associative memory, 把我们选定的窗口大小看成神经元的个数,那么前\(N-1\)个构成的 pattern 就是query/cue, 那么最后一个就是要补全的pattern. 空间中之前形成的吸引子的几何平均可以直接被用来计算 average prediction. 如果采取这个观点的话,甚至这个可以直接桥接到自回归上,因为一个 Hopfield Network 和一个回归(看成一个神经网络的话)是等价的,只是二者的能量函数不同而已……

参考