今天来聊一聊时间序列,嗯……为什么聊这个呢,因为近期处理的都是时间序列数据。由于组里是做事后验证的,所以常用的方法其实还是以描述型为主,较少涉及建模预测。当然,今天要讲的内容和大家常看的时间序列分析的内容不一样,这次要讲的是时间序列数据和聚类算法的结合,或许有些冷门。
稍微接触过一些聚类算法的朋友应该都知道,聚类嘛,关键在于求距离矩阵。无论你是用普普通通的欧氏距离,还是用高级的JS散度,总是为了知道各个数据点之间有多大的差异,这种差异就是用距离矩阵来衡量的。那么普通的横截面数据的聚类大家都清楚,无非就是要么按行聚样品,要么按列聚变量,不是Q型聚类就是R型聚类。但时间序列的聚类不一样,如果要对时间序列数据进行聚类,按行聚的话是把各个时间点聚在了一起;按列聚类的话,如果只有一个变量,你和谁去聚?如果有多个变量,你有什么方法去度量时间序列之间的距离?用欧式距离?对列聚类,相当于把行看作变量,把列看作样品,行是时间,你对时间变量求欧式距离?可能可以,但多数情况下怪怪的,最后出来的结果也是差强人意的。
如果说我们要按行聚类,也就是把时间聚在一起的话,也不是不可以,但研究的意义就不对了。我们是想挖掘序列中的信息,你把时间聚在一块,是想研究什么,不同时间点的相似性?周六和周日聚在了一块,周一和周五聚在了一块。乍一看有点东西,似乎能挖到业务知识,但一细想这不是就是weekend和weekday的区别吗?像旅游行业,weekend的每日营业额当然绝大多数的时候都高于weekday了,挖掘不出什么新东西啊。
那么按列聚类,就必须知道怎么去衡量各个时间序列之间的相关性。如果你遇到一个人,告诉直接kmeans(data, k = best_k),想无中生友,这边建议你还是华农一笑比较好。目前衡量时间序列的距离,也不是没有办法,有一种常用的针对时间序列的距离衡量方法,叫做DTW,也就是动态时间规整。DTW算法基于动态规划(DP)的思想,之前用于语音识别,它能解决了发音长短不一的模板匹配问题,是语音识别中出现较早、较为经典的一种算法,用于孤立词识别。但DTW算法和HMM(隐马尔可夫模型)比又比较Low,DTW算法由于没有一个有效地用统计方法进行训练的框架,也不容易将低层和顶层的
时间序列聚类:理解DTW算法

本文探讨了时间序列聚类的特殊性,强调了衡量时间序列间距离的重要性。介绍了DTW(动态时间规整)算法作为解决非等长时间序列距离计算的有效方法,及其在聚类中的应用。此外,还指出了时间序列长度对聚类的影响以及可能涉及的高维时间序列降维问题。
最低0.47元/天 解锁文章
1188

被折叠的 条评论
为什么被折叠?



