前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >时间序列算法(二)——相空间重构理论

时间序列算法(二)——相空间重构理论

作者头像
用户7506105
发布2021-09-27 10:49:55
5.4K0
发布2021-09-27 10:49:55
举报
文章被收录于专栏:碎片学习录碎片学习录

在时间序列问题的一般场景中,都是通过在时间域或者时域与频域的变换中进行研究的,而有一类时间序列本身是在确定系统中出现的无规则的运动极具混沌特性的时间序列(混沌的含义是混乱而没有秩序的状态),这个混沌现象是广泛存在的,因为很多后续变化都是对初值敏感,而且虽然整个过程中表面无规则但是实际上是可以通过一些动力学模型预测的。对于这一类混沌时间序列的问题(包括模型建立和预测)在现存的理论中是在相空间进行研究的,所以自然而然相空间重构是处理混沌时间序列中非常重要的过程

(上帝的指纹-分形与混沌)

相空间重构

重构的目的是为了挖掘整个时间序列更多的信息(包括相关性和动力学特性等),找到与原始系统在某种意义上等价的另一个新系统

坐标延迟法

除此之外还有一种是导数重构法,但导数重构中会进行微分操作,对误差=敏感且需要知道一些先验信息,所以一般不采用

本质是通过给定的一维时间序列{x(i)}(

i \in [1,n]

)的不同时间延迟来构建m维相空间矢量,即

\vec{x}(i) = (x(i), x(i+\tau),...,x(i+(m-1)\tau))

如此就将第i个序列值构建成了m维向量,其中

\tau

为延迟时间,且

i \in [1, n - (m - 1) \tau]

,所以n个这样的序列值就可以构成一个n*m的矩阵相空间

注:这里是一维时间序列构成的相空间

引入学者Takens等人提出的嵌入定理,即对于一个无限长,无噪声且有d维的混沌时间序列(其中有个概念是吸引子,一个系统如果有朝某个稳态发展的趋势,那这个稳态就叫做吸引子),总可以在拓扑不变(即具有相同的内秉性,比如图之间的连通性不随图的大小、体积等可观测量度的变化而变化,具体概念可见拓扑学课本)的意义上找到一个m维的嵌入相空间,且这里的新相空间的维数满足

m >= 2d+1

。嵌入定理的深层含义即从理论上保证了我们可以从指定维度的混沌时间序列中重构一个与原动力系统在拓扑意义下等价的相空间,由前文所述因为混沌时间序列的一些模型建立、分析、预测等过程都是在相空间中进行的,所以这个嵌入定理是进行相空间重构的理论基础。

由坐标延迟法可以看出,有两个参数需要确定,一个是延迟时间

\tau

,一个是嵌入的相空间维数m,而在嵌入定理中,只是证明了嵌入维数和延迟时间的存在性,而并没有给出具体的表达式,而且实际应用中时间序列都是有噪声的有限序列(无噪声的序列嵌入维m和延迟时间

\tau

可以取任意值),所以嵌入维数和时间延迟必须要根据实际的情况来选取合适的值,不然会影响重构的相空间的质量

混沌不变量有关联维数,Lyapunov 指数等,它是这里所谓内秉性的一些量度,即重构后尽量不发生变化的一些变量

相关参数选取方法

有两种观点,第一种是认为延迟时间

\tau

和相空间嵌入维m是互不相关的,而另一种是认为这两个参数是相关的。

对于第一种观点,一般是先求时间延迟

\tau

再求合适的相空间嵌入维数m,而对于时间延迟

\tau

一般可采用自相关法平均位移法复自相关法互信息法等(见后)进行确定,这样一来原始的时间序列在经过这个时间延迟后就能作为独立的坐标,从而去找相空间的嵌入维数,为了使得重构后的吸引子和混沌系统中真正的吸引子尽可能拓扑等价,需要去找最小嵌入维m,主要方法是几何不变量虚假最临近点法,虚假最临近点法的改进-Cao方法

延迟时间
\tau

的确定

主观判断,如果延迟时间很小,则相邻的两个值在数值上非常接近无法区分,从而无法提供独立的坐标分量,而如果延迟很大,则可能两个值毫无相关性可言,导致失真,故采用一些方法来确定其合理的值

  • 自相关函数法

本质是使得重构后的时序元素间相关性降低,且尽可能使得原序列的动力学特征不丢失,即局部无关,整体信息保留最大化的过程。引入自相关函数

连续型

C(\tau) = \lim_{T \rightarrow \infty} \int_{-\frac{T}{2}}^{\frac{T}{2}} x(t) * x(t+ \tau) dt

