首页 > 解决方案 > 时序数据聚类算法推荐

问题描述

我是聚类分析的新手,正在使用 Python sklearn.cluster 模块来分析我的数据。到目前为止我没有任何运气,所以我想寻求建议。我的数据包括几个世纪以来某些日期的事件计数(更具体地说,是教堂登记册中记录的洗礼、婚姻或葬礼的数量)。所以我的数据实际上可以表示为一个简单的整数向量:[5,0,0,0,1,0,0,2,0,1.....] 其中表示每一天,但事件计数可能为零。我实际上想确定记录保存中可能存在的差距,我认为我可以将事件分组,然后查看集群之间的差距。这并不像报告连续日期之间的差距是否超过某个阈值那么简单,因为它实际上取决于每天记录的事件数量和记录频率。例如,假设在几年内每月发生 30 个事件,然后在 3 个月内每周仅发生 1 个事件,然后在几年内再次增加到每月 30 个事件。在这种情况下,我会说在 3 个月期间可能会出现事件数量急剧减少的间隙,即使在此期间发生了一些事件。换句话说,“差距”并不意味着在很长一段时间内事件为零。相反,它将通过特定时期内的事件总计数相对于前一时期和后续时期的计数的变化来指示。然后每周只有 1 个事件,持续 3 个月,然后再次增加到每月 30 个事件,持续数年。在这种情况下,我会说在 3 个月期间可能会出现事件数量急剧减少的间隙,即使在此期间发生了一些事件。换句话说,“差距”并不意味着在很长一段时间内事件为零。相反,它将通过特定时期内的事件总计数相对于前一时期和后续时期的计数的变化来指示。然后每周只有 1 个事件,持续 3 个月,然后再次增加到每月 30 个事件,持续数年。在这种情况下,我会说在 3 个月期间可能会出现事件数量急剧减少的间隙,即使在此期间发生了一些事件。换句话说,“差距”并不意味着在很长一段时间内事件为零。相反,它将通过特定时期内的事件总计数相对于前一时期和后续时期的计数的变化来指示。t 意味着在很长一段时间内发生零事件。相反,它将通过特定时期内的事件总计数相对于前一时期和后续时期的计数的变化来指示。t 意味着在很长一段时间内发生零事件。相反,它将通过特定时期内的事件总计数相对于前一时期和后续时期的计数的变化来指示。

所以这似乎是一个基于密度的聚类问题。我将拥有可变密度的集群,但我不知道会有多少,所以我不能使用像 KMeans 这样要求你知道有多少集群的算法。我尝试了 HDBSCAN,但它发现集群在时间上甚至不连续,也就是说,集群 1 由一系列日期组成,然后是集群 2,然后回到集群 1,这对我的数据没有意义。我没有足够的经验来了解许多算法的优点、缺点和要求,但我想建议从 sklearn 中尝试什么,或者至少在 python 中可用的东西。

标签: scikit-learntime-seriescluster-analysis

解决方案


开箱即用的集群不能神奇地解决您的问题。就其本质而言,聚类是一种脆弱的方法,需要通过适当的预处理来仔细引导。

在这里,我认为您应该研究时间序列分割而不是聚类。因为这些方法实际上使用了时间信息。


推荐阅读