我正在解决一个问题,即异常值检测的自动化。为此,我需要一种算法来检测异常值。
我了解了z得分和分位数范围。但是z分数仅适用于正态分布的数据。并且不确定分位数范围是否适用于每种数据(即使它遵循高斯分布,泊松分布)。我也阅读了有关DBSCAN的文章,但不知道这种方法的可信性
任何人都可以在python中为我建议一些算法或软件包,以用于离群值检测的自动化。
我正在寻找某种算法,甚至研究论文都可以,以后可以在python中进行编码。
下面供参考的是我必须在其中查找异常值的数据示例之一。
月销售单位 1 23178.78 2 23547.41 3 17720.51 4 25837.56 5 20375.98 6 16260.64 7 22881.59 8 25202.29 9 17255.29 10 20495.58 11 21253.27 12 20145.73
答案 0 :(得分:0)
Sklearn有很多用于离群值检测的算法。例如,您有隔离林和Oneclass SVM。
这是指向某些示例的链接enter link description here
答案 1 :(得分:0)
最近,我也在研究离群值检测工具主题。 以我的经验,要进行离群值检测,可能需要先确定问题的范围。 1.您想要什么离群值? 2.对于要素viewpint,您要测量多少个要素? 一维很简单,2或N个特征是总不同的问题。 3.您想如何显示OD结果? 1维或2维很容易,3维或3维以上应该是很大的挑战。 4.特征数据类型是什么,数字或分类数据?对于分类数据,您可以在一开始将其转换为虚拟因子。
关于离群值检测算法,我认为您可以根据自己的数据进行选择。 对于1维,Z评分(用于scipy)或Mad()模式是可以的。尽管数据不是正态分布,但两种模式可能很容易解释。您可以使用更复杂的算法,并花费更多时间来解释为什么将它们计算为离群值。 Zscore方法对极端离群值敏感。在这种情况下,Mad方法更为健壮。 对于2或更多的尺寸,我最喜欢的孤立森林。在大型数据集中速度快(se)和可接受的准确性(88%〜89%)。