离散型

C(\tau) = \frac{1}{n} \sum_{t=1}^{n-\tau} x(t) * x(t+ \tau)

其中x为序列函数,这个

C(\tau)

表述两时刻的序列相互关联程度,越大则越相似,所以这个函数随着

\tau

的增大而减小(时间越长久越不相似)。使用实际观测数据做出自相关函数与延迟时间

\tau

的函数图,当自相关函数下降到初始值的

1-\frac{1}{e}

时,则此时的延迟时间就是相空间重构的延迟时间

\tau

虽然简单有效,但是只能提取序列间的线性相关性,不太可能推广到高维

  • 平均位移法 定义相空间量相邻相点的平均距离为
S_m^p(\tau) = \frac{1}{N} \sum_{t=1}^N ||\vec{x}(t+\tau) - \vec{x}(i)||_p

其中

\vec{x}(i)

是选择任意的延迟时间

\tau

而确定的,p为范数值,显然

S_m^p(\tau)

会随着延迟时间

\tau

增加而增加然后趋于饱和(因为太长的延迟时间构成的序列与原始序列独立性增强,影响差值的只有两个序列的整体动力学特点,明显这两个序列是一致的),一般选择曲线斜率在初始斜率的40%以下对应的序列延迟就是所求的时间延迟

\tau

该方法可能有抖动,毕竟序列可能有噪声,所以具有一定的随机性

  • 复自相关法

它是在前面的自相关法和平均位移法的基础上演化而来的,考虑平移位移法的二阶范数所得到平均位移

S_m^2(\tau) = \frac{1}{N} \sum_{t=1}^N \sum_{j=1}^{m} (x_{t+j\tau} - x_t)^2
= 2m*\frac{1}{N}\sum_{t=1}^N x_t^2 - 2 \sum_{j=1}^{m} \frac{1}{N} \sum_{t=0}^N x_{t} * x_{t+j\tau}

其中令

R_{xx}(j\tau) = \frac{1}{N} \sum_{t=0}^N x_{t} * x_{t+j\tau}

为时间跨度为

j\tau

的自相关系数,且令

E=\frac{1}{N}\sum_{t=1}^N x_t^2

,则E为常数(因为是同一个序列),故这个式子可以看成是左边是平均位移法,右边的被减数包含自相关函数法,故复自相关法为

R_{xx}^m(\tau) = \sum_{j=1}^m R_{xx}(j\tau)

R_{xx}^m(\tau)

的第一个零点为延迟时间

\tau
  • 互信息法

不管是自相关函数还是复自相关法都是判断的线性相关性,而混沌系统一般都是非线性系统,故引入互信息来解决这个问题,定义

[q,s] = [x(t),x(t+\tau)]

,由信息论中互信息的定义

I(Q,S) = \sum_i \sum_j P_{sq}(s_i,q_j) log_2[\frac{P_sq(s_i,q_j)}{P_s(s_i)P_q(q_j)}]

故此时的

I(x(t),x(t+\tau)) = I(\tau)

一定是

\tau

的函数,其值代表当已知

x(t)

下的

x(t+\tau)

的确定性大小,如果为0,则说明

x(t+\tau)

完全不可测,即不相关,而

min\{I(\tau)\}

则是最大可能的不相关,所以只用选择这个互信息的第一个极小值就为最优延迟时间

\tau
相空间嵌入维数m的确定

直观来看,m如果选的过小,吸引子会发生重叠,从而导致与原始吸引子完全不同(相当于维度压缩),如果选的过大,意味着吸引子的信息结构被完全打开,增大了计算量而且也增大了噪声数据的影响,故需要合理选择嵌入维数

由前嵌入定理知道,m>=2d+1才能使得拓扑意义上的等价

  • 几何不变量法

在选定延迟时间

\tau

后,逐渐增加m,不断计算混沌不变量(如关联维数,Lyapunov 指数等)直到停止变化为止的最小m即为所求

  • 虚假最临近点法

我们是将混沌时间序列映射到高维相空间中(因为m >= 2d+1),反向来看则是混沌时间序列是高维相空间在d维空间上的投影,既然有投影就会有重叠,故存在在高维相空间并不相邻的两点在混沌序列中相邻,这样的点称为虚假邻点,这也是为什么混沌时间序列表面无规律的原因所在,而重构相空间则是恢复这个维度,逐渐打开混沌变化的轨道的过程,从而虚假邻点也会被剔除,这就是思想所在

在d维相空间中,有

\vec{x}(i) = (x(i), x(i+\tau),...,x(i+(m-1)\tau))

且存在一个最近邻点

