时间序列异常事件检测

 一、异常数据挖掘简介:

     异常数据挖掘,又称为离群点分析或者孤立点挖掘。在人们对数据进行分析处理的过程中,经常会遇到少量这样的数据,它们与数据一般模式不一致,或者说与大多数样相比有些不一样。我们称这样的数据为异常数据,对异常数据的处理在某些领域很有价值,例如在网络安全领域,可以利用异常数据挖掘来分析网络中的异常行为;在金融领域异常数据挖掘可以识别信用卡的欺诈交易、股市的操控行为、会计信息的虚假报价、欺诈贷款等。

异常数据挖掘其中又包含时间序列和非时间序列。非时间序列主要为发现异常的点集,其中各事件的发生无先后顺序,一般的探测手法为使用距离度量进行聚类、分类等操作,发现事件中的离群点。而时间序列各点、各时间的发生需要考虑先后顺序,各点、各事件之间存在一定的递推关系,对单个点进行挖掘分析并无太大的价值,因此挖掘需要考虑各事件之间的先后逻辑关系、递推关系,相对于非时间序列挖掘的难度更大,同时时间的跨度可以达到几年、几十年甚至更久。

       举2个比较典型的时间序列分析的例子:1、对气象信息,受到季度、年份、太阳活动的影响,通常的挖掘分析需要考虑若干年的数据,2、又比如人体身体状况的预测告警,需要考虑的信息包括作息、饮食、各项身体指标、年龄等诸多维度的信息,而这些维度在时间上又是累计的,挖掘过程需要考虑这诸多维度信息之间的关系以及随着时间递推 各维度信息发生的微妙变化,进而发现可能即将发生的身体疾病进行提前预警。

二、时间序列异常数据挖掘几个常见算法:

(1)小波分析用于时间序列异常数据挖掘:小波的特点在于能够提供受分析序列在时间域、频率域上两个维度的特征,小波变换最初应用于信号滤波,因此使用者相对比较熟悉算法的原理及实现方式,后来引入时间序列分析,在机械故障诊断、供电系统分析等方面取得了很有的成效。但由于时间序列分析通常是实时性的,小波分析的计算量相对较大,因此限制了其在计算、硬件资源有限的移动设备上的应用。

(2)排列熵应用于时间序列异常数据挖掘:排列熵算法自2002年问世以来、便受到了学界、工业界的关注,该算法为度量时间序列复杂性的一种方法,由于很多正常时间序列受动力因素的影响,其序列往往简单、并具备一定的规律性,若系统失去动力驱动或者收到外界动力的扰动,信号也会变得扰动“不安”,这时其排列熵值出现上升。比如脑电受到个人意念思想的控制,其在时间维度上其电压值保持较为稳定、有规律的状态,而癫痫病人发作时,其脑电波变得混乱不堪,这时的熵值也维持在较高值。排列熵的简要计算过程如下:

设一维时间序列:


采用相空间重构延迟坐标法对X中任一元素x(i)进行相空间重构,对每个采样点取其连续的m个样点,得到点x(i)的m维空间的重构向量:


则序列X的相空间矩阵为:


其中m和l分别为重构维数和延迟时间;

对x(i)的重构向量Xi各元素进行升序排列,得到:


这样得到的排列方式为


其为全排列m!中的一种,对X序列各种排列情况出现次数进行统计,计算各种排列情况出现的相对频率作为其概率p1、p2、…pk,k<=m!,计算 序列归一化后的排列熵:

      相对来说,排列熵的计算过程较为简洁,计算量主要为k次序列长度为m的全排序,在满足功能的前提下,窗口可以尽量的小,同时,窗口大小和延迟l值的大小选取非常重要。排列熵H的大小表征时间序列的随机程度,值越小说明该时间序列越规则,反之,该时间序列越具有随机性。在排列熵算法的基础上也可以发展出诸多使用熵值的对时间序列进行异常检测的算法,由于涉及工作内容,在此不多做阐述。

有关排列熵算法可以参考一下两篇论文:

1、Christoph Bandt、Bernd Pompe两位先生的:Permutation Entroy:A Natural Complexity Measure For Time Series

2、关于排列熵应用领域的介绍:Permutation Entropyand Its Main Biomedical and Econophtsics Application:A Review

谷歌均有免费下载。


关于时间序列的数据挖掘分析,还有很多算法及方法,后面有空将陆续整理出来,共同学习。


  • 6
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
时间序列异常检测是指通过对时间序列数据进行分析,识别出其中的异常点,即与正常数据波动规律有显著差异的数据点。对于时间序列异常检测任务,Python提供了多种库和算法。 一种常用的Python库是`statsmodels`,它是一个强大的统计分析库,可以用于时间序列的建模和分析。其中的`outliers_influence`模块提供了许多用于异常检测的统计方法和函数,例如`OLSInfluence`类可以通过计算残差、杠杆值和学生化残差等指标来检测异常点。 另一个常用的Python库是`pyculiarity`,它是基于R语言遗留的`anomalize`库开发的,用于时间序列异常检测异常值替换。`pyculiarity`包含了一系列的异常检测算法,例如`esd_test`可以基于指数平滑分解(Exponential Smoothing Decomposition)检测异常点。 此外,还有一些用于时间序列异常检测的专用库,如`anomaly_detection`和`pyod`。`anomaly_detection`库提供了多种统计和机器学习方法,如基于均值和标准差的Z分数法、基于百分位数的箱线图法和基于自动编码器的深度学习方法等。`pyod`库是一个专门用于异常检测的库,提供了多种经典和先进的异常检测算法,包括基于聚类的LOF算法、基于距离的KNN算法和基于孤立森林(Isolation Forest)的算法等。 总之,Python提供了多种用于时间序列异常检测的库和算法,可以根据具体需求选择合适的方法进行异常检测和分析。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值