使用训练波形识别波形段

数据挖掘 机器学习 分类 时间序列
2022-02-21 09:42:12

问题:有几个由波形表示的事件(eventA、eventB、....)。对于每个事件,都有几个 csv 文件(eventA1.csv、eventA2.csv、...eventAn.csv),其中包含可以生成相应波形的点 (x,y)。

使用这些波形作为训练数据,应该识别(测试数据)较大数据上的波形段,即需要在测试数据上标记事件发生的时间间隔(参见图片以供参考)。

  1. 解决这个问题的最佳策略、工具和算法是什么?
  2. 如果要生成分类模型,那么,

    1. 这些点只是为了描述波形的性质,即测试波形不会在相同的点上,而是具有相似的性质,例如凹度、凸度、斜率等。
    2. 训练图中的不同事件使用不同的点数表示,即事件 A 可以由 20 个点确定,而事件 B 有 200 个点。

      所以,

      1. 如何创建特征向量以包含所有这些用于分类的内容?
      2. 如何分析测试数据,因为它在大波形上有大量点,即如何对其进行分割以生成特征并将其提供给分类模型?

在此处输入图像描述

1个回答

统计数据分析

我将从以下内容开始:

  1. 统计分析您的训练事件并查看长度和宽度以及其他属性的均值和方差,以全面了解它们是什么。
  2. 对于每个事件,取平均值和标准差。
  3. 遍历测试数据并计算测试信号和学习事件之间的误差并绘制它。
  4. 在每种事件类型的最后,您将得到一条带有许多局部最小值的误差曲线。
  5. 根据训练事件的标准偏差选择一个阈值,并将低于该阈值的最小值检测为事件。

模式识别

更高级的选择是学习一个模型来对事件进行分类。一开始我应该说最后一个问题在理论上是错误的,因为您不会从测试数据中生成特征,而只是计算它们。已从训练数据中提取(生成)特征。我假设您的意思是如何根据模型的大小为模型提供测试数据以进行分类。好吧,我想说你可以将它分割成块,这可能会因为切割点而导致丢失一些事件,但如果测试数据足够大,那将不是问题。

关键是时间序列是一种特殊的数据,并且有专门针对它们的方法,因此经典的特征提取和学习可能会导致您陷入混乱的方法的海洋。我建议搜索术语时间序列挖掘来查看更直接的解决方案。

时间序列挖掘

我提出的第一个方法就是这样!还有更多基于欧几里得距离的基于两个时间序列的相似性检测算法。例如查看LCSSDTW这些方法是您正在寻找的,它们都是我第一个建议算法的高级版本。请注意,对于所有这些,标准化您的训练和测试数据起着重要作用。

也请参阅答案,但这是关于时间序列的无监督分割。