- 时间序列聚类概述
时间序列数据挖掘从技术角度来讲,一般有四种:时间序列预测,时间序列分类,时间序列聚类,时间序列异常检测,基本上包含了机器学习的几大领域。由于时序数据的特殊性,所以每一个方面都与截面数据挖掘有所区别。本文主要讲讲时序聚类中的k-shape算法。
- 时间序列数据的聚类,关键在于如何定义相似度,比如基于时间序列特征(len,max,min,std,lag)作为特征,描述不同时序的特性,可以使用 KMeans算法,用欧式距离进行聚类。
- 除了欧式距离以外,还可以使用DTW等方法,基于动态规划原理,对时间序列进行扭曲,进行必要的错位,计算出最合适的距离,将形状相似的序列具有同一个类,非常简洁的一篇理解DTW计算距离的算法文章见个人所写另一篇博客
- 时间序列聚类的应用
作为一种广泛的数据挖掘手段,时间序列聚类的用途,就个人理解来说,首先是辅助机器学习建模预测,可以把聚类结果作为一种特征放入模型中,当然也可以用于不同序列分类预测的标签,其次是,用于新品预测等,依据形状相似度,找到相似的产品,发现商品潜在的未来规律,等等。
k-shape算法优点就是针对形状计算距离,优点很鲜明,同时不得不说的是计算复杂度很高,且我们使用tslearn包进行聚类,是需要不同的序列长度一致的。
不同形状的时序聚类效果
- 代码部分
本文代码包含以下几方面:
- 1.数据读取与预处理(序列填充,使每条序列等长)
- 2.计算轮廓系数,求出轮廓系数最大时的聚类个数k
- 3.使用最佳聚类个数,得到序列聚类标签
- 4.可视化,绘制elbow线图辅助检验聚类个数是否合理,同时绘制不同序列的聚类效果图。
其他相关参考价值比较大的链接如下:
1.介绍互相关原理与python计算
https://fanyublog.com/2015/11/16/corr_python/
2.记录了使用SBD以及k-shape采坑
https://blog.csdn.net/qq_37960007/article/details/107937212