我正在处理大量时间序列。这些时间序列基本上是每 10 分钟进行一次的网络测量,其中一些是周期性的(即带宽),而另一些则不是(即路由流量)。
我想要一个简单的算法来进行在线“异常值检测”。基本上,我想将每个时间序列的整个历史数据保存在内存中(或磁盘上),并且我想检测实时场景中的任何异常值(每次捕获新样本时)。实现这些结果的最佳方法是什么?
我目前正在使用移动平均线来消除一些噪音,但接下来呢?简单的东西,比如标准差,疯狂,......对整个数据集都不能很好地工作(我不能假设时间序列是固定的),我想要更“准确”的东西,理想情况下是一个黑盒子,比如:
double outlier_detection(double* vector, double value);
其中 vector 是包含历史数据的 double 数组,返回值是新样本 "value" 的异常分数。