前面提到,Distance-based算法在全局语境(全局数据)下的异常检测表现良好,那么Distance-based算法是否有能力在局部环境下对目标进行建模吗?
事实上,Distance-based算法只能刻画目标的k邻近绝对密度,无法对相对密度(相对于局部数据)建模。值得注意的是,现实中不同的上下文语境下,目标的含义可能截然不同。举个例子,普通人的平均智商是90~110(全局),所以一个智商120的人可以称为“天才”,但是对一群智商140以上的人(局部)中只能是普通人,异常检测同样存在这样的现象,即局部异常和全局异常。从下图可以很好的描述:
对于C1中的目标和C2的局部异常值p2,采用Distance-based算法无法进行识别。主要原因是算法没有考虑数据集自身(邻域内)的局部密度。这时就需要引入Density-based方法。其中,以Local Outlier Factor (LOF)最为经典,几乎其它的Density-based算法都是LOF的变种。
为了理解LOF算法,几个概念需要明