今天看两个异常检测:
- 基于距离的度量
- 基于密度的度量
基于距离:
基于距离的方法是一种常见的适用于各种数据域的异常检测算法,它基于最近邻距离来定义异常 值。 此类方法不仅适用于多维数值数据,在其他许多领域,例如分类数据,文本数据,时间序列数据和 序列数据等方面也有广泛的应用。
基于距离的异常检测有这样一个前提假设,即异常点的 近邻距离要远大于正常点。解决问题的最 简单方法是使用嵌套循环。 第一层循环遍历每个数据,第二层循环进行异常判断,需要计算当前点与其 他点的距离,一旦已识别出多于 个数据点与当前点的距离在 之内,则将该点自动标记为非异常值。 这样计算的时间复杂度为 ,当数据量比较大时,这样计算是及不划算的。 因此,需要修剪方法以 加快距离计算。
基于密度:
基于密度的算法主要有局部离群因子(LocalOutlierFactor,LOF),以及LOCI、CLOF等基于LOF的改
进算法。下面我们以LOF为例来进行详细的介绍和实践。
基于距离的检测适用于各个集群的密度较为均匀的情况。在下图中,离群点B容易被检出,而若要 检测出较为接近集群的离群点A,则可能会将一些集群边缘的点当作离群点丢弃。而LOF等基于密度的算 法则可以较好地适应密度不同的集群情况。