时序分析 42 -- 时序数据转为空间数据 (一) 格拉姆角场

这篇具有很好参考价值的文章主要介绍了时序分析 42 -- 时序数据转为空间数据 (一) 格拉姆角场。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Gramian Angular Field (格拉姆角场)

     我们通常认为时序数据为一维数据,实际上时序数据隐含另外一个维度就是时间。但有时我们可能需要从其他维度来解读单变量时序数据,例如我们可以把时序数据转换为空间数据,就是类似图像的数据,后续可以使用卷积神经网络来进行特征提取。达到这一目的有两个常用方法,格拉姆角场(Gramian Augular Fields, GAF)和马尔可夫转换场(Markov Transition Fields, MTF)。本篇文章主要介绍GAF,下一篇介绍MTF。

一. 理论部分

GAF牵涉到了太多的数学,本文结合一些简单的数学知识,主要是从直观上解释GAF。
内积回顾
首先让我们回忆一下两个向量内积的定义:

⟨ a , b ⟩ = ∥ a ∥ ∥ b ∥ cos ⁡ θ \langle a, b\rangle = \lVert a \rVert \lVert b \rVert \cos \theta a,b=abcosθ

其中, θ \theta θ 为两个向量的夹角。如果我们忽略向量的长度,那么向量内积就可以被理解为两个向量的相似程度。越相近,内积值越接近 1 1 1;而反之则接近 − 1 -1 1

Gram Matrix

我们引入Gram Matrix,想象我们保存一个列向量的集合在一个矩阵 X X X 中,Gram Matrix定义为:
G = X T X G = X^TX G=XTX ,可以展开为
G = [ ⟨ x 1 , x 1 ⟩ ⟨ x 1 , x 2 ⟩ … ⟨ x 1 , x N ⟩ ⟨ x 2 , x 1 ⟩ ⟨ x 2 , x 2 ⟩ … ⟨ x 2 , x N ⟩ … … … … ⟨ x N , x 1 ⟩ ⟨ x N , x 2 ⟩ … ⟨ x N , x N ⟩ ] G = \begin{bmatrix} \langle x_1, x_1 \rangle & \langle x_1, x_2 \rangle & … & \langle x_1, x_N \rangle \\ \langle x_2, x_1 \rangle & \langle x_2, x_2 \rangle & … & \langle x_2, x_N \rangle \\ … & … & … & … \\ \langle x_N, x_1 \rangle & \langle x_N, x_2 \rangle & … & \langle x_N, x_N \rangle \end{bmatrix} G= x1,x1x2,x1xN,x1x1,x2x2,x2xN,x2x1,xNx2,xNxN,xN
可以看出Gram矩阵就是向量集合中每对向量之间的内积。
     读者看到这里,可能会疑惑,所说的这些和时序数据有什么关系呢。时序数据的每个数据点并不是一个向量而是一个标量。确实如此,GAF并不直接应用Gram矩阵。

格拉姆角场计算步骤
1. 规范化

     GAF的第一步是把时序数据规范化到区间[-1, +1] ,假设时序数据为 X = x 1 , x 2 , … , x N X = {x_1, x_2, …, x_N } X=x1,x2,,xN ,规范化后的值记为 x i ~ \tilde{x_i} xi~ ;规范化后Gram Matrix就如下所示:
G = [ c o s ( ϕ 1 , 1 ) c o s ( ϕ 1 , 2 ) … c o s ( ϕ 1 , n ) c o s ( ϕ 2 , 1 ) c o s ( ϕ 2 , 2 ) … c o s ( ϕ 2 , n ) … … … … c o s ( ϕ n , 1 ) c o s ( ϕ n , 2 ) … c o s ( ϕ n , n ) ] G = \begin{bmatrix} cos(\phi_{1,1}) & cos(\phi_{1,2}) & … & cos(\phi_{1,n}) \\ cos(\phi_{2,1}) & cos(\phi_{2,2}) & … & cos(\phi_{2,n}) \\ … & … & … & … \\ cos(\phi_{n,1}) & cos(\phi_{n,2}) & … & cos(\phi_{n,n}) \end{bmatrix} G= cos(ϕ1,1)cos(ϕ2,1)cos(ϕn,1)cos(ϕ1,2)cos(ϕ2,2)cos(ϕn,2)cos(ϕ1,n)cos(ϕ2,n)cos(ϕn,n)
这里的 ϕ i , j \phi_{i,j} ϕi,j 表示向量 i i i与向量 j j j 之间的夹角。

