我使用ELKI数据挖掘软件进行离群检测。它有许多异常值检测技术,但都提供相同的结果(所有技术的相同异常值,唯一的区别在于点周围的圆的大小,如下图所示)。我使用ELKI网站上提供的鼠标头数据集。在数据集中,所有点都标有其各自的簇名称,无论是来自ear_left还是ear_right还是head或noise。如果我将噪声标签更改为ear_right,则会将异常点显示为ear_right。我已将10个噪音标签中的5个更改为ear_right。
这是使用KNN和LDOF离群检测技术修改数据集和ELKI的结果:
这是软件的问题还是我做错了什么?有没有人试过它用于异常值检测?有没有什么好的软件可以使用不同的算法(如LOF,LDOF,KNN)执行异常值检测,或者我可以找到这些技术的算法源代码?
答案 0 :(得分:1)
这是一个非常简单的数据集。
方法或多或少都有效,这并不奇怪。因为这是一个玩具数据集,而不是实际数据......对于实际数据,异常值检测非常多,而且更难。
请注意,ELKI中的实施分配数字分数。他们不会产生是/否异常决定;从分数中得出这是微不足道的。
如果需要二进制结果,可以将可视化缩放参数设置为仅显示前k个结果。在其他情况下,您可能想要阅读实际的论文。例如,LOCI的作者建议将分数大于3的对象视为异常值。 (不幸的是,大多数方法都没有特别简单的解释。)
不要在分类框中思考。异常值检测是一种探索性技术,而不是分类。
ELKI还可以使用多种指标评估离群值方法的质量,例如ROC AUC,ROC曲线,Precision @ k,AveP,Maximum-F1。