开发者学堂课程【高校精品课北京理工大学数据仓库与数据挖掘(下):Outlier Detection Methods】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/1041/detail/15654
Outlier Detection Methods
内容介绍:
一、异常检测方法分类
二、基于监督的异常检测方法
三、基于无监督的异常检测方法
四、基于半监督的异常检测算法
五、基于统计的异常检测
六、基于临近性的异常检测方法
七、基于聚类的异常检测方法
本课程开始数据仓库与数据挖掘的学习。主要介绍异常检测方法概述。
一、异常检测方法分类
对于异常检测算法来说,可以根据在异常检测时是否需要使用有标记的数据,将异常检测方法划分为基于监督的,基于半监督的和基于无监督的异常检测方法。
而根据对正常数据的假设以及对异常数据的假设,可以将异常检测方法划分为基于统计的,基于邻近性的,基于聚类的异常检测方法。
二、基于监督的异常检测方法
1.原理
首先来看一下,基于监督的异常检测方法。基于监督的异常检测方法,主要是将异常检测问题转换成为一个分类问题,将有标记的数据,用作训练集和测试集,构建一个分类模型,对未标记的数据进行预测,判断数据对象的类别为正常或异常。
2.面临挑战
对于基于监督的异常检测方法来说,它主要面临两点挑战。
(1)、类别不平衡性
第一点就是指的类别不平衡性。因为在有标记的数据中,异常占的比例是非常非常低的,因此为正事例的数据会远远的小于为负事例的数据。
(2)、尽可能识别所有异常
第二个挑战就是基于监督的异常检测算法,要求尽可能的去识别所有的异常,因为在这样的一个问题中,将一个异常对象判别为一个正常对象的危害,是要远远大于,将一个正常对象判别成为一个异常对象的危害,因此,对于召回率的要求就会更高一些。
三、基于无监督的异常检测方法
1.原理
再来看一下基于无监督的异常检测方法。基于无监督的异常检测方法中,假设可以将数据划分成为若干个蔟。那么位于大蔟中的这些数据,它指的是行为比较正常的数据。如果一个数据对象离所有的蔟都比较远,那么认为这样的一个数据对象就是异常数据。
2.缺点
基于无监督的异常检测方法来说,它的缺点主要是,首先这些方法它是不能够识别群体异常的,因为往往根据判断数据对象是否离各个蔟的距离,来判断这个对象是否是异常对象。
其次,由于正常数据的行为的多样性,那么基于无监督的异常检测方法,它可能会具有比较高的错误的正利率,在这种情况下,它依然可能会漏掉很多异常。
在基于无监督的异常检测方法中,大部分方法都是基于聚类算法的使用,聚类算法来进行异常检测又可能存在两个问题,第一个问题就是很难将噪音和异常进行区分。第二个问题就是它的代价比较高,它首先要进行聚类,然后再进行日常识别。
四、基于半监督的异常检测算法
在基于半监督的异常检测算法中,数据有可能会标记为全部是正常数据,也有可能会标记一小部分异常数据。
如果数据标记的是正常数据,那么可以利用这些有标记的正常数据和这些正常数据比较接近的数据,把它们作为训练集,用来代表正常数据,根据正常数据,可以对正常数据建模,然后判断数据对象和这个正常模型是否相符,如果不符合这个正常模型,就认为这个数据对象是异常的。
对于第二种情况,如果数据集中仅仅标注了少量的异常数据,这个时候仅靠这些标记的异常数据是不能够进行异常识别的,往往会需要借助无监督的异常检测的方法来进行异常识别。
五、基于统计的异常检测
1.原理
再来看一下基于统计的方法。在基于统计的异常检测中,一般假设数据是符合某个统计分布的。可以计算每一个数据对象属于这个分布的概率,如果概率比较低,那么认为这个数据对象就是异常的。
对于基于统计的异常检测方法来说,它主要包含有参的方法和无参的方法。
2.例子
比如说像下图所展示的这个数据集,可以假设数据分布是符合高斯分布的。通过数据,可以估算高斯分布的参数,在得到高斯分布模型参数之后,可以利用概率密度去计算每一个数据点,由这个模型产生的概率,比如说像位于 r 区域的两个数据对象,它由这个模型产生的概率比较低,那么位于 r 区域的这两个数据对象就可以判定为是异常的对象。
六、基于临近性的异常检测方法
再来看一下基于临近性的异常检测方法。基于临近性的异常检测方法,主要是考虑这个数据对象的引进性,如果一个数据对象的邻近性和数据集中,大部分数据对象的邻近性差异性比较大,认为这个数据对象就是异常的。
对于基于临近性的异常检测方法,主要包含两种,一种是基于距离的异常检测方法,一种是基于密度的异常检测方法。
七、基于聚类的异常检测方法
再来看一下基于聚类的异常检测方法。基于聚类的异常检测方法,主要是根据聚类算法,将数据划分为不同的蔟。在基于聚类的异常检测算法中,如果一个对象属于的蔟比较大,那就认为这个数据对象是正常的,如果数据位于一个比较小或者稀疏的蔟,甚至这个数据对象不属于任一蔟,认为这个数据对象就是异常的。
关于异常检测算法的概述就向大家介绍到这里。