​ 转化到这里,让我们进一步分析一下采用Gram矩阵的原因。Gram矩阵表示了向量集合中的向量两两之间的内积,我们可以理解为 G G G 表示了向量之间的相关程度,而这种相关程度实际上是由向量之间的夹角来决定的。前面也提到过,时序数据点并不是向量,那么如何解决这个问题呢?是否可以将其转化为带有角度的表示呢?答案是肯定的:极坐标。

2. 坐标转换

第二步是把规范化后的值转化为极坐标,

ϕ i = arccos ⁡ x i ~ \phi_i = \arccos \tilde{x_i} ϕi=arccosxi~

r i = t i N r_i = \frac{t_i}{N} ri=Nti

其中, t i ∈ N t_i \in \mathbb{N} tiN 代表了点 x i x_i xi 的时间戳, N N N 是时序数据中所包含的所有时间点的个数。

​ 每一个时序点数据包含两个信息:一个是该数据点的规范化值 x i ~ \tilde{x_i} xi~;另一个是其所在的时序位置 t i t_i ti 。上面的极坐标转换编码把这两个信息都包含了进来,且没有损失任何信息,从数学上看是一个双射函数,也就是说此函数的自变量和因变量具有一一对应的关系,正反两方向都是如此。极轴 r i r_i ri 保留了时间上的关系;极角 ϕ i \phi_i ϕi 保留了数值上的关系。

​ 对时序数据进行极坐标可以解释为从另一个角度来理解数据。当时间向前滚动时,数据点将类似水波纹一样展开。

3. 自定义内积

把每个时序点转换为极坐标编码后任然没有解决如何表示Gram矩阵中的角度定义相关程度问题。

GAF定义了自己的特殊的内积: ⟨ x 1 , x 2 ⟩ = cos ⁡ ( ϕ 1 + ϕ 2 ) \langle x_1, x_2 \rangle = \cos(\phi_1 + \phi_2) x1,x2=cos(ϕ1+ϕ2) ,就是说两个时序点之间的"内积"是这两个时序点的极坐标转化后的极角之和的余弦,形如:

G = [ c o s ( ϕ 1 + ϕ 1 ) c o s ( ϕ 1 + ϕ 2 ) … c o s ( ϕ 1 + ϕ n ) c o s ( ϕ 2 + ϕ 1 ) c o s ( ϕ 2 + ϕ 2 ) … c o s ( ϕ 2 + ϕ n ) … … … … c o s ( ϕ n + ϕ 1 ) c o s ( ϕ n + ϕ 2 ) … c o s ( ϕ n + ϕ n ) ] G = \begin{bmatrix} cos(\phi_1+\phi_1) & cos(\phi_1+\phi_2) & … & cos(\phi_1+\phi_n) \\ cos(\phi_2+\phi_1) & cos(\phi_2+\phi_2) & … & cos(\phi_2+\phi_n) \\ … & … & … & … \\ cos(\phi_n+\phi_1) & cos(\phi_n+\phi_2) & … & cos(\phi_n+\phi_n) \end{bmatrix} G= cos(ϕ1+ϕ1)cos(ϕ2+ϕ1)cos(ϕn+ϕ1)cos(ϕ1+ϕ2)cos(ϕ2+ϕ2)cos(ϕn+ϕ2)cos(ϕ1+ϕn)cos(ϕ2+ϕn)cos(ϕn+ϕn)

上面这个带有自定义内积的矩阵就是GAF的结果。我们可以看到这是一个 n × n n\times n n×n 的方阵,时间被编码成方阵的几何维度 1 ⋯ n {1\cdots n} 1n 。相比于原时序数据,GAF增加了一个维度的信息,那么它到底增加了什么,或者说从原数据转化出了什么呢? 当时间滚动时,GAF把时序数据的每一个点转化成了这个点与其他点的相关关系,这种关系使用GAF自定义的内积来度量的。

我们再进一步拆解一下,

