今天来聊一聊时间序列,嗯……为什么聊这个呢,因为近期处理的都是时间序列数据。由于组里是做事后验证的,所以常用的方法其实还是以描述型为主,较少涉及建模预测。当然,今天要讲的内容和大家常看的时间序列分析的内容不一样,这次要讲的是时间序列数据和聚类算法的结合,或许有些冷门。
稍微接触过一些聚类算法的朋友应该都知道,聚类嘛,关键在于求距离矩阵。无论你是用普普通通的欧氏距离,还是用高级的JS散度,总是为了知道各个数据点之间有多大的差异,这种差异就是用距离矩阵来衡量的。那么普通的横截面数据的聚类大家都清楚,无非就是要么按行聚样品,要么按列聚变量,不是Q型聚类就是R型聚类。但时间序列的聚类不一样,如果要对时间序列数据进行聚类,按行聚的话是把各个时间点聚在了一起;按列聚类的话,如果只有一个变量,你和谁去聚?如果有多个变量,你有什么方法去度量时间序列之间的距离?用欧式距离?对列聚类,相当于把行看作变量,把列看作样品,行是时间,你对时间变量求欧式距离?可能可以,但多数情况下怪怪的,最后出来的结果也是差强人意的。
如果说我们要按行聚类,也就是把时间聚在一起的话,也不是不可以,但研究的意义就不对了。我们是想挖掘序列中的信息,你把时间聚在一块,是想研究什么,不同时间点的相似性?周六和周日聚在了一块,周一和周五聚在了一块。乍一看有点东西,似乎能挖到业务知识,但一细想这不是就是weekend和weekday的区别吗?像旅游行业,weekend的每日营业额当然绝大多数的时候都高于weekday了,挖掘不出什么新东西啊。<