\vec{x}^{NN}(i)

,定义距离为

R_d^p(i) = ||\vec{x}(i) - \vec{x}^{NN}(i)||_p

当维数从d增加到d+1维时,则

R_{d+1}^p(i) = R_d^p(i) + ||x(i + \tau d) - x^{NN}(i+ \tau d)||_p

如果此时

R_{d+1}^p(i)

R_d^p(i)

大很多,则可以认为这是由高维两个不相邻点投影至低维相邻的两点造成的,故这个点就是虚假邻点

a_1(i,d) = \frac{||x(i + \tau d) - x^{NN}(i+ \tau d)||_p}{R_d^p(i)}

a_1(i,d)

大于阈值

R_r

则称

\vec{x}^{NN}(i)

\vec{x}(i)

的虚假邻点,阈值

R_r \in [10,50]

所以此时方法是从嵌入维数m的最小值开始计算虚假最近邻点比例,然后不断增加这个维数,知道虚假最近邻点的比例小于5%或者虚假邻点的比例收敛为止,则此时的嵌入维数为最优嵌入维数m

  • 虚假最临近点法的改进-Cao方法

虚假最临近点法的虚假临近点会随着序列噪声的影响而起伏,而不是单调变化,且阈值

R_r

选择极具主观性

改写

a_1(i,d)

a_2(i,d) = \frac{||\vec{x}_{d+1} (i) - \vec{x}^{NN}_{d+1} (i)||}{||\vec{x}_{d} (i) - \vec{x}^{NN}_{d} (i)||}

定义

E(m) = \frac{1}{N-m\tau} \sum_{i=1}^{N-m\tau}a_2(i,m)
EL(m) = \frac{E(m+1)}{E(m)}

若EL(m)在维数大于某一特定值后不再变化或者缓慢变化,则特定值即为选定的嵌入维数m

同时确定延迟时间和嵌入维数

即第二种观点

这种观点引入了一个概念,时间窗

\tau_w

,即

\tau_w = (m-1)\tau

让该时间窗不变即可,相当于延迟时间和嵌入维数成反比例关系,这种观点对应的计算量较为复杂,主要包含C-C方法、改进的C-C方法及微分熵比法,具体不展开了,总之目的都是为了确定最优的延迟时间和嵌入维数以确保和原始的系统能在拓扑意义上尽可能保持等价

建模预测过程

通过以上的解释,考虑一个混沌时间序列

\{ x(i) | i \in [1,n]\}

,将其相空间重构为

\begin{cases} \vec{y_{1}} = \vec{x}(1) = (x(1), x(1+\tau),...,x(1+(m-1)\tau)) \\ \vec{y_{2}} = \vec{x}(2) = (x(2), x(2+\tau),...,x(2+(m-1)\tau)) \\ ......\\ \vec{y_{i}} =\vec{x}(i) = (x(i), x(i+\tau),...,x(i+(m-1)\tau)) \\ ......\\ \vec{y_{n - (m-1) \tau}} = \vec{x}[n - (m-1) \tau] = \{x[n - (m-1) \tau],...,x(n)\} \end{cases}

这样我们就可以在嵌入维数为m的欧式空间建立动力系统模型为

\vec{y_{i+1}} = \vec{x}(i+1) = F(\vec{x}(i)) = F(\vec{y_i})

F可以由最小二乘法、神经网络、小波分析等方法训练出

假设

N = n-(m-1)\tau

,则有

\vec{y}_N(m) = (x(N),...,x(n))

,则采用最小二乘法可以变成

\hat{\vec{x}}(i+1) = c_0 x(N) + c_1 x(N+\tau) + ...
+c_{m-1}[N+(m-1)\tau] +c_d

此时的

c_i

已经计算出,故此时的预测值就确定了,也就是每一次时间点的最小二乘函数或者其他模型训练出来的函数的参数都可能不一致,因为从上面那个方程组可以看到时间越长越是采用的不相关的x进行的训练,从而体现了混沌系统的特性和相空间的优势所在。

总结

相空间重构对气象数据、通信、经济学等领域非常有用武之地,笔者曾经在一个研究气象污染物系统预报的实习项目中就用到了该方法,当时采用的是相空间重构构建数据分布+bp神经网络算法训练函数F和遗传算法进行特征选取的技术方案,最后使得预测误差较小,得到了当时公司技术大牛的认可,所以在有混沌序列的应用场景,条件反射地想到重构相空间不失为一个非常好的数据处理思路!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-09-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 碎片学习录 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 相空间重构
    • 坐标延迟法
      • 相关参数选取方法
  • 建模预测过程
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档