c o s ( θ 1 + θ 2 ) = c o s ( a r c c o s ( x ) + a r c c o s ( y ) ) = c o s ( a r c c o s ( x ) ) ⋅ c o s ( a r c c o s ( y ) ) − s i n ( a r c c o s ( x ) ) ⋅ s i n ( a r c c o s ( y ) ) = x ⋅ y − 1 − x 2 ⋅ 1 − y 2 cos(\theta_1+\theta_2)=cos(arccos(x)+arccos(y)) \\=cos(arccos(x)) \cdot cos(arccos(y))-sin(arccos(x))\cdot sin(arccos(y)) \\ =x \cdot y-\sqrt{1-x^2}\cdot \sqrt{1-y^2} cos(θ1+θ2)=cos(arccos(x)+arccos(y))=cos(arccos(x))cos(arccos(y))sin(arccos(x))sin(arccos(y))=xy1x2 1y2

所以,格拉姆角场可以理解为带惩罚项的内积,请见下式:

G A F = G = [ c o s ( ϕ i + ϕ j ) ] = X ~ ′ ⋅ X ~ − I − X ~ ′ 2 ⋅ I − X ~ 2 GAF=G=[cos(\phi_i+\phi_j)]\\=\tilde X^{'}\cdot\tilde X-\sqrt{I-\tilde X^{'2}}\cdot \sqrt{I-\tilde X^2} GAF=G=[cos(ϕi+ϕj)]=X~X~IX~2 IX~2

补充一下,在这种内积定义下的GAF称为GASF,既Gramian Angular Summation Fields;而另外一种称为GADF(Gramian Angular Difference Fields),其内积定义为:

