时序异常检测算法汇总

时序异常检测算法

一、ADTK无监督异常检测方法汇总:

  1. ThresholdAD将每个时间序列值与给定阈值进行比较
  2. QuantileAD将每个时间序列值与历史分位数进行比较
  3. InterQuartileRangeAD另一个广泛使用的基于简单历史统计的检测器是基于四分位距 (IQR)。当值超出定义的范围时 [Q1−c×IQR, Q3+c×IQR] 在哪里 IQR=Q3−Q1 是 25% 和 75% 分位数之间的差异。在只有一小部分甚至没有训练数据异常的情况下,此检测器通常优于 QuantileAD。
  4. GeneralizedESDTestAD基于广义极端学生偏差 (ESD) 测试检测异常。该检测器对历史数据执行广义极端学生偏差 (ESD) 测试 ,并识别正常值与异常值进行训练。为了进行预测,检测器将测试序列中的每个值独立地添加到训练序列的正常值集合中,并对该集合进行广义 ESD 测试(训练序列的所有正常值,加上测试序列的一个值),以评估是否感兴趣的价值是一个异常值。请注意,广义 ESD 测试的一个关键假设是正态值服从近似正态分布。请仅在此假设成立时使用此检测器。
  5. PersistAD将每个时间序列值与其先前的值进行比较,根据前一周期的值检测异常。此检测器将时间序列值与其先前时间窗口的值进行比较,如果值与其先前平均值或中值的变化异常大,则将时间点识别为异常。默认情况下,PersistAD只检查一个先前的值,这在短期范围内擅长捕捉加性异常,但在长期范围内则不适合。我们可以将参数 window 更改为大于 1 的数字,检测器会将一个值与其前一个时间窗口的中值或平均值进行比较。这将捕捉到中长期尺度的异常变化。
  6. LevelShiftAD通过跟踪彼此相邻的两个滑动时间窗口的中值之间的差异来检测值水平的变化。它对瞬时尖峰不敏感,如果经常发生嘈杂的异常值,它可能是一个不错的选择。
  7. VolatilityShiftAD通过跟踪彼此相邻的两个滑动时间窗口的标准偏差之间的差异来检测波动率水平的变化,如果两个时间窗口中波动率测量值的差异异常大,则将其间的时间点识别为波动率偏移点。
  8. SeasonalAD检测异常违反季节性模式,该检测器使用季节性分解变换器来去除季节性模式(以及可选的趋势),并在季节性分解的残差异常大时将时间点识别为异常。
  9. AutoregressionAD检测时间序列中自回归行为的异常变化,许多时间序列具有自回归行为。例如,在线性自回归时间序列中,当前值是多个先前值的线性组合。违反通常的自回归行为可能表明异常。检测器应用回归器来学习时间序列的自回归特性,并在自回归残差异常大时将时间点识别为异常。该方法适用于明确周期性的情况下使用,如周期为一天,采样频率为分,则可以分别设置 n_steps 和 step_size 为 7 和 1440。
  10. MinClusterDetector将多元时间序列视为高维空间中的独立点,将它们划分为集群,并将最小集群中的值标识为异常。检测器使用聚类模型进行聚类,如果时间点属于最小聚类,则将其识别为异常。这可能有助于捕获高维空间中的异常值。
  11. OutlierDetector执行多变量与时间无关的异常值检测并将异常值识别为异常。多元异常值检测算法可以是 scikit-learn 或其他遵循相同 API 的包中的算法。
  12. RegressionAD通过跟踪回归误差检测多元序列之间通常关系的异常违反,该检测器执行回归以建立目标序列与其余序列之间的关系,并在回归残差异常大时将时间点识别为异常。
  13. PcaAD对多变量时间序列(每个时间点作为高维空间中的一个向量)执行主成分分析 (PCA) 并跟踪这些向量的重构误差。该检测器对多元时间序列进行主成分分析(每个时间点都被视为高维空间中的一个点),测量每个时间点的重构误差,并且当重构误差超过异常区间时,识别此时间点为异常点。当正常点应该位于较低等级的流形上而异常点不是时,此检测器可能会有所帮助。

二、隔离森林算法:

基础概念:隔离森林(Isolation Forest)又名孤立森林,是一种从异常点出发,通过指定规则进行划分,根据划分次数进行判断的异常检测方法。
核心思路:循环分割(隔离),越容易被分割的判定为异常可能性越大。因为异常具有“少而不同”这一特点,所以异常数据比正常数据更容易被隔离。利用隔离森林,完成分割后,在最终形成的树中,异常将更加接近于根的位置。

