连续和离散数据分析矩阵(使用格拉姆角场)真相究竟是什么?

cht 2023-06-29 19次阅读

Gramian Angular Summation / Difference Fields GASF / GADF能将时间序列转换成图像,这样我们就能将卷积神经网络 CNN 用于时间序列数据

连续和离散数据分析矩阵 使用格拉姆角场1

基本概念

在开始详解之前,我认为首先我们应该熟悉一下 GASF / GADF 的基本概念。 如果您已经知道,能跳过本节。

笛卡尔坐标:笛卡尔坐标系 Cartesian coordinates,法语:les coordonnées cartésiennes就是直角坐标系和斜坐标系的统称,相交于原点的两条数轴,构成了平面仿射坐标系 。如两条数轴上的度量单位相等,则称此仿射坐标系为笛卡尔坐标系。两条数轴互相垂直的笛卡尔坐标系,称为笛卡尔直角坐标系,否则称为笛卡尔斜角坐标系。点 或其他几何形状的位置由一个或多个数字确定。 例如,如果我们采纳二维坐标系,则位置由一对数字确定,例如 2,3。 然后在距两条参考线 称为 x 轴和 y 轴的距离上显示该位置。

连续和离散数据分析矩阵 使用格拉姆角场2

极坐标:属于二维坐标系统,98迷科,创始人是牛顿,重要应用于数学领域。极坐标是指在平面内取一个定点O,叫极点,引一条射线Ox,叫做极轴,再选定一个长度单位和角度的正方向 通常取逆时针方向。想象一个以原点为中心的圆,它与点2,3相交。我们求这个圆的半径以及x轴与0,0和2,3连线的夹角。在极坐标中会被表示为 3.6,56.3,也就是说是一个距离极点3.6个单位和极轴夹角为56.3°的点

连续和离散数据分析矩阵 使用格拉姆角场3

格拉姆矩阵:假设我们有一组向量V。格拉姆 Gram矩阵是来自V的每一对向量的内积矩阵。如下图所示,矩阵中的每个元素< vi, vj> 是向量 vi 和 vj 之间的向量乘积。

连续和离散数据分析矩阵 使用格拉姆角场4

以上图片和详解来自维基和百度百科,以上就是基本概念的简单详解,那么咱们开始进入正题。

格拉姆角场

现在我们将朝着这篇文章的重要目标前进,即理解在图像中表示时间序列的过程。 简而言之,能通过以下三个步骤来理解该过程。

连续和离散数据分析矩阵 使用格拉姆角场5

通过取每个 M 点的平均值来聚合时间序列以减小大小。 此步骤使用分段聚合近似 Piecewise Aggregation Approximation / PAA。

区间[0,1]中的缩放值。

通过将时间戳当作半径和缩放值的反余弦 arccosine来生成极坐标。 这杨能提供角度的值。

生成GASF / GADF。 在这一步中,将每对值相加 相减,然后取余弦值后进行求和汇总。

语言描述可能不太准确,下面使用代码详细进行解释

Python 中的示例

我在这里提供了一个 Python 示例,以演示使用格拉姆角场将时间序列转换为图像的逐步过程的状态。

导入需要的包

from pyts.approximation import PiecewiseAggregateApproximation from pyts.preprocessing import MinMaxScaler import numpy as np import matplotlib.pyplot as plt

生成一些demo数据

X = [[1,2,3,4,5,6,7,8],[23,56,52,46,34,67,70,60]] plt.plotX[0],X[1] plt.title‘Time series’ plt.xlabel‘timestamp’ plt.ylabel‘value’ plt.show

连续和离散数据分析矩阵 使用格拉姆角场6

分段聚合逼近和缩放

# PAA transformer = PiecewiseAggregateApproximationwindow_size=2 result = transformer.transformX # Scaling in interval [0,1] scaler = MinMaxScaler scaled_X = scaler.transformresult plt.plotscaled_X[0,:],scaled_X[1,:] plt.title‘After scaling’ plt.xlabel‘timestamp’ plt.ylabel‘value’ plt.show

连续和离散数据分析矩阵 使用格拉姆角场7

转换成极坐标

arccos_X = np.arccosscaled_X[1,:] fig, ax = plt.subplotssubplot_kw={‘projection’: ‘polar’} ax.plotresult[0,:], arccos_X ax.set_rmax2 ax.set_rticks[0.5, 1, 1.5, 2] # Less radial ticks ax.set_rlabel_position 22.5 # Move radial labels away from plotted line ax.gridTrue ax.set_title“Polar coordinates”, va=’bottom’ plt.show

连续和离散数据分析矩阵 使用格拉姆角场8

Gramian angular summation fields

field = [a b for a in arccos_X for b in arccos_X] gram = np.cosfield.reshape 1,4 plt.imshowgram

连续和离散数据分析矩阵 使用格拉姆角场9

最终补充

上述步骤用于说明使用 Gramian Angular Summation / Difference Field 将时间序列转换为图像的过程。 在实际使用时中能不需要计算极坐标,这是因为以下的三角函数规则:

连续和离散数据分析矩阵 使用格拉姆角场10

为了在 Gramian Angular Field 计算中计算 Cos A B,我们将其扩展如下

连续和离散数据分析矩阵 使用格拉姆角场11

因为我们通过取时间序列值的余弦倒数来计算 A 和 B 实际上是在 PAA 和缩放之后的值上。其他的说明能参考pyts库关于GramianAngularField的说明。

引用

Wang, Z., & Oates, T. 2015. Imaging time series to improve classification and imputation. IJCAI International Joint Conference on Artificial Intelligence, 2015 January, 3939–3945.

Eamonn J Keogh and Michael J Paz zani. Scaling up dynamic time warping for datamining applications. In Proceedings ofthe sixth ACM SIGKDD international conference on Knowledge discovery and data mining, pages 285– 289. ACM, 2000.


标签: 续和  离散  数据分析  矩阵  使用  格拉  姆角场