如何检测整个系列相对于其他系列是否是异常值?
数据挖掘
分类
时间序列
离群值
2021-09-16 21:00:48
2个回答
要考虑的一种方法是动态时间规整 (DTW),它测量时间序列之间的相似性。DTW 能够比较不同长度的时间序列,所得分数可用于确定样本中哪些序列最独特。您会在许多文章中发现 DTW 与 KNN 分类配合得很好(我个人可以证明该组合取得了成功),因此您可以编写一个脚本来计算 DTW 分数,然后找到距离最远的系列分数其他。
DTW 的一些介绍和有用的页面:
对于人类观察者来说,很明显“A”和“E”是不同的,因为与“B”、“C”和“D”相比,它们在幅度上表现出不同的模式。“E”的轨迹大部分看起来并没有什么不同,它只是以一定的间隔快速上下跳跃。
我的想法是在你的时间跨度内评估你的线在某些窗口的幅度。假设您将双小时振幅作为该窗口中图形的最高点和最低点之间的差,我们称之为, 和 代表您的时间窗口的开始,以及 指示线。然后,您可以在五行之间比较该值。
然后,您可以尝试设置不同的阈值,看看什么效果最好。仅查看此数据后,它将起作用:
- 设置最小阈值为了, 在一些低值。低幅度,或,在财务用例中可能总是错误的。
这将检测到线“A”是异常值,因为 - 设置差异阈值基于上一步中未过滤掉的所有行的值。您可能可以在这里使用标准偏差进行一些数学运算,或者像这样的启发式算法:如果.
然后你可能会发现 远大于“B”“C”和“D”。
希望这可以帮助!
其它你可能感兴趣的问题
