本文结合R语言,展示了异常检测的案例,主要内容如下:
(1)单变量的异常检测
(2)使用LOF(local outlier factor,局部异常因子)进行异常检测
(3)通过聚类进行异常检测
(4)对时间序列进行异常检测
单变量异常检测
本部分展示了一个单变量异常检测的例子,并且演示了如何将这种方法应用在多元数据上。在该例中,单变量异常检测通过boxplot.stats()函数实现,并且返回产生箱线图的统计量。在返回的结果中,有一个部分是out,它结出了异常值的列表。更明确点,它列出了位于极值之外的胡须。参数coef可以控制胡须延伸到箱线图外的远近。在R中,运行?boxplot.stats可获取更详细的信息。
如图呈现了一个箱线图,其中有四个圈是异常值。
如上的单变量异常检测可以用来发现多元数据中的异常值,通过简单搭配的方式。在下例中,我们首先产生一个数据框df,它有两列x和y。之后,异常值分别从x和y检测出来。然后,我们获取两列都是异常值的数据作为异常数据。
在下图中,异常值用红色标记为"+"