用于检测时间序列信号数据峰值中的聚类的算法

时间:2017-08-01 14:26:54

标签: algorithm time-series signal-processing cluster-analysis

我有一个带开/关数据的二进制时间序列数据集。通常是短暂的,因此看起来像一个高峰。这就是它的外观。

enter image description here

我已检测到峰值并提取峰值之间的时间间隔,并且也有数据(底部的小红色2路箭头)。问题在于,可以看出,峰值是聚类的,我希望对突发大小(簇中峰的数量),突发间隔(第一簇的最后一个峰值和第一个峰值之间的距离)进行量化。最后一个集群),没有。爆发等等。

一旦识别出集群,这一切都很容易。这可以通过将峰值间隔阈值化为大于某个值来容易地完成。但是我的所有数据都没有这种定义明确的集群,而且爆发间隔变化很大。有些数据集甚至没有集群。所以我的主要问题是基于一些自动和相对(非固定)阈值来识别集群。

有人可以帮我解决相同的算法。

1 个答案:

答案 0 :(得分:0)

您的问题的答案是:否。没有人可以(还)帮助您获得所需的算法。

问题在于你没有很好的量化。当您无法识别群集时,您需要一种可以识别群集的可靠算法。

我之前的回答是建议您查看从一个峰值到下一个峰值的比率。如果该比率高于某个阈值,则它是簇间间隙,否则它是簇内间隙。这可行,但它确实有一个门槛。

问题是 - 你需要一个。你不能只关注每个图表,然后说“噢,那是一个集群。”#34;如果您没有定义群集,则无法识别群集。有一些方法可以使您的阈值更通用;该比率是让您避免扩展问题的简单方法之一,并且通常是有效的。你可以看看滚动平均值。有各种各样的方法可以使用您的数据,但在那里的某个地方,您必须定义您想要的内容。即使你训练了一些人工智能,理想情况下你应该按照固定的标准来做这个问题,关于什么是集群,什么不是。一旦你有了固定的标准,你就不需要人工智能。

因此,定义一个集群。一旦您可以量化集群对您的意义,您就可以为它制定算法。

首先回答这些问题:

  • 定义群集至少需要多少个峰?
  • 峰值之间是否有最小或最大时间使其不是群集?相对于数据集整个时间的最小或最大时间如何?
  • 群集之间是否存在最小距离,使其成为两个而不是一个?

如果有帮助,请查看这些简化图,以帮助您提出答案。你能为每一个定义一个集群吗?

..||.|.|.|.||

|.|.|.|.|.|.|

||..||..||..|

||....||....|

|...||||.....