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 θ 为两个向量的夹角。如果我们忽略向量的长度,那么向量内积就可以被理解为两个向量的相似程度。越相近,内积值越接近 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,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