0

我有一个具有开/关数据的二进制时间序列数据集。这通常是短暂的,因此看起来像一个高峰。这是它的外观。用于检测时间序列信号数据中峰值簇的算法

enter image description here

我已检测到的峰和所述峰之间提取的时间间隔和有数据为它太(在底部小红色2WAY箭头)。问题是,正如我们可以看到的那样,峰值是聚类的,而且我想要对脉冲群大小(群集中的峰值数量),交织间隔(第一个群集的最后一个峰值与第一个峰值之间的距离)进行量化最后一个集群),没有。爆炸等。

一旦识别出集群,这一切都很容易。这可以通过将interpeak间隔设置为大于某个值来轻松完成。但是,我的所有数据都没有这样明确定义的群集,而且这些群体的间隔时间差异很大。一些数据集甚至没有集群。所以我的主要问题是基于一些自动和相对(不固定)阈值来识别群集。

有人可以帮助我一个相同的算法。

+0

做你的功课,并阅读例如核密度估计,甚至检测等。尝试形式化你的群集概念。 –

回答

0

你的问题的答案是:不。没有人可以(但)用你想要的算法来帮助你。

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

我写了一个以前的答案,建议你看看从一个峰值到下一个值的比率。如果这个比率高于某个阈值,那么它是一个集群间的差距,否则它是一个集群内的差距。这可以工作,但它仍然有一个门槛。

问题是 - 你需要一个。你不能只注视每个图表,并说“哦,有一个群集。”如果您未定义群集,则无法识别群集。有办法让你的门槛更通用。该比率是让您避免缩放问题的更简单方法之一,并且通常是有效的。你可以看看滚动平均值。有各种各样的方式来处理你的数据,但是在那里的某个地方,你必须定义你想要的。即使你训练了一些人工智能,你最好应该用一个固定的标准去做什么是群集,哪些不是。一旦你有了固定的标准,你就不需要人工智能。

因此,定义一个集群。一旦你可以量化群集对你意味着什么,你可以为它做一个算法。

开始通过回答这些问题:

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

如果有帮助,看看这些简化的情节,以帮助你拿出你的答案。你能为每一个定义一个群集吗?

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

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

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

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

|...||||..... 
+0

嘿!我的意思是我不想要一个门槛。我只是希望阈值由算法本身设置(也是相对和动态的),而不是手动设置的,因为数据集中存在很多变化。无论如何,你以前的答案引导我思考..如果我可以绘制interpeak时间差的直方图。会有一个缺口,可以通过某些算法来识别,如thos图像阈值...可用于自动化阈值也许.. – Polisetty