- 时间序列聚类概述
时间序列数据挖掘从技术角度来讲,一般有四种:时间序列预测,时间序列分类,时间序列聚类,时间序列异常检测,基本上包含了机器学习的几大领域。由于时序数据的特殊性,所以每一个方面都与截面数据挖掘有所区别。本文主要讲讲时序聚类中的k-shape算法,和以往的风格一样,重在算法实现。
时间序列数据的聚类,关键在于如何定义相似度,比如基于时间序列特征(len,max,min,std,lag)等可以使用 KMeans算法进行聚类。除了使用欧式距离以外,还可以使用DTW等方法,基于动态规划原理,对时间序列进行扭曲,进行必要的错位,计算出最合适的距离,依据时序数据的形状相似性,讲形状相似的序列具有同一个类,也就是本文要展示的k-shape算法。
- 时间序列聚类的应用
如果关注不同序列在统计特性上的差异,那么可以提取时许的统计特征,基于提取的统计等特征进行计算欧式距离的KMeans的聚类,如果关注形状的相似,那么可以使用执行dtw计算距离的k-shape聚类。另外,如果想要捕捉时序的动态特性,也是可以使用深度学习的seq2seq对隐式向量进行聚类。
作为一种广泛的数据挖掘手段,时间序列聚类有哪些用途呢,就个人理解来说,首先是辅助机器学习建模预测,可以把聚类结果作为一种特征放入模型中,当然也可以用于不同序列分类预测的标签,其次是,用于新品预测等,依据形状相似度,找到相似的产品,发现商品潜在的未来规律,等等。
k-shape算法优点就是针对形状计算距离,优点很鲜明,同时不得不说的是计算复杂度很高,且我们使用tslearn包进行聚类,是需要不同的序列长度一致的。
不同形状的时序聚类效果
-
代码部分
本文代码包含以下几方面:
1.数据读取与预处理(序列填充,使每条序列等长)
2.计算轮廓系数,求出轮廓系数最大时的聚类个数k
3.使用最佳聚类个数,得到序列聚类标签
4.可视化,绘制elbow线图辅助检验聚类个数是否合理,同时绘制不同序列的聚类效果图。
完整代码和数据