V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Cola98
V2EX  ›  程序员

求解关于动态阈值理解

  •  
  •   Cola98 · 326 天前 · 788 次点击
    这是一个创建于 326 天前的主题,其中的信息可能已经有所发展或是发生改变。

    之前因为 K8S 资源相关想做一个动态阈值异常检测的模块,但是看了 gpt 和国内文章感觉越来越被带偏,以下是个人理解不晓得对不对,综合这以下例子:

    {
      "InputTimeSeries": {
        "0": 100, //请求时间 阈值
        "1": 120,
        "2": 150,
        "3": 200,
        "4": 180,
        "5": 220,
        "6": 300,
        "7": 280,
        "8": 240,
        "9": 190
      }
    }
    

    如果使用静态阈值,我们首先需要通过历史数据来判断该组件以往的请求值,设置阈值为 200 ,而被检测出来的异常是 t5-t8 。

    而动态阈值选择前后对比的方式,通过对比值结果去进行检测:

    1. 计算每个数据点与其前一个数据点的差值。
    2. 根据差值的统计信息(例如均值、标准差)确定动态阈值

    它的差异是[20, 30, 50, -20, 40, 80, -20, -40, -50],根据差异的统计信息,例如均值为 15 ,标准差为 41.13 ,我们可以将动态阈值设置为均值加上两倍的标准差,即 15 + 2 * 41.13 = 97.26 。

    也就说,差异值如果超过了 97.26 ,就会被认为是异常值,这里加入一个新的值 t10: 300 ,差异值超过 97.26 ,则认为 t10 是一个异常点。

    97.26 是否可以理解成一个动态阈值算出来的固定阈值呢? 这是我对动态阈值的理解: 动态阈值是根据算法进行对比,比如说前后两个值的差异超过了阈值就会被认为是异常,但是阈值应该是不断变化的吧?

    2 条回复    2023-06-21 13:55:57 +08:00
    liuhuansir
        1
    liuhuansir  
       326 天前   ❤️ 1
    你理解的没错,不过业务上不会取相邻数据去做动态阈值计算,而且取历史上同一时刻的值,比如计算下午 2 点的动态阈值,那么可以取过去一周或者一个月每天下午 2 点的值,均值+3 倍标准差算动态阈值,再对当天下午 2 点的实际值做动态阈值异常检测
    Cola98
        2
    Cola98  
    OP
       326 天前
    @liuhuansir 多谢大佬解答!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1057 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 22:48 · PVG 06:48 · LAX 15:48 · JFK 18:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.