时序分析 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⟩=∥a∥∥b∥cosθ
其中,θ\thetaθ 为两个向量的夹角。如果我们忽略向量的长度,那么向量内积就可以被理解为两个向量的相似程度。越相近,内积值越接近111;而反之则接近−1-1−1 。
Gram Matrix
我们引入Gram Matrix,想象我们保存一个列向量的集合在一个矩阵 XXX 中,Gram Matrix定义为:
G=XTXG = X^TXG=XTX ,可以展开为
G=[⟨x1,x1⟩⟨x1,x2⟩…⟨x1,xN⟩⟨x2,x1⟩⟨x2,x2⟩…⟨x2,xN⟩…………⟨xN,x1⟩⟨xN,x2⟩…⟨xN,xN⟩]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,x1⟩⟨x2,x1⟩…⟨xN,x1⟩⟨x1,x2⟩⟨x2,x2⟩…⟨xN,x2⟩…………⟨x1,xN⟩⟨x2,xN⟩…⟨xN,xN⟩⎦⎤
可以看出Gram矩阵就是向量集合中每对向量之间的内积。
读者看到这里,可能会疑惑,所说的这些和时序数据有什么关系呢。时序数据的每个数据点并不是一个向量而是一个标量。确实如此,GAF并不直接应用Gram矩阵。
格拉姆角场计算步骤
1. 规范化
GAF的第一步是把时序数据规范化到区间[-1, +1] ,假设时序数据为X=x1,x2,…,xNX = {x_1, x_2, …, x_N }X=x1,x2,…,xN ,规范化后的值记为 xi~\tilde{x_i}xi~ ;规范化后Gram Matrix就如下所示:
G=[cos(ϕ1,1)cos(ϕ1,2)…cos(ϕ1,n)cos(ϕ2,1)cos(ϕ2,2)…cos(ϕ2,n)…………cos(ϕn,1)cos(ϕn,2)…cos(ϕ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 表示向量 iii与向量 jjj 之间的夹角。
转化到这里,让我们进一步分析一下采用Gram矩阵的原因。Gram矩阵表示了向量集合中的向量两两之间的内积,我们可以理解为 GGG 表示了向量之间的相关程度,而这种相关程度实际上是由向量之间的夹角来决定的。前面也提到过,时序数据点并不是向量,那么如何解决这个问题呢?是否可以将其转化为带有角度的表示呢?答案是肯定的:极坐标。
2. 坐标转换
第二步是把规范化后的值转化为极坐标,
ϕi=arccosxi~\phi_i = \arccos \tilde{x_i}ϕi=arccosxi~
ri=tiNr_i = \frac{t_i}{N}ri=Nti
其中,ti∈Nt_i \in \mathbb{N}ti∈N 代表了点 xix_ixi 的时间戳,NNN 是时序数据中所包含的所有时间点的个数。
每一个时序点数据包含两个信息:一个是该数据点的规范化值 xi~\tilde{x_i}xi~;另一个是其所在的时序位置 tit_iti 。上面的极坐标转换编码把这两个信息都包含了进来,且没有损失任何信息,从数学上看是一个双射函数,也就是说此函数的自变量和因变量具有一一对应的关系,正反两方向都是如此。极轴rir_iri 保留了时间上的关系;极角 ϕi\phi_iϕi 保留了数值上的关系。
对时序数据进行极坐标可以解释为从另一个角度来理解数据。当时间向前滚动时,数据点将类似水波纹一样展开。
3. 自定义内积
把每个时序点转换为极坐标编码后任然没有解决如何表示Gram矩阵中的角度定义相关程度问题。
GAF定义了自己的特殊的内积:⟨x1,x2⟩=cos(ϕ1+ϕ2)\langle x_1, x_2 \rangle = \cos(\phi_1 + \phi_2)⟨x1,x2⟩=cos(ϕ1+ϕ2) ,就是说两个时序点之间的"内积"是这两个时序点的极坐标转化后的极角之和的余弦,形如:
G=[cos(ϕ1+ϕ1)cos(ϕ1+ϕ2)…cos(ϕ1+ϕn)cos(ϕ2+ϕ1)cos(ϕ2+ϕ2)…cos(ϕ2+ϕn)…………cos(ϕn+ϕ1)cos(ϕn+ϕ2)…cos(ϕ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×nn\times nn×n 的方阵,时间被编码成方阵的几何维度 1⋯n{1\cdots n}1⋯n 。相比于原时序数据,GAF增加了一个维度的信息,那么它到底增加了什么,或者说从原数据转化出了什么呢? 当时间滚动时,GAF把时序数据的每一个点转化成了这个点与其他点的相关关系,这种关系使用GAF自定义的内积来度量的。
我们再进一步拆解一下,
cos(θ1+θ2)=cos(arccos(x)+arccos(y))=cos(arccos(x))⋅cos(arccos(y))−sin(arccos(x))⋅sin(arccos(y))=x⋅y−1−x2⋅1−y2cos(\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))=x⋅y−1−x2⋅1−y2
所以,格拉姆角场可以理解为带惩罚项的内积,请见下式:
GAF=G=[cos(ϕi+ϕj)]=X~′⋅X~−I−X~′2⋅I−X~2GAF=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~−I−X~′2⋅I−X~2
补充一下,在这种内积定义下的GAF称为GASF,既Gramian Angular Summation Fields;而另外一种称为GADF(Gramian Angular Difference Fields),其内积定义为:
GAF=G=[sin(ϕi−ϕj)]=I−X~′2⋅X~−X′I−X~2GAF=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)]=I−X~′2⋅X~−X′I−X~2
下图展示了转换过程:
GAF展示了数据之间的时序相关结构。
最后一个值得思考的问题就是如果是想把时序数据转换为二维空间数据,是否可以直接使用Gram Matrix。
上图显示了余弦时序数据的Gram Matrix的密度分布和对应的Gram Matrix。从其密度分布上看有些类似于均值为0的正态分布,而Gram Matrix所表示的图像中充满了噪声。因为数据越接近于正态分布,Gram Matrix越很难与高斯白噪声进行区分。正态分布的出现其实很容易理解,下图展示了(x, y) ∈ R² , z 为x, y的内积的3D展示,
时序数据的数值在[-1,1]之间呈现均匀分布时,Gram Matrix中的值也会呈现正态分布。但正态分布对于我们在结果数据上应用卷积神经网络是非常不利的,所以GAF采用了带惩罚性的内积。下图帮助我们理解一下,
⟨x,y⟩=x⋅y−1−x21−y2\langle x,y \rangle = x\cdot y-\sqrt{1-x^2}\sqrt{1-y^2}⟨x,y⟩=x⋅y−1−x21−y2
惩罚项使均值指向-1,而且 xxx 和 yyy 越趋近于 0,惩罚项越大;当 x=yx=yx=y 使,结果值为-1。最重要的作用是使结果远离高斯噪声。
最后分享一张动图帮助大家理解,
时序分析 42 -- 时序数据转为空间数据 (一) 格拉姆角场相关推荐
- 时序分析 44 -- 时序数据转为空间数据 (三) 格拉姆角场 python 实践 (上)
格拉姆角场 python实践 时序预测问题是一个古老的问题了,在笔者关于时序分析的系列中已经介绍了多种时序预测分析技术和方法.本篇我们将使用一种新的思路来进行时序预测:对金融数据进行GAF(格拉姆角场 ...
- 时序分析 43 -- 时序数据转为空间数据 (二) 马尔可夫转换场
马尔可夫转换场(MRF,Markov Transition Fields) MRF 马尔可夫转换场(MRF, Markov Transition Fields)比GAF要简单一些,其数学模型对于从事数 ...
- 【python】无规律时间步长时序数据转为固定步长
写在前面 日常可能会遇到时间步长无规律的数据,需要转化为固定时间步长,此时需要进行重采样或插值. 例子 在选择好时间间隔后,可以用pandas的resample来操作. import pandas a ...
- MATLAB-基于长短期记忆网络(LSTM)的SP500的股票价格预测 股价预测 matlab实战 数据分析 数据可视化 时序数据预测 变种RNN 股票预测
MATLAB-基于长短期记忆网络(LSTM)的SP500的股票价格预测 股价预测 matlab实战 数据分析 数据可视化 时序数据预测 变种RNN 股票预测 摘要 近些年,随着计算机技术的不断发展,神 ...
- 第九章 时序数据-学习笔记+练习题
第九章 时序数据 # 导入需要的模块 import numpy as np import pandas as pd import matplotlib.pyplot as plt %matplotli ...
- datawhale pandas 打卡10 时序数据
内容简介 这次文章的内容是pandas的文本数据 文章目录 内容简介 时序中的基本对象 时间戳 时间戳的创建 时间戳的上下限 Datetime序列的生成 dt对象 时间戳的切片与索引 时间差 Time ...
- pandas 第十章 时序数据
第十章 时序数据 import numpy as np import pandas as pd 一.时序中的基本对象 时间序列的概念在日常生活中十分常见,但对于一个具体的时序事件而言,可以从多个时间对 ...
- DataWhale_Pandas Task10 时序数据
第十章 时序数据 一.时序中的基本对象 时间序列的概念在日常生活中十分常见,但对于一个具体的时序事件而言,可以从多个时间对象的角度来描述.例如2020年9月7日周一早上8点整需要到教室上课,这个课会在 ...
- Day11-Python时序数据(DataWhale)
时序数据 import numpy as np import pandas as pd 一.时序中的基本对象 (1) 时间戳 (Date times): pandas 中称为 Timestamp,一系 ...
- LTSM 实现多元素时序数据植物健康预测
作者 | 李秋键 出品 | AI科技大本营(ID:rgznai100) 引言: 近些年来,"预测"一词在各个领域被频繁提及,所谓预测,实际上就是根据历史规律,推测未来结果.在科学技 ...
最新文章
- day13 paramiko、数据库表操作
- POJ 1038 Bugs Integrated Inc (复杂的状压DP)
- TFS自定义开发中的反射应用
- 信息安全-5:RSA算法详解(已编程实现)[原创]
- 微软亚研院 CVPR 2021 9篇视觉研究前沿进展
- 新建网站了!Github标星过万的吴恩达机器学习、深度学习课程笔记,《统计学习方法》代码实现,可以在线阅读了!...
- 色彩丰富的水彩纹理背景,配合排版和简单的设计元素,给任何设计带来乐趣。
- 《机器学习》周志华--第5章神经网络。 笔记+习题
- 三连杆机械臂正运动学python模拟——运动学学习(一)
- JSP开发模型(JavaWed)
- 计算机上怎么带源地址ping,如何带源地址ping
- 【搜索/提问必备】如何正确的在Stack Overflow提问
- Linux三剑客练习
- unity4.0多平台发布强势登陆引领3D游戏开发新时代
- 甲骨文服务器(Oracle Cloud)开启root用户登录
- 106-Latex矩阵过大问题
- RT-Thread学习笔记|TCS34725 RGB 颜色识别传感器详解
- Sagittarius's Trial I - 9 HDU - 1754 I Hate It
- influence究竟是可数名词还是不可数名词
- 基于SSM的疫情物资管理系统