求解关于动态阈值理解

351 天前
 Cola98

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

800 次点击
所在节点    程序员
2 条回复
liuhuansir
351 天前
你理解的没错,不过业务上不会取相邻数据去做动态阈值计算,而且取历史上同一时刻的值,比如计算下午 2 点的动态阈值,那么可以取过去一周或者一个月每天下午 2 点的值,均值+3 倍标准差算动态阈值,再对当天下午 2 点的实际值做动态阈值异常检测
Cola98
351 天前
@liuhuansir 多谢大佬解答!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/950601

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX