美文网首页
异常值算法分析(适用场景)

异常值算法分析(适用场景)

作者: 李俊佚 | 来源:发表于2019-07-23 11:14 被阅读0次

    异常值算法分析(适用场景)

    • 箱型图(数字异常值|Numberic Outlier)
      数字异常值方法是一维特征空间中最简单的非参数异常值检测方法,
      异常值是通过IQR(InterQuartile Range)计算得的。
      计算第一和第三四分位数(Q1、Q3),异常值是位于四分位数范围之外的数据点x

      image
      使用四分位数乘数值k=1.5,范围限制是典型的上下晶须的盒子图。这种技术是使用
      KNIME Analytics Platform内置的工作流程中的Numeric Outliers节点实现的。
      箱形图可以很直观的分析数据的离散分布情况,上四分位数与下四分位数的距离越小说明越集中,否则说明越分散,对于上下边缘来说是一样的。
      然后通过中位数偏向于上四分位数还是下四分位数可以来分析数据分布的偏向。
      箱形图还有一个优点是相对受异常值的影响比较小,能够准确稳定地描绘出数据的离散分布情况,会比较有利于数据的清洗。
      • 问题
        1. 箱型图的异常被定义为(-∞, Q1-1.5IRQ)∪(Q3+1.5IQR, +∞),比较依赖于经验值
        2. 不能提供关于数据分布偏态和尾重程度的精确度量
        3. 在处理较大的数据集时,箱型图反应的形状更加模糊
    • 3σ(Z-score)
      Z-score是一维或低维特征空间中的参数异常检测方法。该技术假定数据是高斯分布,
      异常值是分布尾部的数据点,因此远离数据的平均值。
      距离的远近取决于使用公式计算的归一化数据点z i的设定阈值Zthr:

      image
      其中xi是一个数据点,μ是所有点xi的平均值,δ是所有点xi的标准偏差。然后经过标准化处理后,
      异常值也进行标准化处理,其绝对值大于Zthr:
      image
      Zthr值一般设置为2.5、3.0和3.5。该技术是使用KNIME工作流中的行过滤器节点实现的。
      • 问题:
        1. 需要在检测数据满足正态分布的前提下进行,计算异常值是以均值和标准差为基础的
        2. 由于异常值会对均值和标准差造成影响,最终产生的异常值不会超过总数的0.7%,应用
          此方法于非正态分布的数据中判断异常值,其有效性是有限的。
        3. 用既有数据计算μ和σ时,实际上是将正常数据和异常数据混合计算了,当排除掉异常值
          后,剩下的数据总能再计算出一对新的μ和σ,总能再次找到尾部分布的数据
        4. 只适用一维数据,不适用于多特征综合判断
    • 对于完全随机数据, 3σ和箱型图均检测不到异常值。
    • 对于尾重数据和正态分布掺杂的数据, 3σ普遍不如箱型图。

    正态分布掺杂数据时,3σ和箱型图基本一致的几种数据情况

    均值 方差 数量 掺杂数量 异常区间 正态数据和 异常数据和
    2836 3 10w 1024 10w~50w 2.8ww 3ww
    213 19 10w 1024 10w~50w 2000w 3ww
    104 9 10w 1024 10w~50w 1000w 3ww
    1975 2 10w 512 10w~50w 2ww 1.5ww
    1798 11 10w 512 10w~50w 1.8ww 1.5ww
    1346 16 10w 512 10w~50w 1.3ww 1.5ww
    2636 19 10w 512 10w~50w 2.6ww 1.5ww
    106 12 10w 512 10w~50w 1000w 1.5ww
    1944 15 10w 512 10w~50w 2ww 1.5ww
    • 箱型图(生成随机的高斯分布的数据)

      • 箱型图系数取 3
        1. 检测到的异常值数量基本和 随机生成的在高斯分布之外的数据数量保持一致
        2. 可以认为 生成的异常值均可以被检测到
        3. 随着数据量的增大, 会将一些处于正常高斯分布的数据误判为异常值(数据量级基本可以忽略)
      • 箱型图系数取 1.5
        1. 通常,检测到的异常值数量会比 随机生成的在高斯分布之外的数据量更大,
          当正常数据/异常数据≈4时,大约会检测出 5/4 * 异常数据量 的异常数据。
        2. 生成的异常值可以认为均可以被检测到
        3. 检测到的异常数据中大约有 1/6~1/5 是处于高斯分布中的数据。
    • (生成随机的高斯分布的数据)

      • 系数取3
        1. 生成的数据对原高斯分布破坏越小(即最终生成数据应该尽可能地满足高斯分布)计算结果越精确。
        2. 在完全随机生成整型数据的情况下, 随机整体数据的 数据量越大(满足高斯分布的数据占据更高的比重), 3σ 就有更多的数据无法检测到,但 整体比例呈下降趋势
        3. 几乎可以认为3σ 没有误判数据
    1. 正常数据和尾数据 数据量对比为 8 / 2, 正常数据取值为[n , 2n), 尾重数据取值[4n, 6n) n = 2 ^ 28
    • 3σ 无法检测到异常值
    • 箱型图 几乎不会数据误判(将正常数据当作异常数据), 且大多数情况下检测出的异常值数量和实际相差较小
      (但有0.2左右的几率 与实际相差很大)
    1. 正常数据和尾数据 数据量对比为 8 / 2, 正常数据取值为[n , n²), 尾重数据取值[2n², 3n²) n=2^10
    • 3σ 无法检测到异常值
    • 箱型图几乎不存在误判, 但未检测到的异常值较多(倍数级别大于检测到的异常值)
    1. 正常数据和尾数据 数据量对比为 9 / 1, 正常数据取值为[n , n²), 尾重数据取值[2n², 3n²) n=2^10
    • 3σ 大约可以检测到 3 / 8 的异常值, 不存在误判
    • 箱型图不存在误判, 大约可以检测到 5 / 8的异常值
    1. 正常数据和尾数据 数据量对比为 9 / 1, 正常数据取值为[n , 10n), 尾重数据取值[20n, 30n) n=2^10
    • 3σ 和箱型图均不存在误判
    • 箱型图在大多数情况下要比3σ找出异常值的能力强2倍左右
    尾重数据, 数据量 8 / 2
     8[left, right), 2[right, 3*right)
    
     箱型图
     数据量 9 / 1, 异常数据区间 [2Right, 3Right)      √
     数据量 8 / 2, 异常数据区间 [2Right, 3Right)      √
     数据量 7 / 3, 异常数据区间 [2Right, 3Right]      ×
    在[尾重数据最小值 绝对大于 正常数据最大值的2倍] 且占比超过 1 / 4  箱型图统计异常
    在[尾重数据最小值 绝对大于 正常数据最大值的1.5倍] 且占比超过 1 / 4  箱型图统计异常
    
    
    
    当尾重数据占比 >= 3/10时箱型图统计出现问题
    

    补KMeans (认为 距离 中心点的距离大于 距离中心点最远距离的 2 / 3即为异常数据 )

    • 大致符合正态分布的数据
      KMeans会检测到 比箱型图和3σ(箱型图和3σ基本稳定在0~1之间)更多的异常值, 且随基础数据量的增大而增大
    • 尾重数据 (取正常数据和尾重数据的数量比为 8 / 2)
      KMens基本不存在误判的数据, 但会有 大约 1 / 10的异常值(去重)不能被检测到
    • 正态分布数据掺杂
      测试中掺杂的数据取值范围在 [0, (平均数 + 1) * (总数据量 * 0.2))
      此时KMeans检测到异常值的能力依然很差, 但相比检测符合正态分布的数据 较强
      (也存在一定可能性: 掺杂后的数据满足了另一个正态分布, 或者掺杂的数据中存在一部分是处于正态分布的区间)

    相关文章

      网友评论

          本文标题:异常值算法分析(适用场景)

          本文链接:https://www.haomeiwen.com/subject/rbholctx.html