“数据挖掘实战 - 异常检测”学习赛的Task04-学习日志


前言

本文章为天池“数据挖掘实战 - 异常检测”学习赛的Task04-学习日志,旨在对如何通过相似度的方法对异常值进行处理有进一步的了解。 学习地址:[添加链接描述](https://github.com/datawhalechina/team-learning-data-mining/blob/master/AnomalyDetection/%E5%9B%9B%E3%80%81%E5%9F%BA%E4%BA%8E%E9%82%BB%E8%BF%91%E5%BA%A6%E7%9A%84%E6%96%B9%E6%B3%95.md)

一、基于距离的度量

1.概述

^原理:在数据集中的任意数字U的某距离(或某空间)内含有K以上各点,则数据密度较大,数据为离群的异常值的概率较低,相反则可能为异常值。
^基于假设:异常点的 近邻距离要远大于正常点。
^常用方法——嵌套循环:第一层循环遍历每个数据,第二层循环进行异常判断计算当前点与其他点的距离,如果已识别出多于k个数据点与当前点的距离在D之内,则将该点自动标记为非异常值。计算的时间较长复杂度高不适合大量数据

2.基于单元的方法

以二位为例处理步骤如下:

1. 将数据空间分为单元格,每个单元格的距离为D/(2√d)(D为阈值,d是维度),其中单元格数量是基于空间分区与数据量无关。

2. 设定距离范围;对随机某单元格X其L1邻居被定义为通过最多1个单元间的边界可从该单元到达的单元格的集合斜角也算;L2邻居是通过跨越2个或3个边界而获得的那些单元格,依次类推。

3. 以上分隔数据将有以下特性:
(1) 单元格中两点之间的距离最多为 D/2。
(2) 一个点与L2邻接点之间的距离最大为D。
(3) 一个点与它的Lr邻居(其中r> 2)中的一个点之间的距离至少为D。

4. 对不确定区域进行修正(如上述方法中不确定区域为L2;修正步骤如下:
(1) 如果一个单元格中包含超过 个数据点及其 邻居,那么这些数据点都不是异常值(此步将部分数据直接标记为异常值);
(2) 如果单元 及其相邻 和 中包含少于 个数据点,则单元A中的所有点都是异常值(对是否为异常值的模糊地区数据进行修正)

3.基于索引的方法

原理:基于索引的方法利用多维索引结构来搜索随机点A的半径内如果只包括K个点则为异常值,否则为正常值。算法在数据集的维数增加时具有较好的扩展性,但计算量较大。

二、基于密度的度量

1.概述

常用方法:局部离群因子(LocalOutlierFactor,LOF),以及LOCI、CLOF等基于LOF的改进算法。
算法适用场景:常规的方法能分离离群较远的异常数据,而离数据群较近的数据如果分离则会失去较多正常数据,如果不分离,则有可能使得异常值的特征失真,LOF可以解决此问题。以下为基于密度方法的演变。

2.密度度量的演变步骤

1. K-distance(A):就是以对象A为中心,对数据集D中的所有点到A的距离进行排序,距离对象A第K近的点R与A之间的距离就是k-distance(A);

2. k-邻域(k-distance neighborhood):将点扩展到集合,到对象A的距离小于等于K-distance(A)的所有点的集合,在二维平面上其表现为以A为圆心,K-distance(A)为距离的圆围成的空间范围,于圆之外为异常;

3. 可达距离(reachability distance),根据K-领域来规定可达距离,数据A的K-领域内的任意数据O1的可达距离reach-distk(O1,A)为 K-distance(A),而圆外的点到A的可达距离为实际距离,该方法,简化了非异常数据的距离计算,降低计算量。

4. 局部可达密度(local reachability density):使用数据集D中对象A与对象O的k-邻域内所有点的可达距离平均值的倒数为局部可达密度(需要避免可达距离之和为0,因为分母不能为0,或无穷接近于0),其计算公式如下:
在这里插入图片描述
5. 局部异常因子:得到lrd(局部可达密度)以后就可以将每个点的lrd将与它们的k个邻点的lrd进行比较,得到局部异常因子LOF。LOF在数学上是对象A的邻居点O的lrd平均值与A的lrd的比值。A的局部可达密度越低,且它的MinPts近邻的平均局部可达密度越高,则A的LOF值越高.。比值越接近1,说明o的邻域点密度差不多,o可能和邻域同属一簇;如果这个比值小于1,说明o的密度高于其邻域点密度,o为密集点;如果这个比值大于1,说明o的密度小于其邻域点密度,o可能是异常点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值