2021-05-20

Task04:异常检测——基于相似度的方法

基于相似度的异常检测,主要内容包括:

1、概述


基于相似度的技术在数据点稀疏或与其他数据点相似度低时将其定义为异常值。在普通的数据处理中,我们常常需要保留正常数据,而对噪声和异常值的特性则基本忽略。但在异常检测中,我们弱化了“噪声”和“正常数据”之间的区别,专注于那些具有有价值特性的异常值。离群值分析中定义相似度的最常用方法如下:

基于距离的方法:数据点到其 k- 最近邻(或其他变量)的距离用于定义邻近度。具有大的 k- 近邻距离的数据点被定义为离群点。基于距离的算法通常比其他两种方法在更细的粒度上执行分析。另一方面,这种更大的粒度往往需要大量的计算代价。
基于密度的方法: 数据点在指定的局部区域(网格区域或基于距离的区域)内的其他点的数量,用于定义局部密度。这些局部密度值可以转换为离群值得分。其他基于核的方法或密度估计的统计方法也可以使用。
基于聚类的方法: 任何群集中的数据点的非隶属性、它与其他群集的距离、最近群集的大小或这些因素的组合被用来量化离群值得分。聚类问题与异常检测问题有着互补关系,在这个问题中,点要么属于聚类,要么应该被认为是离群值。聚类方法和基于密度的方法的主要区别在于聚类方法对数据点进行划分,而基于密度的方法对数据空间进行划分。


2、基于距离的度量


基于距离的方法是一种常见的适用于各种数据域的异常检测算法,它基于最近邻距离来定义异常值。 此类方法不仅适用于多维数值数据,在其他许多领域,例如分类数据,文本数据,时间序列数据和序列数据等方面也有广泛的应用。

基于距离的异常检测有这样一个前提假设,即异常点的 k 近邻距离要远大于正常点。解决问题的最简单方法是使用嵌套循环。第一层循环遍历每个数据,第二层循环进行异常判断,需要计算当前点与其他点的距离,一旦已识别出多于 k 个数据点与当前点的距离在 D 之内,则将该点自动标记为非异常值。 这样计算的时间复杂度为 O ( N 2 ) O(N^{2})O(N 
2
 ),当数据量比较大时,这样计算是及不划算的。 因此,需要修剪方法以加快距离计算。

 

2.1 基于单元的算法


该算法的具有较小的计算复杂度,为 O(ck+N),其中 c 为取决于单元数的常数,k 为数据集的维数,N 为数据集中对象的个数。该算法适用于大规模数据集的异常值检测,但当数据集的维数增加时,它的可扩展性较差。

在基于单元格的技术中,数据空间被划分为单元格,单元格的宽度是阈值D和数据维数的函数。具体地说,每个维度被划分成宽度最多为单元格。在给定的单元以及相邻的单元中存在的数据点满足某些特性,这些特性可以让数据被更有效的处理。

在这里插入图片描述

2.2 基于索引的方法

 

在这里插入图片描述

基于距离的方法主要存在三个不足之处:
(1) 基于索引的算法和嵌套-循环算法的时间复杂度都为,与数据集维数 k 是线性关系,与数据集中的对象个数 N 呈平方关系,现实中的数据集规模往往比较大,使得这两个算法的使用受到限制。
(2) DB(p, d)算法的检测结果对参数p和d具有较强敏感性,不同的p、d参数值往往导致差异比较大的结果,而参数 p、d 需要用户设置,为寻找合适的参数一般会涉及多次的尝试和错误。
(3) 基于距离的异常值检测方法将异常值看作是二元属性,对检测出的每个异常值不能给出异常的程度。

 

3、基于密度的度量


上述异常值检测算法对整个数据集都带有一种“全局”的观念,因此检测出的异常值也是“全局”异常值。然而,当数据集的密度不均匀时,这些检测算法往往会漏掉一部分异常值。现实中,多维数据集的数据结构通常都很复杂,往往有一些数据对象对于其相邻点来说可能是异常值,但在整个数据集中却不是异常值,任何一个“全局”异常值检测算法都不能检测出这些异常值。

基于密度的检测方法认为数据对象是否为异常值不仅仅取决于它与周围相邻点的距离远近,而且还跟其周围相邻点的稀疏程度密切相关,与以往大多数方法认为异常值仅是“非此即彼”的二元属性不同,认为数据对象不能简单地被划分为异常值和正常值,而是给每个对象赋予了一个局部异常因子 LOF 来表示其异常程度,然后根据实际研究要求选取前 n 个 LOF 最大的对象判定为异常值。基于密度的异常值检测方法可以有效检测出其它“全局”检测算法容易遗漏的这部分异常值。

在这里插入图片描述

以上图中一个二维数据集为例来进行说明,很明显图中 C2簇中的对象个数比 C1簇中的多,而 C1簇的密度比 C2簇的密度大,对于 C2中的某一对象 o,它的最近邻距离比 p1与 C1中的最近邻的距离要大,因此采用基于距离的异常值检测算法不会把 p1判定为异常值,而只能检测出 p2为异常值,而基于密度的检测算法可以同时准确判定 p1与 p2都为异常值。

基于密度的异常值检测算法的有关定义:

在这里插入图片描述

直观一些理解,就是以对象o为中心,对数据集D中的所有点到o的距离进行排序,距离对象o第k近的点p与o的距离就是k-距离。

在这里插入图片描述

3.1 k-距离 k-distance(p)

 

直观一些理解,就是以对象o为中心,对数据集D中的所有点到o的距离进行排序,距离对象o第k近的点p与o的距离就是k-距离。

3.2 k-邻域(k-distance neighborhood)


本篇作业未完待续,边吸收编引用。再次向大佬队友【涵涵】表示敬意!

————————————————
版权声明:本文为CSDN博主「hanhanyc」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/chiyuhan89/article/details/116974772

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值