本文记录的目的是方便自己学习和复习,有误之处请谅解,欢迎指出。
异常检测是指在一堆数据样本中,通过各种方法找出脱离正常范围的数据,即异常样本、异常数据。异常检测应用领域:
1、金融领域:从金融数据中识别”欺诈案例“,如识别信用卡申请欺诈、虚假信贷等。
2、网络安全领域:从流量数据中找出”入侵者“,并识别新的网络入侵模式;
3、电商领域:从交易数据中识别”恶意买家“,如羊毛党、恶意刷屏团伙;
4、自然灾害领域:基于对风速、降雨量、气温等指标的预测,判断未来可能出现的极端天气;预测地震。
5、工业领域:可通过异常检测手段进行工业产品的瑕疵检测,代替人眼进行测量和判断。
一、统计方法
基本思想:正常数据样本应该是符合高斯分布,正常数据占比量大,而异常数据占比小。
(1)高斯分布
思想:当前数据点偏离总体数据平均值3个标准差时,即,可以认为是一个异常点(偏离多少个标准差可视实际情况调整)
步骤:计算已有数据的均值及标准差。当新来的数据点偏离均值3个标准差时,视为异常点。
(2)混合高斯分布
多特征时候可以利用高斯混合模型使用数据集建立起概率模型,计算输入样本符合此混合高斯分布的概率,也就是生成输入样本的概率,概率越低,说明异常程度越高,如何计算这个概率呢?
假设特征之间独立,先计算每个特征的均值和方差,然后根据高斯分布概率密度函数计算每个特征的概率。
依据概率理论,高斯混合模型的输出概率由多个特征概率的连乘得到,
二、距离方法
基于距离的方法思想:正常样本点的周围存在很多个近邻点,而异常点距离周围样本点的距离都比较远。
(1)K近距(KNN)
正常数据点具有密集的邻域,异常值则远离其相邻点,即具有较为稀疏的邻域
三种方式判断异常点:
1、距离d之内相邻点少于p为异常
2、相邻点的距离最大的前n个点为异常
3、与k个最邻近点的平均距离大于阈值的数据点为异常
(2)K-means聚类
K均值聚类的思想识别数据中的异常点比较简单,步骤如下:
1、利用“拐点法”、“轮廓系数法”、“间隔统计量法”或者“经验法”确定聚类的个数;
2、基于具体的K值,对数据实施K均值聚类的应用;
3、基于聚类的结果,计算簇内每个点到簇中心的距离;
4、将距离跟阈值相比较,如果其大于阈值则认为是异常,否则正常;
三、密度方法
基于密度的异常检测是计算样本点的密度及其相邻样本的密度。如果,一个样本的密度相对于相邻样本密度低很多,可以确定是一个异常点。
(1)KNN
密度定义:K个最近邻的平均距离的倒数,距离小则密度高。N是包含x的最近邻的集合,|N|是集合的大小。y是一个最近邻。
(2)DBSCAN
DBSCAN相对密度,x的密度是与它最近邻y的平均密度之比:
四、树模型方法
(1)孤立森林(Isolation Forest)
思想:将数据不断通过某个属性划分,异常点通常能很早地被划分到一边,也就是被早早地孤立起来。而正常点则由于群体众多,需要更多次地划分。
步骤:通过以下方式构造多颗孤立树:在当前节点随机挑选数据的一个属性,并随机选取属性的一个值,将当前节点中所有数据划分到左右两个叶子节点;如果叶子节点深度较小或者叶子节点中的数据点还很多,则继续上述的划分。异常点表现为在所有孤立树中会有一个平均很低的树的深度。