如何检测异常点

数据挖掘 统计数据 可视化 异常检测 离群值 异常
2022-03-03 15:48:00

从图中可以清楚地看出,不跟随趋势的蓝点是异常点。

我想知道检测这些点的最佳非参数方法。我已经测试了一些异常值检测方法,例如标准偏差等,但是从图中可以清楚地看出它们并没有提供好的结果。

在此处输入图像描述

4个回答

在您的示例中,区分集群的不是原始值,而是与先前点的快速偏离。我可能会研究变化点检测。非参数,但仍需要调整参数。

我会推荐一个滚动平均值,它可以非常稳健,并且不会因随着时间的缓慢变化而不安。然后,您可以使用现有数据来确定您希望在哪个偏差级别发出警报。这种优化取决于您是想要捕获大部分偏差还是最小化误报警报的数量。

EDIT1:最后你总是需要调整参数。没有真正的基本事实。异常总是一个主观的东西。

一种解决方案是使用 DBSCAN 算法对数据进行聚类。然后,如果您为 DBSCAN 算法设置适当的半径,您将获得三个集群。因此,您可以将某些集群检测为成员数小于阈值的异常。

尝试使用中点估计(每次的预期值)和波段估计(任何给定中点的允许分布)对时间序列进行建模。那么成为异常只是在乐队之外的问题。

如何估计中点取决于问题。例如,如果您的时间序列有一个或多个季节性,您可以使用时间序列分解(例如,使用黄土的季节性趋势分解)。频带估计也取决于问题。

我为预订数据时间序列做了一些这样的工作。我在这里写过:https ://techblog.expedia.com/2016/07/28/applying-data-science-to-monitoring/