三、LOF 算法:

基础概念:LOF (Local Outliers Factor,局部异常因子) 算法 是一种非监督异常检测算法,它是通过计算给定数据点相对于其邻域的局部密度偏差而实现异常检测。
核心思路: LOF算法是通过比较每个点p和邻域点的密度来判断该点是否为异常:点p的密度越低,越有可能是异常点。而点的密度是通过点之间的距离来计算的,点之间距离越远,密度越低;距离越近,密度越高。也就是说,LOF算法中点的密度是通过点的k邻域计算得到的,而不是通过全局计算得到,这里的"k邻域”也就是该算法中“局部”的概念。

四、One-Class SVM 算法:

基础概念:One-Class SVM是一种无监督算法,它学习用于新颖性(novelty)检测的决策函数:将新数据分类为与训练集相似或不同的数据。严格来说,One-Class SVM 不是一个异常点检测算法,而是一个新颖值检测(Novelty Detection)算法。换句话说,在One-Class SVM 将所以与正常数据有一定区别的都当成新颖数据,而我们根据实际需要设定边界,才认为超出边界的数据为异常数据。One-Class SVM 算法与SVM算法的原理以及数学模型基本相同。总而言之就是寻找一个超平面,使用这个超平面把正常数据和异常数据(或称之为新颖数据)划分开,这是SVM算法的基本思想,而One-Class SVM 是基于一类数据(正常数据)求超平面,对 SVM 算法中求解负样本最大间隔目标进行改造,进而完成非监督学习下的异常检测。
算法特点
(1)是一种非监督学习算法
(2)是一种基于正常数据的特征进行异常检测的算法,和正常数据特征相似的数据被认为是正常数据,否则则认为是异常数据
(3)比较适用于高维空间中的样本数据集

五、3-sigma算法:

基础概念:3-sigma算法数据需要服从正态分布。在3∂原则下,异常值如超过3倍标准差,那么可以将其视为异常值。正负3∂的概率是99.7%,那么距离平均值3∂之外的值出现的概率为P(|x-u| 3∂) = 0.003,属于极个别的小概率事件。如果数据不服从正态分布,也可以用远离平均值的多少倍标准差来描述。检测一段时间的统计数据,假如符合正态分布,计算均值与方差。如果后来的统计值不在这个范围3sigma范围内,就可以认为这个值是异常值。

六、prophet算法:

基础概念:prophet模型是由facebook公司开发出的,它是一种拥有交互方式的时间序列预测模型,非常简单实用。prophet模型拥有加法和乘法两种不同的模型来拟合数据并预测未来值,其拟合速度特别快。prophet模型可以很好的拟合节假日和趋势突变点等特殊时间的影响,也可以自动填补缺失值,不需要做大量的数据预处理工作,还具有灵活的周期性调整能力,适用于不同的数据预测。

七、基于高斯概率密度异常检测算法

基础概念:首先,该算法假设数据集服从高斯分布的,然后再分别计算训练集在空间中的重心, 和方差, 然后根据高斯概率密度估算每个点被分配到重心的概率,进而完成异常检测任务。
算法特点
(1)是一种非监督算法
(2)适用于大致服从高斯分布的数据集
(3)不适用于高维特征数据集。样本数目(n_samples) 应该大于特征数目的平方(n_features**2)

八、KDE核密度估计:

基础概念:用平滑的峰值函数(“核”)拟合观察点,对真实的概率分布曲线模拟。
“核”是一个函数,提供权重。如高斯函数 (Gaussian) 就是常用的核函数,如果某一个数在观察中出现了,认为这个数的概率密度很大,与该数较近的数的概率密度也会比较大,离这个数远的数的概率密度会比较小。

九、自编码器(Auto-Encoder)

基础概念:Auto-Encoder,中文称作自编码器,是一种无监督式学习模型。它基于反向传播算法与最优化方法(如梯度下降法),利用输入数据 X 本身作为监督,来指导神经网络尝试学习一个映射关系,从而得到一个重构输出 XR 。在时间序列异常检测场景下,异常对于正常来说是少数,所以我们认为,如果使用自编码器重构出来的输出 XR 跟原始输入的差异超出一定阈值(threshold)的话,原始时间序列即存在了异常。

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏秃然

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值