【译】时间序列聚类--从序列数据中得出趋势和原型

436 阅读7分钟

时间序列聚类--从序列数据中得出趋势和原型

使用机器学习来实现时间序列聚类过程的自动化

来源。Unsplash

背景介绍

随着技术的发展,世界上收集的数据量也在成倍增加。大数据,如建筑信息模型、停车交易和公共交通交易,都是丰富而庞大的数据集。然而,它的现有应用往往非常专注于特定的用例。

作为我在新加坡市区重建局(URA)设计与规划实验室实习项目的一部分,我的任务是从大数据中得出趋势。

项目的动机

可视化分析数据的挑战 | 来源:作者

目前,在图表上绘制连续的数据时,视觉上的分析是具有挑战性的 。在有数百万行的数据中,很难 识别和理解趋势。

例如,上图显示了几个月内每天的模式--很明显,至少有一个主要趋势,有一些异常值。然而,要从一个大数据集中知道这些趋势发生的时间**(时间上**)和地点**(空间上**)并不容易。

时间序列聚类的自动化 | 来源:作者

因此,该项目旨在利用机器学习聚类技术,从大数据中自动提取洞察力,节省人工分析趋势的时间。

时间序列聚类

时间序列聚类是一种无监督的数据挖掘技术,用于根据数据点的相似性将其组织成组。其目的是最大限度地提高集群内的数据相似性,并最大限度地减少跨集群的数据相似性。

该项目有2个部分--时间聚类和空间聚类。

时间序列聚类算法

来源:作者

我在顺序数据集上测试了许多时间序列聚类算法。经过仔细分析。 具有动态时间扭曲度量的时间序列K-means ,产生了最准确的结果。因此,我使用这个模型进行后续分析。

用于时间序列聚类的动态时间翘曲(DTW)度量

在时间序列分析中,动态时间扭曲(DTW)是测量两个在时间、速度或长度上不完全一致的时间序列之间的相似性 的算法之一。

来源:tslearn文档

总结一下DTW的方程式。DTW的计算方法是X中每个元素与其_在Y中的最近点_之间的距离平方根之和。

源于此。维基共享资源

例如,我们有两条不同的曲线--红色和蓝色,长度不同。这两条曲线遵循相同的模式,但是,蓝色的曲线比红色的要长。如果我们应用一对一的欧氏匹配(如右图所示),映射并没有完全同步,蓝色曲线的尾部被遗漏了。DTW通过制定 一对多的匹配来解决这个问题,这样一来,相同的模式被完美匹配,两条曲线都没有遗漏(如左图所示)。

聚类评估。剪影得分

a:一个样本与同一类别中所有其他点之间的平均距离。 b: 一个样本与下一个最近的聚类中的所有其他点之间的平均距离。来源。 tslearn

对于聚类性能的评估。 剪影得分被用来作为衡量标准。分数介于**-1+1之间,前者表示不正确的聚类,后者表示高度密集的聚类。分数在0左右表示有重叠的聚类。当集群密集** 且分离良好时,分数会更高 ,这与集群的一个标准概念有关。

来源:作者

看上面的图,两个集群看起来都很相似,结果是0.268的低分。而对于右下角的图,集群分离得很好,有两个不同的趋势,导致了0.655的高分。

第一部分:时间聚类

时间聚类框架 | 来源:作者

时间聚类的目标是创建一个能够自我聚类相同的移动趋势的方法。因此,我们开发了一个聚类 框架来实现这一任务。

1级聚类的结果 | 来源:作者

第一层聚类通常会产生分离度不高的聚类输出。从左上图可以看出,该模型无法将轻微的峰值区分为一个独立的聚类。此外,右边的2个聚类看起来很相似,应该被合并。

因此,需要对集群进行微调。该框架由多个函数组成,以增强结果。一些功能 包括。

  1. 根据集群主趋势线之间的相似度得分与阈值**(t1**),检查是否有可能将2个集群合并为一个集群。
  2. 使用相似性分数与阈值**(t2**)检测集群中的任何离群日期,这将被提取并移入离群的集群中。
  3. 识别任何具有不一致趋势的集群。如果集群中离群日期的百分比超过**(Pmax**),该框架将把集群中的所有日期标记为离群。
  4. 识别一个单一的日期为离群值。如果一个聚类中离群日期的百分比低于**(Pmin**),初始聚类结果将被保留,我们将把检测到的任何离群日期移到 "离群 "聚类中。
  5. 如果离群日期的百分比在**(Pmin**) 和**(Pmax**)之间,那么这个群组就会经过另一轮聚类。

注意:由于框架的复杂性,我不会在这篇文章中解释完整的方法。

输出的例子

通过开发的框架,与仅有1级聚类相比,结果有了明显的改善。我们现在能够观察到从时间序列数据中得出的明显趋势线。

与仅有1级聚类相比,结果有了明显的改善 | 来源:作者

聚类框架的输出将以下列方式进行。

  1. 图形将被绘制出来--主要聚类,然后是离群聚类
  2. 每个聚类的摘要将被打印在底部--每一天的计数和属于每个聚类的日期。

图形将被绘制出来--主要群组,然后是离群组 | 来源:作者

每个群组的摘要将被打印在底部--每天的计数和属于每个群组的日期| 来源:作者

注意:我不会在这篇文章中具体说明所确定的趋势。

第二部分:空间聚类

空间聚类的目的是为每个时间聚类确定相同趋势的地方。有了第一部分产生的时间聚类,我将获得每个单元的周趋势线,并使用类似的框架进行空间聚类,以实现时间性。

周趋势线是如何从每个时间簇中得出的 | 来源:作者

在这项任务中,我对一个特定的区域进行了空间聚类,聚类结果在ArcGIS Pro上可视化。

注:与第一部分类似,我将不强调从空间聚类中获得的输出。

总结说明

从数据中得出趋势和原型只是时间序列聚类的众多应用之一。所开发的框架也可以转移到其他具有连续数据的商业用例中,以获得有价值的洞察力。

实习感想

市建局实习经历|来源:作者

在过去的5个月里,我在市建局的工作经历总结为以上4点。我非常感谢有机会应用我的分析技能,并为这个领域的AI/ML应用做出贡献。此外,我也很感谢我的导师--宋玉、Blossom和Zhongwen,感谢他们把这个项目交给我,让我能够向上层管理人员和外部教授展示这个项目。我真的很感谢他们给予的所有指导和反馈。

如果你想了解更多信息,请随时与我联系 LinkedIn 如果你想了解更多关于这个项目或我在URA设计与规划实验室的经验,请随时联系我 :)

参考文献


Time Series Clustering - Deriving Trends and Archetypes from Sequential Data最初发表于Towards Data Scienceon Medium,人们通过强调和回应这个故事来继续对话。