这篇文章摘自,知乎:https://www.zhihu.com/question/29507442/answer/1212624591?utm_id=0
写的很好,就记录一下。
原文链接:两篇关于时间序列的论文
这次整理的就是清华大学裴丹教授所著的两篇与时间序列相关的论文。一篇是关于时间序列聚类的,《Robust and Rapid Clustering of KPIs for Large-Scale Anomaly Detection 》;另外一篇文章是关于时间序列异常检测的,重点检测时间序列上下平移的,《Robust and Rapid Adaption for Concept Drift in Software System Anomaly Detection》。本文将会整理一下这两篇文章的关键技术点。
在互联网公司中,通常会拥有海量的的时间序列,而海量的时间序列就有着各种各样的形状和走势。因此,就有学者提出可以先对时间序列进行分类,然后根据不同的类使用不同的检测模型来进行异常检测。如果要做时间序列的分类,就先需要做聚类的操作,无论从 KMeans,DBSCAN,还是层次聚类 来说,都会消耗一定的运算时间。所以,如何在较短的时间内进行聚类 或者分类的操作则是这个系统的关键之处。于是,这篇文章提出了一个将时间序列快速聚类 的方法。
时间序列 -> 时间序列分类
-> 根据每一类时间序列使用不同的异常检测模型
而在做时间序列聚类的时候,也有着不少的挑战。通常挑战来自于以下几点:
从整篇论文来看,ROCKA 系统是为了做实时的时间序列分类判断的。要想做成实时的分类判断,就需要有离线和在线两个模块。其中离线是为了做模型训练或者聚类的,在线是为了使用离线处理好的模块来做曲线分类 的。
从整个系统来看,离线模块 需要做以下几件事情:首先需要收集一批时间序列数据,也就是所谓的 Raw Time Series Data(Raw),通过预处理模块,实施基线提取,再进行聚类的操作,获得相应的聚类结果和质心。在线模块同样也要做类似的事情:首先对于每一条新来的时间序列数据 ,也就是所谓的 New Time Series Data(Raw),通过预处理模块,实施基线提取,然后使用已经聚类好的离线模块来进行实时的分类。
下面,我们来逐一分析每个模块的作用。