时间序列异常检测(PAA及SAX方法)
一般我们使用时间序列都是为预测,最近工作中接触到了工业中的数据,想分析出某款机器运行时,是否出现异常,从而进行相应提醒。
目前还没发现使用时间序列对故障进行预测的文献,很多都是基于时间序列,对工业中的数据进行异常提醒。
本例中的是采用了发动机性能检测的数据,选取了某台发动机的功率参数,原始图形如下:
最终目的是想取到这台发动机最异常点的位置及衡量标准值。
时间序列符号化
将发动机的运行时间按照时间序列进行描述,但一台发动机有两、三千个时间段,为能快速分析,很多情况都会采用时间序列降维的方式,比如常用的就是符号化聚合近似(Symbolic aggregate approximation,SAX),利用分段聚合近似(Piecewise aggregate approximation,PAA)对时间序列进行特征表示。
一般是将时间序列分割成多个子序列,每个子序列是以原始序列的均值来表示,以子序列的值表示原始序列这段时间的值。
时间序列形态特征
但是会有这样一个问题,对于时间序列,其实如果只用均值来表示,会丢失一部分信息。比如下面两个图形,均值相同,方差也相同的两个序列,但实际形态不同。
上面两个图形从统计意义来看,其实均值相同,分为了方差相等和不相等两组,从这里可以看到,只用统计值还不能完全将一个时间序列明确的表示出来,还要使用序列的形态特征来表示。形态特征可以使用斜率、角度等来衡量。
相似性度量
那如何来衡量各个时间序列的异常情况呢?采用相似性度量,来衡量异常情况。
上面发动机的均值和斜率图像如下:

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


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

-------------------------------------------
个性签名:无论在哪里做什么,只要坚持服务、创新、创造价值,其它的东西自然都会来的。
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律