定义
异常检测(或异常值检测)是对稀有物品、事件或观察结果的识别,这些物品、事件或观察结果与大多数数据存在显著差异,从而引起疑虑。通常,异常数据可以关联到某种问题或罕见事件,例如银行欺诈、医疗问题、结构缺陷、故障设备等。这种连接能够有趣地找出哪些数据点可以被视为异常,因为从业务角度来看,识别这些事件通常非常有趣。
技术路径:
异常检测方法可以大致分为基于统计,基于邻近和基于偏差[1]三种类型。
统计异常检测假定数据是根据指定的概率分布建模的。诸如高斯混合的参数模型或诸如核密度估计的非参数模型可用于定义概率分布。 如果数据点从模型生成的概率低于某个阈值,则将数据点定义为异常。这种模型的优点在于它给出概率作为判断异常的决策规则,这是客观的,理论上合理的。
基于邻近度的异常检测假设异常数据与大量数据隔离。以这种方式对异常建模有三种方式,即基于聚类,基于密度和基于距离。对于基于聚类的异常检测,将聚类算法应用于数据以识别数据中存在的密集区域或聚类。接下来,评估数据点与每个聚类的关系以形成异常分数。这样的标准包括到聚类质心的距离和最近聚类的大小。如果到集群质心的距离高于阈值或者最近集群的大小低于阈值,则将数据点定义为异常。基于密度的异常检测将异常定义为位于数据的稀疏区域中的数据点。例如,如果数据点的局部区域内的数据点的数量低于阈值,则将其定义为异常。基于距离的异常检测使用与给定数据点的相邻数据点相关的测量。可以以这样的方式使用K-最近邻距离,其中具有大k-最近邻距离的数据点被定义为异常。
基于偏差的异常检测主要基于光谱异常检测,其使用重建误差作为异常分数。 第一步是使用降维方法(如主成分分析或自动编码器)重建数据。 使用k个最重要的主成分重建输入并测量其原始数据点和重建之间的差异导致重建误差,其可以用作异常分数。 具有高重建误差的数据点被定义为异常。
参考文献
github文档集合:awesome-anomaly-detection
如何利用机器学习进行异常检测和状态监测(文章讲解的是两种分析思路:第一种、PCA + Mahalanobis;第二种、AutoEncoder训练模型进行检测。)
对基于深度神经网络的Auto Encoder用于异常检测的一些思考
基于变分自编码器(VAE)利用重建概率的异常检测
VAE异常检测论文复现——Anomaly Detection for Skin Disease Images Using Variational Autoencoder
利用Autoencoder进行无监督异常检测(Python)(金融数据)