时间:2022-12-06 18:30:01 | 来源:信息时代
时间:2022-12-06 18:30:01 来源:信息时代
异常分析 : 发现数据集中明显不同于其他数据对象的过程。异常是一个数据集中所包含的明显不同于其他对象的数据。
异常分析需要解决两个子问题:
(1)在给定数据集合中定义什么样的数据可以被认为是异常。
(2)找到一个有效的方法来挖掘这样的异常。
大多数聚类算法(如DBSCAN、BIRCH等),都具有一定的噪声处理能力,在一定程度上可以检测异常数据。但聚类算法定义中的“噪声”和“异常”在概念上不同: “噪声”是定义在簇的基础上,是不隶属于任何簇的数据; 而异常分析中定义的“异常”是不依赖于是否存在簇。聚类算法中具有处理噪声能力的出发点和目的是优化簇,在生成结果簇时,噪声是可以容忍或忽略的。而异常分析的目的是找出这样的数据对象。
异常分析算法有以下几类:
(1)基于统计的异常分析方法:首先使用统计分布(如正态分布Normal、泊松Poisson分布等)对数据点进行建模,然后用不一致检验(discordancy test)确定异常。该方法要求预先得到关于数据集合参数的知识,如分布模型(如假设的数据分布)、分布参数(如平均值和方差)、预期的异常数目和异常数据类型等,但在许多情况下,数据分布可能是未知的,特别是在高维情况下,估计数据点的分布是极其困难的。
(2)基于深度的异常分析方法:每一个数据被映射到一个k维数据空间上的点,并且每个点被赋予一个特定定义的“深度”。根据不同的深度,数据被划分成不同层次,异常往往存在于较“浅”的层次中,而存在于较“深”层次中的可能性较小。但当k值较大时(一般地k≥4),该方法并不是很有效。
(3)基于偏差的异常分析方法:不采用统计检验或基于距离的度量值来确定异常对象,而是通过检查一组对象的主要特征来确定异常。该方法将异常定义为与给出的描述偏离的对象,即“偏差”(deviation)。主要有两种分析技术: 序列异常技术;采用OLAP数据立方体方法。
(4)基于距离的异常分析方法: 将异常定义为:如果数据集中与点p的距离小于d的点的个数不超过M,那么就称p为相对于M和d的异常。即是那些没有“足够多”邻居的对象(邻居是基于距给定对象的距离来定义的),其中距离可以是任意的距离函数度量。典型的算法是Knorr&Ng算法,但是该算法的输入参数M和d难以确定,并且不同参数M和d对结果的影响有很大不稳定性。这种需要用户拥有相当的领域知识,并且进行人工干预算法的办法也并不理想。Rastogi和Ramaswamy引入新的基于距离异常定义:Dnk异常,并提出循环嵌套、基于索引和基于划分的算法。
(5)基于密度的异常分析方法:一些算法中的异常被认为是二元性质的,即要么在数据集中该对象是异常,要么不是异常,然而在大多数应用中,情况是复杂的。基于距离的异常分析中因为考虑的是整个数据集,找出的异常是全局意义的,因此只能发现某些类型的异常。而异常这个概念本身具有一定的“局部”性,即某一点异常是指这一点与之邻近的簇相对较远。Breunig和Kriegel引入了局部异常因子的概念,认为异常不应该是对象的二元性质,而是某个度量。
基于统计的方法由于必须事先知道数据的分布特征,因此,限制了它的应用范围; 基于偏差的方法中的序列异常技术中的序列异常概念由于序列异常在概念上仍然有一定缺陷,遗漏了不少的异常数据,而没有得到普遍的认同; 基于距离的方法跟基于统计的方法相比,不需要用户拥有任何领域知识,与“序列异常”相比,在概念上更加直观,更重要的是,距离异常更接近于Hawkins的异常的本质性的定义; 基于密度的异常观点比基于距离的异常观点更贴近Hawkins的异常的本质性的定义,因此能够挖掘出基于距离异常算法所不能识别的一类异常数据——局部异常,局部异常观点摈弃了以前所有的异常定义中非此即彼的绝对异常观念,更加符合现实生活中的应用。