用于时间序列分析的高级可视化技术
使用马尔可夫转换字段和网络图揭示时间序列行为
马尔可夫转换场(MTF)是一种可视化技术,可突出显示时间序列的行为。这篇博客文章深入探讨了我们如何构建和解释这些字段。然后,我们将通过探索网络图解释进一步在Markov过渡域之上构建。欢迎浏览GitHub,以获取此配套Jupyter笔记本。
资料总览
在上面提到的GitHub存储库中,您还将找到在工业设备上捕获的7个信号。每个信号包含一个小时采样率的一年数据,它们表现出我们将尝试表征的不同行为。让我们来画第一个:
> Raw original signal (image by the author)
马尔可夫过渡场(MTF)
MTF概述
pyts包提供了一些现成的时间序列成像功能,包括MTF:通过此转换,可以通过以下矩阵表示先前的信号:
> Markov transition field of the previous signal (image by the author)
现在,让我们分解产生这种视觉表现的过程。在以下各节中,我们将分解构建马尔可夫转换字段的方式,以更好地了解其属性以及如何将其用于建立对时间序列行为的理解:
· 将时间序列离散化为可以采用的不同值
· 建立马尔可夫转移矩阵
· 计算过渡概率
· 计算马尔可夫转换场
· 计算汇总的MTF
· 提取有意义的指标
· 将过渡概率映射回初始信号
步骤1:信号离散化
我们再次使用pyts包(由您真正构建的tsia包抽象)来离散化我们的信号:
X_binned, bin_edges = tsia.markov.discretize(tag_df)
此后,时间序列的每个值x [i]与我们刚刚计算的bin(分位数)之一相关联。第一个和最后一个边沿分别对应于信号所取的最低和最高值。中间仓边缘由离散器计算。对于较早加载的信号,此量化过程将以下信号合并到该信号中:
| Bin | Start | End || 0 | < 82.4 | 82.4 || 1 | 82.4 | 118.4 || 2 | 118.4 | 137.4 || 3 | 137.4 | 156.8 || 4 | 156.8 | 166.4 || 5 | 166.4 | 175.2 || 6 | 175.2 | 183.9 || 7 | 183.9 | 196.5 || 8 | 196.5 | 255.3 || 9 | 255.3 | > 255.3 |
让我们在时间序列上绘制这些bin,以可视化如何离散化值:
> Quantized signal: each bin is represented by a different color band (image by the author)
步骤2:建立马尔可夫转换矩阵
一旦我们的信号被量化,我们就可以建立一个马尔可夫转移矩阵:
如何阅读马尔可夫转移矩阵?让我们看一下第一行:465 |86 |1 |0 |0 |0 |0 |0 |:
· 第一个单元格告诉我们,bin 0中的465点(值在82.4和118.4之间)后跟一个值,该值一直位于该bin中。
· 第二个单元格告诉我们bin 0中的86个点过渡到下一个bin(值在118.4和137.4之间)
· … 等等…
· 第八个单元格告诉我们从bin 0过渡到最后一个bin没有点
现在让我们看第二行:80 |405 |63 |2 |0 |2 |0 |0 |:第一个单元格告诉我们bin 1中的80个点(值在118.4和137.4之间),后跟bin 0中的值(在82.4和118.4之间)。
最后但并非最不重要的一点是,对角线捕获了分位数转换为其自身的频率(自转换频率)。
步骤3:计算过渡概率
现在,我们将标准化每个容器。现在,此矩阵包含幅度轴上的过渡概率:
第一列对应给定值(给定bin的一部分)转换为bin 0的概率。第二列对应给定值转换为bin 1的概率,以此类推。例如,如果给定值X [i]等于130.0,介于118.42和137.42之间,并装在bin 1中。给定上面的矩阵,有:
· 下一个值在82.43和118.42之间(框0)的可能性为14.5%
· 有73.4%的机会保持在同一范围内(118.42至137.42之间,bin 1)
· 下一个值在137.42和156.78之间的可能性为11.4%(bin 2)
· … 等等…
步骤4:计算马尔可夫转换场
过渡域的思想是顺序表示Markov过渡概率,以将信息保留在时域中。MTF生成过程将每个概率沿时间顺序对齐,以为整个信号构建MTF:
如何阅读马尔可夫变迁场?MTF [i,j]表示从分位数q [i]到分位数q [j]的转移概率。让我们看一下该字段第二行中的几个值:
array([68.8, 68.8, 68.8, 68.8, 68.8, 68.8, 10.7, 10.7, 10.7, 10.7])
让我们看一下M [1,2]:
· 我们看哪个容器在时间步长x [1]处落下信号:这是X_binned [1] = 2
· 我们还查看了哪个bin在时间步长x [2]处使信号下降:这是X_binned [2] = 2
· 然后,我们查看Markov转移矩阵,以获取来自bin 2的值留在bin 2中的概率
· 该值是68.8%,因此M [1,2] = 68.8%
这是什么意思?好吧,当查看整个信号时,在时间步长x [1]和时间戳x [2]之间发生的转换就有68.8%的机会发生。
现在让我们看一下M [1,6]:
· 我们看哪个容器在时间步长x [1]处落下信号:这是X_binned [1] = 2
· 我们还查看在哪个时间步x [10]中哪个bin落下了信号:这是X_binned [6] = 1
· 然后,我们查看Markov转移矩阵,以获取从bin 2值过渡到bin 1的概率
· 该值是10.7%,因此M [1,6] = 10.7%
当查看整个信号时,在时间步长x [1]和x [6]之间发生的过渡发生的可能性为10.7%。
现在,让我们绘制刚才计算的过渡字段:
> High resolution MTF: pixel colors map to transition probabilities (image by the author)
步骤5:计算汇总的MTF
为了使图像尺寸易于管理并提高计算效率(上述MTF是4116 x 4116尺寸的矩阵),我们通过对每个不重叠m x m色块中具有模糊内核1 /m²的像素进行平均来减小MTF尺寸。m是图像大小,我们将其任意设置为48。也就是说,我们将长度m = 48的每个子序列中的转移概率汇总在一起。让我们相应地计算一个聚合的MTF:如果信号长度可以除以所选的图像大小(48),在这种情况下,我们可以使用以下简单函数来计算聚合的MTF:
否则,我们需要计算分段聚合的近似值,但是请放心,在pyts包中,此方法已完全实现并为您服务!获得的图像与本文顶部显示的图像完全相同:
> Ta da! (image by the author)
步骤6:提取有意义的指标
MTF的对角线包含自转移的概率:
· 自变迁概率是在下一时间步从分位数移动到相同分位数的概率。
· 我们可以提取这种分布的特征(均值和标准差)。
· MTF的其他对角线较难解释,但仍可绘制。
> Metrics that can be derived from Markov transition fields (images by the author)
步骤7:将转换概率映射回初始信号
我们可以将这些概率映射回原始信号的一种方法是获取MTF对角线所示的转移概率:
> Mapping self-transition probabilities back to the original signal (image by the author)
让我们看一下粗略的MTF(image_size = 8会使其变得很粗略),以更好地理解我们可以从此Markov字段中提取的内容:
> (Left) MTF (with an image size 8) | (Right) Original signal (images by the author)
我们对这个图有什么解释?
· 平均而言,第一部分的平均过渡概率(黄色)约为19%:这意味着当我们查看整个信号时,在本部分中看到的过渡并不经常发生(19%的时间)。
· 相反,深蓝色部分(第六部分)在此信号中发生跳变的频率更高(大约50%的时间)
蓝色部分更接近该信号的正常行为,而黄色部分与该信号的偏离更大。
如果您想检查如何将完全不同的信号的行为映射到不同的MTF图和度量标准,请先看一下笔记本,然后再继续进行下一部分!
进入网络图!
总览
从MTF,我们可以生成图G =(V,E):我们在顶点V和时间索引i之间有直接映射。从那里开始,有两种可能的编码方式:
· 流编码:这种表示形式有助于我们观察大信息流在哪里发生。我们将时间流映射到顶点,使用从T0到TN的颜色渐变为网络图的每个节点着色,并使用MTF权重为顶点之间的边缘着色
· 模块化编码:模块化是网络分析中识别特定局部结构的重要模式。我们将模块标签(哪个社区ID)映射到每个顶点,每个社区具有特定的颜色,将顶点的大小映射到聚类系数,将边缘颜色映射到目标顶点的模块标签
在以下各节中,我们将分解构建网络图的方式以更好地了解其属性,以及如何将其用于建立对时间序列行为的理解:
· 建立信号MTF并从中提取网络图
· 计算分区和模块化,并将此信息编码为网络图表示形式
· 绘制网络图
· 将分区颜色映射回时间序列
步骤1:建立网路图
我们从MTF中提取图并从那里绘制一个香草网络图:
> Vanilla network graph… Not very insightful at this stage… (image by the author)
步骤2:将分区和模块化编码到网络图表示中
上面的网络图并没有给我们带来很多新见解。我们将使用Louvain方法在该网络图中搜索社区:模块化是介于-0.5(非模块化聚类)和1(完全模块化聚类)之间的标度值,用于度量社区内部边缘相对于外部边缘的相对密度社区。从理论上优化此值会导致给定网络的节点的最佳分组,但是将节点的所有可能迭代都分为几组是不切实际的,因此使用启发式算法。在Louvain社区检测方法中,首先通过在所有节点上局部优化模块化来找到小型社区,然后将每个小型社区分组为一个节点,并重复第一步。此方法在社区包中实现(在此处记录),我们在tsia包中使用它对网络图进行编码:
除了模块性和社区(或分区)数量之外,我们还可以从网络图计算出其他感兴趣的统计数据:
步骤3:绘制网络图
现在,我们可以在网络图中对这些信息进行编码,以使其更加丰富多彩,并且希望更加有用:
> Encoded network graph (image by the author)
我们对这个图有什么解释?模块化度量和Louvain方法在该信号中发现了4个社区。在这个阶段,很难理解我们如何利用这些知识…
步骤4:将分区颜色映射回时间序列
在网络图中检测到的每个社区在原始时间序列中都有自己的形状:
> Mapping network graph communities back to the original time series signal (image by the author)
您可以参考笔记本,通过为存储库中可用的其他信号绘制相同的图来进一步建立您的直觉。这里有一些例子:
> Different signals behavior mapped to their associated network graphs (images by the author)
这些映射看起来不如从MTF获得的那样有价值。但是,可以从这些网络图提取的功能对于根据信号的行为对信号进行分类看起来很有希望。这是前面引用的存储库中提供的7个信号的示例:
> Network graph metric (image by the author)
结论与未来工作
将马尔可夫转换场映射到时间序列信号的转换概率看起来像是一个很好的工具,可以向最终用户提供有关给定信号行为的反馈。另一方面,将网络图社区映射回原始时间序列似乎并没有带来太多价值:但是,从这些网络图(请参见上表)中提取的功能将用于自动限定信号的可用性,这很有趣。给定的用例。作为未来的研究领域之一,我们有兴趣研究如何将这些工具应用于多元时间序列(尤其是高维度的工具,正如我们在工业环境中发现的那样,每个工业设备每个传感器有数百甚至数千个传感器)。
潜在用途
这些Markov转换字段和网络图可能被潜在使用:
· 为了数学上确定给定信号的特征:恒定,稳定,有噪声,单调…
· 比较训练和验证数据集的一致性(并检测概念漂移)。
· 要训练半监督异常预测模型:在正常信号上训练时间CNN,每分钟(例如)执行和内联MTF计算,并将推理结果与训练后的模型进行比较以检测信号行为变化。
· 为了进一步解释为什么无监督时间序列异常检测模型会发现异常
参考文献
· 王志光Oates,Tim(2015),《改善分类和归因的成像时间序列》,Arxiv。
· 刘璐。王志光(2018)在图形中编码时间马尔可夫动力学以可视化和挖掘时间序列Arxiv。
(本文由闻数起舞翻译自Michaël HOARAU的文章《Advanced visualization techniques for time series analysis》,转载请注明出处,原文链接:
https://towardsdatascience.com/advanced-visualization-techniques-for-time-series-analysis-14eeb17ec4b0)