时序数据异常检测(2)指数平滑方法

25 篇文章 0 订阅
15 篇文章 0 订阅

上文我们使用LOF-ICAD方法实现了时序数据的异常检测, 这次我们介绍一种更为常见的方法-------指数平滑.

指数平滑的方法, 其原理就是通过拟合出一个近似的模型来对未来进行预测, 我们可以通过这个预测来和实际的值进行比较, 如果差距过大, 我们就可以判定这个点是异常的.

首先我们介绍一下一阶指数平滑的算法

###一阶指数平滑算法
这里给出一些符号的定义:

  1. 序列长度记为n, 参数记为α(指数平滑算法只有一个参数)

  2. 时序序列的定义:
    时序数据序列

  3. 拟合序列的定义:
    拟合数据序列

对于一阶指数平滑而言
迭代过程

这里我们需要定义一下初始值, 一般来说, 我们可以令初值是前3个数据的平均值:
初始值设置

我们通过这样的设置之后, 便可以利用初始值不断迭代出下一步的拟合值, 也就是通过t0可以不断推到tn的值, 但是这样带来的效果可能会很差, 因为参数α可能是不准确的, 那么迭代下去误差会越来越大, 我们必须解决这个问题, 这里我们先搁置, 讲一讲二阶指数平滑

###二阶指数平滑算法

二阶指数平滑相对于一阶指数平滑算法只是增加了迭代的次数, 使得拟合的精度相对提高了

这里我们给出相应的迭代的细节:

迭代细节

对于未来T期的估计

对未来的估计

其中

参数细节

好了, 我们接下来就需要解决α参数的优化问题, 我们需要一种学习算法来使得误差变小, 以往的算法是使用动态规划, 这里我们使用随机梯度下降策略, 给出具体的细节
###随机梯度下降法策略

随机梯度下降法, 需要我们去求部分偏导数, 这里我们首先给出初始的梯度计算, 以及一般性的梯度计算
初始梯度计算

一般性梯度计算

定义损失函数:
Loss

根据上述偏导数, 我们就可以给出迭代的具体过程:

具体迭代过程

到此, 我们便给出了一阶和二阶指数平滑的算法以及利用梯度下降来对参数进行优化的方法

具体代码的实现以及使用的细节可以到我的github项目中进行查看:
https://github.com/MezereonXP/AnomalyDetectTool

欢迎大家star~~, 有任何的问题可以提issue或者发送邮件到我的邮箱mezereonxp@gmail.com

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于密度的时序数据异常检测方法是一种常用的异常检测方法,其优缺点如下: 优点: 1. 适用性广:基于密度的方法适用于各种类型的数据,包括连续和离散的数据,可以用于时间序列、图像、文本等各种数据类型。 2. 精度高:基于密度的方法能够准确地检测数据中的异常点,能够发现各种类型的异常。 3. 无需标签数据:基于密度的方法通常不需要标签数据,即可以进行无监督学习,从而节省了人力成本。 4. 可解释性强:基于密度的方法可以通过计算数据点的密度来判断其是否为异常点,因此可以直观地解释检测结果。 缺点: 1. 计算复杂度高:基于密度的方法需要计算每个数据点与其他数据点之间的距离或相似度,因此对于大规模数据集,计算复杂度较高。 2. 敏感性差:基于密度的方法对于噪声点和局部异常点比较敏感,对于全局异常点的检测效果较差。 3. 数据分布要求高:基于密度的方法数据的分布有一定的要求,如果数据分布较为稀疏或不均匀,可能会出现误判。 4. 参数选择困难:基于密度的方法需要选择合适的密度估计方法和参数,这对于非专业人员来说可能比较困难。 综上所述,基于密度的时序数据异常检测方法在实际应用中需要根据具体情况进行选择和调整,以充分发挥其优势,提高检测精度和鲁棒性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值