1. 引言

本文将介绍一种用于识别时间序列中模式的可视化技术。该方法通过将时间序列数据转换为图像,再利用图像识别技术来识别潜在的规律,非常适合用于如气温变化、传感器数据等一维时序数据的分析。

2. 时间序列中的模式识别

时间序列本质上是两列数据:时间与对应的值。例如:某城市一年内的最低气温、某地区一个月内的地震活动记录等。

✅ 识别时间序列中的模式可以帮助我们更深入地理解数据背后的行为和趋势。
✅ 同时也有助于我们分析模式成因,甚至尝试预测或控制其变化。

比如下面这张图,展示的是澳大利亚墨尔本十年内的气温变化:

dataframe

3. 可视化模式识别方法

许多时间序列模式识别的方法,通常会先将时间序列数据转换为更常见的数据格式,比如向量、矩阵等,然后再使用传统的机器学习算法进行分类或识别。

而可视化方法则不同,它直接将时间序列“画成图”,然后使用图像分类算法来识别其中的模式。

⚠️ 问题来了:如何将一维的时间序列数据转换为图像?

4. 数据转换过程

我们采用一种简单但有效的变换方式:离散差分(Discrete Differentiation)

具体做法是:

  1. 对时间序列中的每一个点,计算其与前一个点的差值(即离散差分)
  2. 然后将原始值作为横坐标(x),差分值作为纵坐标(y)进行绘图

这样,我们就得到了一个二维点集,将其绘制成图像即可用于图像识别。

举个例子,假设原始数据是:

t1, t2, t3, ..., tn

我们计算差分:

d1 = t2 - t1  
d2 = t3 - t2  
...  
dn-1 = tn - tn-1

然后,将每个 (ti, di) 作为图像中的点进行绘制。

5. 示例说明

我们使用澳大利亚墨尔本一年的气温数据作为原始时间序列:

time series

原始数据来源:daily-min-temperatures.csv

为了测试模式识别效果,我们在原始数据后追加一年的“随机数据”作为异常样本。然后我们以第一年数据为“模式模板”,尝试识别后续7年是否具有相似模式,最后一年则应被识别为异常。

6. 应用该方法

对时间序列进行上述图像转换后,我们将每年的数据转换为一张图像,共生成9张图(对应9年):

Result 1

从图像可以看出,前8张图与第一张非常相似,只有最后一张明显不同。这正是我们期望的效果:图像识别算法可以很容易地识别出这种差异。

我们还可以使用直方图对比这些图像的特征向量差异:

histogram 1

7. 方法对比

从示例可以看出,这种可视化方法非常直观,能让我们清晰地看到模式是如何被识别出来的。

虽然在面对多个模式或复杂数据时会变得复杂一些,但整个分析过程仍然比传统的时序分析模型(如隐马尔可夫模型)更易于理解和调整。

✅ 优势总结:

  • 更直观,便于调试和解释
  • 不需要复杂的模型训练过程
  • 可以结合现成的图像识别算法(如CNN、SIFT、直方图等)
  • 对比传统方法更易扩展和改进

8. 总结

本文介绍了一种基于图像识别的时间序列模式识别方法。

我们通过以下步骤完成了整个流程:

  1. 对原始时间序列计算离散差分
  2. 将原始值和差分值组成二维点集绘制成图像
  3. 使用图像识别技术(如直方图对比)识别模式差异

该方法在实际应用中表现良好,尤其适合需要快速识别模式或异常的场景。对于有经验的开发者来说,这种方法也更容易实现和优化,推荐在相关项目中尝试使用。


原始标题:Pattern Recognition in Time Series