定义
对不符合预期的数据、事件、模式进行识别。
在异常检测领域中,我们常常需要决定新观察的点是否属于与现有观察点相同的分布(则它称为inlier),或者被认为是不同的(称为outlier)。 在这里,必须做出两个重要的区别:
异常值检测(离群点检测),Outlier Detection
训练数据包含异常值,这些异常值被定义为远离其他异常值的观察值。 因此,异常检测估计器试图适应训练数据最集中的区域,忽略不正常的观察。
新颖点检测,Novelty Detection
训练数据不受异常值的污染,我们有兴趣检测新观察是否是异常值。 在这种情况下,异常值也被称为新颖点(a novelty)。
所谓新奇检测是识别新的或未知数据模式和规律的检测方法,这些规律和只是在已有机器学习系统的训练集中没有被发掘出来。新奇检测的前提是已知训练数据集是“纯净”的,未被真正的“噪音”数据或真实的“离群点”污染,然后针对这些数据训练完成之后再对新的数据做训练以寻找新奇数据的模式。
新奇检测主要应用于新的模式、主题、趋势的探索和识别,包括信号处理、计算机视觉、模式识别、智能机器人等技术方向,应用领域例如潜在疾病的探索、新物种的发现、新传播主题的获取等。
异常值检测和新颖性检测都属于异常检测,都是用来检测异常的、不常见的一些观察值。
异常值检测是一种无监督的方法,新颖点检测是一种半监督的异常检测方法。 在异常值检测的情况下,异常值不能形成密集的簇,因为异常检测的估计器假设异常值总是位于低密度区域。 相反,在新颖性检测的背景下,新颖点可以形成密集的簇,只要它们处于训练数据的低密度区域中。
注意点:
- 如果训练样本中异常样本的比例比较高,违背了异常检测的基本假设,可能最终的效果会受到影响;
- 异常检测根具体的应用场景紧密相关,算法检测出的“异常”不一定是我们实际想要的,比如,在识别虚假交易时,异常的交易未必就是虚假的交易。所以,在特征选择时,可能需要过滤不太相关的特征,以免识别出一些不太相关的“异常”。
类型:
- 点异常
单个数据与其余数据特征存在巨大差别。 - 上下文异常
统计指标上显示无异常,但是放在上下文环境中呈现异常。 - 集体异常
一个数据集合相对于整个集合是异常的。
训练模式:
- 有监督
存在问题:样本严重不平衡。一般异常检测样本远少于正常样本数量。其次,很难获得准确的并且具有代表性的异常样本类型,正负样本边界模糊,真值本身存在一些问题。 - 半监督
所有训练数据均为正常样本,用该模型检测异常样本。不常用。很难找到全覆盖所有异常的数据集。 - 无监督
广泛使用。
异常检测方法
1. 基于分类的异常检测
该方法将一组标签数据训练模型,然后将测试样本输入至模型,判断其是否异常。
使用该方法需要满足假设:在给定的特征空间能够学习到区分正负样本的分类器。找到强代表性的特征最为关键。
该技术又可以分为二分类和多分类。二分类指样本中只有止负两类样本;多分类指有多类正样本,或者多类负样本。
使用到的技术有:神经网络、贝叶斯网络、SVM等。
优点:基于多分类的异常检测可以识别出具体的异常类别;测试阶段很快,适用于实时监测应用场景。
缺点:标签类别很难准确地获取,训练时间较长。
2. 基于邻近距离的异常检测
使用该方法需要满足假设:正常样本集中在密集领域,异常样本在分散领域。
通常采用的方法是:计算每个实例的相对密度,然后确定异常样本的密度范围。
优点:本质上属于无监督学习,并且不会对数据的分布做任何假设,属于数据驱动;相比于分类器,无监督技术实现简单,通常只涉及到距离计算。
缺点:如果数据中正常样本密度较为松散,则算法不能生效;如果训练集中没有足够的类似样本,则测试样本的误判率会很高。如果数据量非常大,则计算成本会很高;合适的度量距离难以确定,对于图形、序列等数据而言。
技术:knn(具有大k-最近邻距离的数据点被定义为异常)
3. 基于聚类的异常检测
基本思想是:将相似的数据实例划分到同一个集合中。
需要满足的假设:正常样本属于数据中的一个集合,而异常样本不属于任何集合;或者正常样本靠近聚类质心,而异常样本远离质心;或者正常样本属于大而密的集合,异常样本属于小集合或者稀疏集合。
优点:属于无监督学习,不需要提前打标签;模型预测速度快,测试时间短,适用于实时监测。
缺点:高度依赖于聚类算法能否获取正常样本聚类结构,所有的流程重点放在聚类上,没有对异常检测做优化;训练时计算复杂度高。
技术:K-means(如果到集群质心的距离高于阈值或者最近集群的大小低于阈值,则将数据点定义为异常)
4. 基于统计的异常检测
基本原理是由Ansconmbe于1960提出:“异常是一种部分或者完全不相关的观察,因为它不是由假设的模型随机产生的”。
该方法的基本步骤是对数据点进行建模,再以假定的模型(如泊松分布、正太分布等)根据点的分布来确定是否异常。一般通过数据变异指标来发现异常数据。常用变异指标有极差、四分位数间距、均差、标准差、变异系数等。但是,基于统计的方法检测出来的异常点产生机制可能不唯一,而且它在很大程度上依赖于待挖掘的数据集是否满足某种概率分布模型,另外模型的参数、离群点的数目等都非常重要,确定这些因素通常都比较困难。因此,实际情况中算法的应用性和可移植性较差。
基本假设为:正常样本实例出现在模型的高概率区域,异常样本实例出现在模型的低概率区域。先通过止常样本数据得到统计模型,然后判读测试数据是否属于该模型。
优点:无监督学习,不需要标签;如果基础数据分布假设成立,则从统计上检测异常时可行的。
缺点:依赖于特定分布,但在很多场景下,假设是不成立的。
基于密度
- LOF(local outlier factor)(将密度大大低于邻居的样本视为异常值)
- BIRCH
- DBSCAN(如果数据点的局部区域内的数据点的数量低于阈值,则将其定义为异常)
专门异常点检测
- 隔离森林(较大高度平均值为异常值)
- one-class SVM(与超球体中心的距离大于r为新奇)
基于偏差
- PCA/自编码器(具有高重建误差的数据点被定义为异常)
- 隐马尔可夫模型(HMM)
深度学习
- Auto-Encoder
- GAN
实操方法
有监督
- Classifier With Confidence Score(以$\lambda$为阈值)
- 取最高Score
- 取Cross Entropy(交叉熵)
- Network For Confidence Estimation
- Terrance Devries, Graham W. Taylor, Learning Confidence for Out-of-distributionDetection in Neural Networks. arxiv 2018
- 生成异常数据
- Kimin Lee, Honglak Lee, Kibok Lee, Jinwoo Shin, Training Confidence-calibrated Classifiers for Detecting Out-of-distribution Samples, ICLR 2018
- Mark Liger, Shachar Fleishman, Novelty Detection with GAN, arxiv, 2018
无监督
- Maximum Likelihood(最大似然法)
Scatter Plot Density $f_\theta(x))$
- Assuming the data points is sampled from aprobability density function $f_\theta(x)$
- $\theta$ determines the shape of $f_\theta(x)$
- $\theta$ is unknown. to be found from data
- 用AutoEncoder做异常检测
- Variational Autoencoder based Anomaly Detection using Reconstruction Probability
- 通过测试AutoEncoder的还原度来判断
- One-Class SVM
- Support Vector Method for Novelty Detection
- https://papers.nips.cc/paper/1723-support-vector-method-for-novelty-detection.%20pdf
- Isolated Forest