一文读懂异常检测 LOF 算法(Python代码)
1 LOF算法
一个经典的异常检测算法:局部离群因子(Local Outlier Factor),简称LOF算法。
Local Outlier Factor(LOF)是基于密度的经典算法(Breuning et. al. 2000), 文章发表于SIGMOD 2000, 到目前已经有3000+的引用。
在LOF之前的异常检测算法大多是基于统计方法的,或者是借用了一些聚类算法用于异常点的识别(比如,DBSCAN,OPTICS)。这些方法都有一些不完美的地方:
(1)基于统计的方法:通常需要假设数据服从特定的概率分布,这个假设往往是不成立的。
(2)聚类方法:通常只能给出 0/1 的判断(即:是不是异常点),不能量化每个数据点的异常程度。
相比较而言,基于密度的LOF算法要更简单、直观。它不需要对数据的分布做太多要求,还能量化每个数据点的异常程度(outlierness)。
1.1 LOF原理
首先,基于密度的离群点检测方法有一个基本假设:非离群点对象周围的密度与其邻域周围的密度类似,而离群点对象周围的密度显著不同于其邻域周围的密度。