时间序列异常检测(PAA及SAX方法)

一般我们使用时间序列都是为预测,最近工作中接触到了工业中的数据,想分析出某款机器运行时,是否出现异常,从而进行相应提醒。

目前还没发现使用时间序列对故障进行预测的文献,很多都是基于时间序列,对工业中的数据进行异常提醒。

本例中的是采用了发动机性能检测的数据,选取了某台发动机的功率参数,原始图形如下:

最终目的是想取到这台发动机最异常点的位置及衡量标准值。

时间序列符号化

将发动机的运行时间按照时间序列进行描述,但一台发动机有两、三千个时间段,为能快速分析,很多情况都会采用时间序列降维的方式,比如常用的就是符号化聚合近似(Symbolic aggregate approximation,SAX),利用分段聚合近似(Piecewise aggregate approximation,PAA)对时间序列进行特征表示。

一般是将时间序列分割成多个子序列,每个子序列是以原始序列的均值来表示,以子序列的值表示原始序列这段时间的值。

 

时间序列形态特征

但是会有这样一个问题,对于时间序列,其实如果只用均值来表示,会丢失一部分信息。比如下面两个图形,均值相同,方差也相同的两个序列,但实际形态不同。

上面两个图形从统计意义来看,其实均值相同,分为了方差相等和不相等两组,从这里可以看到,只用统计值还不能完全将一个时间序列明确的表示出来,还要使用序列的形态特征来表示。形态特征可以使用斜率、角度等来衡量。

 

相似性度量

那如何来衡量各个时间序列的异常情况呢?采用相似性度量,来衡量异常情况。

 

上面发动机的均值和斜率图像如下:

通过上面计算,可以选取平稳序列,也就是斜率没什么变化的序列,进行相似性判断。

伪代码:

最后可以确定最不相似位置在黑色圆框圈出来的地方:

 

出处:https://zhuanlan.zhihu.com/p/44274565
posted @   jingsupo  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律

欢迎光临

点击右上角即可分享
微信分享提示