G A F = G = [ s i n ( ϕ i − ϕ j ) ] = I − X ~ ′ 2 ⋅ X ~ − X ′ I − X ~ 2 GAF=G=[sin(\phi_i-\phi_j)]\\=\sqrt{I-\tilde X^{'2}}\cdot \tilde X-X^{'}\sqrt{I-\tilde X^2} GAF=G=[sin(ϕiϕj)]=IX~2 X~XIX~2

下图展示了转换过程:

格拉姆角场,时序分析,线性代数,矩阵,内积,格拉姆角场,时序转换分析
GAF展示了数据之间的时序相关结构。

最后一个值得思考的问题就是如果是想把时序数据转换为二维空间数据,是否可以直接使用Gram Matrix。

格拉姆角场,时序分析,线性代数,矩阵,内积,格拉姆角场,时序转换分析
上图显示了余弦时序数据的Gram Matrix的密度分布和对应的Gram Matrix。从其密度分布上看有些类似于均值为0的正态分布,而Gram Matrix所表示的图像中充满了噪声。因为数据越接近于正态分布,Gram Matrix越很难与高斯白噪声进行区分。正态分布的出现其实很容易理解,下图展示了(x, y) ∈ R² , zx, y的内积的3D展示,

格拉姆角场,时序分析,线性代数,矩阵,内积,格拉姆角场,时序转换分析
时序数据的数值在[-1,1]之间呈现均匀分布时,Gram Matrix中的值也会呈现正态分布。但正态分布对于我们在结果数据上应用卷积神经网络是非常不利的,所以GAF采用了带惩罚性的内积。下图帮助我们理解一下,
格拉姆角场,时序分析,线性代数,矩阵,内积,格拉姆角场,时序转换分析
⟨ x , y ⟩ = x ⋅ y − 1 − x 2 1 − y 2 \langle x,y \rangle = x\cdot y-\sqrt{1-x^2}\sqrt{1-y^2} x,y=xy1x2 1y2

惩罚项使均值指向-1,而且 x x x y y y 越趋近于 0,惩罚项越大;当 x = y x=y x=y 使,结果值为-1。最重要的作用是使结果远离高斯噪声。

​ 最后分享一张动图帮助大家理解,

格拉姆角场,时序分析,线性代数,矩阵,内积,格拉姆角场,时序转换分析文章来源地址https://www.toymoban.com/news/detail-781270.html

到了这里,关于时序分析 42 -- 时序数据转为空间数据 (一) 格拉姆角场的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 线性代数 --- Gram-Schmidt, 格拉姆-施密特正交化(上)

            在前面的几个最小二乘的文章中,实际上已经看到Gram-Schmidt正交化的影子。在我个人看来,Gram-Schmidt正交化更像是专门为了简化最小二乘计算而量身定制的一种算法。下面,我会从最小二乘的经典应用 --- \\\"拟合直线\\\"开始,慢慢引出Gram-Schmidt的核心思想 —— 那就是,

    2024年02月10日
    浏览(45)
  • 线性代数 --- Gram-Schmidt, 格拉姆-施密特正交化(下)

            到目前为止,我们都是在反复强调“对于无解的方程组Ax=b而言,如果矩阵A是标准正交矩阵的话,就怎么怎么好了。。。。”。因为,不论是求投影还是计算最小二乘的正规方程,他们都包含了的逆的计算。只有当A为标准正交矩阵Q时,就不再需要计算的逆了,这时,

    2024年02月13日
    浏览(54)
  • 【信号转换】基于格拉姆矩阵(GASF/GADF)的一维信号转换图像算法【附MATLAB代码】

    GAF是利用坐标变化和格拉姆矩阵,实现将时间序列变化成为二维图像的 一种图像编码技术。GAF是采用极坐标系表示时间矩阵的,再用格拉姆矩阵对 生成的角度进行变换,这主要是因为格拉姆矩阵能够保持时间的依赖性,但是 并不能很好的区分有价值信息和高斯噪声,所以要

    2024年03月21日
    浏览(86)
  • 时序分析 43 -- 时序数据转为空间数据 (二) 马尔可夫转换场

    MRF     马尔可夫转换场(MRF, Markov Transition Fields)比GAF要简单一些,其数学模型对于从事数据科学的工程师来说也并不陌生,诸如马尔可夫模型或隐含马尔可夫模型(HMM)也是我们经常会用到的建模方法,在自然语言处理、机器学习等数据科学任务中也会经常遇到。     我们假

    2024年01月17日
    浏览(67)
  • 空间时序数据分析技术综述Spatiotemporal data analysis technologies s

    作者:禅与计算机程序设计艺术 随着科技的飞速发展,在人类活动与社会经济中的种种数据呈现出一种新的模式,其中空间时序数据的处理及分析具有十分重要的作用。与传统时间序列数据不同的是,空间时序数据往往含有更多的维度信息,如位置、时间、年龄、设备等,因

    2024年02月07日
    浏览(63)
  • 【数据分析】针对家庭用电数据进行时序分析(1)

    本项目所用数据集包含了一个家庭6个月的用电数据,收集于2007年1月至2007年6月。 这些数据包括有功功率、无功功率、电压、电流强度、分项计量1(厨房)、分项计量2(洗衣房)和分项计量3(电热水器和空调)等信息。该数据集共有260,640个测量值,可以为了解家庭用电情况

    2024年02月08日
    浏览(51)
  • Python数据分析案例42——基于Attention-BiGRU的时间序列数据预测

    承接上一篇的学术缝合,排列组合模型,本次继续缝合模型演示。 Python数据分析案例41——基于CNN-BiLSTM的沪深300收盘价预测-CSDN博客 虽然我自己基于各种循环神经网络做时间序列的预测已经做烂了.....但是还是会有很多刚读研究生或者是别的领域过来的小白来问这些神经网络

    2024年04月15日
    浏览(37)
  • python数据分析之产品销量时序分析与商品关联分析

    这是我们之前的课后作业,根据自己的想法对这个数据进行分析,只要求写出五个点出来就可以了,因此我就对这些数据进行了分析一番。涉及的python知识点还是挺多的,包括了python连接数据库,SQL提取数据并保存为csv格式,pandas处理数据,matplotlib画图以及购物篮分析与关联

    2024年02月07日
    浏览(48)
  • 针对Informer中时序数据ETT油温数据分析

    电力变压器油温数据,由国家电网提供,该数据集是来自中国同一个省的两个不同县的变压器数据,时间跨度为2年,原始数据每分钟记录一次(用 m 标记),每个数据集包含2年 * 365天 * 24小时 * 60分钟 = 1,051,200数据点。由于数据量的庞大,将数据粒度改为每15分钟1个数据点,

    2024年02月14日
    浏览(39)
  • 【数据挖掘】如何修复时序分析缺少的日期

            我撰写本文的目的是通过引导您完成一个示例来帮助您了解 TVF 以及如何使用它们,该示例解决了时间序列分析中常见的缺失日期问题。         我们将介绍: 如何 生成日期 以填补数据中缺失的空白 如何 创建 TVF  和参数的使用

    2024年02月15日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包