Proximity-Base Approaches|学习笔记

简介: 快速学习 Proximity-Base Approaches

开发者学堂课程【高校精品课北京理工大学数据仓库与数据挖掘(下)Proximity-Base Approaches】学习笔记,与课程紧密联系,让用户快速学习知识。  

课程地址:https://developer.aliyun.com/learning/course/1041/detail/15656


Proximity-Base Approaches


内容介绍:

一、基于距离的异常检测算法

二、基于密度的异常检测算法变量


本课程开始数据仓库与数据挖掘的学习。在这一部分,将介绍基于邻近性的异常检测方法。基于邻近性的异常检测方法,主要包含基于距离的异常检测方法和基于密度的异常检测方法。


一、基于距离的异常检测算法

1.概念

首先来看一下基于距离的异常检测算法。基于距离的异常检测算法主要是根据一个数据对象,它某个特定领域范围内数据对象的个数来判断这个数据对象是否是异常,如果它这个领域内的数据对象个数比较多,那么这个数据对象就是正常的,否则就是异常的。

2.参数

在基于距离的异常检测算法中,需要使用到两个参数,一个是r,也就是用户指定的距离阈值距离阈值就确定了数据对象的领域范围。第二个参数指的是∏把它称之为叫做比比率阈值,它主要是用来衡量某个数据对象,它特定领域范围内的数据对象的个数占全体数据对象个数的比率。

对于一个数据对象 o。如果在它以 r 为半径的领域范围内的邻居数目。和所有数据集的数目的比率。将一个对象判断成为异常的,指的是在给定参数 r 的条件下,如果这个对象为圆心,以 r 为半径的领域范围内的邻居的数目,在全体数据对象数目的比率小于等于,认为这个数据对象是异常的。

和这种方法计算相似的,还可以去计算数据对象到它的第 k 个近邻邻居的距离,如果这个数据对象到它的第 k 个近邻邻居的距离大于 r,就认为这个数据对象是异常的。中,它的k的值是用全于数据集中数据对象的数目。

图片1.png

3.缺点

基于距离的异常检测算法有一个缺点,就是它很难去识别局部异常。所谓的局部异常,就指的是这个数据对象和它的邻居相比是异常的,但是和全局数据对象来比,那么它的异常性就不那么显着。

4.例子

通过一个例子介绍局部异常以及解释为什么基于距离的异常检测算法不能够有效识别局部异常,在下图展示的是两个蔟,c1 蔟和 c2 蔟。可以看到明显的 C1 这个蔟的密度是比较稠密的,而 c2 的密度是比较稀疏的。对于对象 o3 它离蔟 c1 和 c2 都很远,认为 o3 是一个异常对象,对于对象 o4 大家可以看到它基本上是在位于 c2 的这个分布范围,那么它应该是一个正常对象,但是对于对象 o1 和 o2。它和蔟 c1 相比,它的密度分布是非常非常稀疏的,所以 o 1o 2 应该是相对于c1 来说是一场对象。

但是如果使用基于距离的异常检测算法,那么可以发现。O1 和 o2 对象的最邻近距离都会包含 c1 中的数据对象,那么也就是它的距离是比较小的,因为 c1 的分布是比较稠密的,那么它的距离往往会比 c2 这个中某些数据对象的距离要想,比如对于 o4 这样的一个对象来说。所以如果想把 o1 和 o2 对象在基于距离的异常检测算法中把它判别为异常对象,就需要调整阈值,那么调整阈值的结果是所有 c2 数据对象有可能会被全部判定为异常对象。那么,基于这样的一个考虑,一个最直接的想法就是,可以将数据对象和它邻居的密度进行对比。那如果这个数据对象它邻居的密度比这个数据对象的密度要高很多,就认为这个数据对象是异常的。

图片2.png


二、基于密度的异常检测算法变量

那么,基于这样的一个想法,就设计了基于密度的异常检测算法。在基于密度的异常检测算法,会去对每一个数据点进行局部异常评分,这个局部异常评分主要是根据比较这个数据对象的密度和它邻居的密度来进行得到的。基于密度的异常检测算法中,需要计算的变量比较多。

1. 数据对象 o 的 k 距离

那么首先第一个就是数据对象 o 的k距离,把它称之为叫做 distk(o),就指的是数据对象 o 到它第 k 个近邻邻居的距离。

2. 数据对象 o 的 k 距离邻域

那么第二个变量就是数据对象 o k 距离邻域。对象 o k 距离邻域就指的是离这个数据对象的距离小于等于 distk(o)的所有数据对象的集合。那么注意,对象o k 距离邻域的数目可能会大于k,因为在对象 o 的 distk(o)邻域范围内可能会有一些数据对象到 o 的距离是相等的。

3.局部可达密度

那么第三个,需要计算的变量称之为从对象 o’到 o 的可达距离。从对象 o’到 o的可达距离,就指的是 distk(o)distk(o’)之间的最大值。用下图的这张事例介绍,比如对于对象 o1 来说。它和另外一个对象 p 之间的距离是要大于 o 的distk(o),所以说它的可达距离,就是对象 o1 和对象,p 之间的距离,那对于这个对象 o2 来说,那么这个对象 o2 和 p 之间的距离,是要远远的小于这个对象o2 的 k 距离,所以就认为,从 p 到对象 o2 的可达距离,就是这个对象 o2 的 k 距离那么在计算对象的 k 距离之后可以计算一个数据对象的局部可达密度,那么下图是局部可达密度的计算公式,那么可以把它颠倒,发过来看一下,这样的一个局部可达密度其实就是某一个数据对象,它所有邻居到这个对象的可达距离的平均值,对象 o 的局部可达密度,就是这个对象所有邻居到这个项可达距离平均值的导数。

图片3.png

4.局部异常因子

在计算了每个数据对象的局部可达密度之后,就可以计算每一个数据对象的局部异常因子,局部异常因子简称 lof 就是对每一个数据对象的异常评分,那么它的计算公式可以看一下下图公式部分,它的含义就是指的是这个数据对象所有邻居的局部可达密度和这个对象局部可达密度比值的均值。

图片4.png

对于 lof 直来说,如果这个值越高的话,就意味着它的周围邻居的密度要比这个对象要高很多,那么这个数据对象的异常评分就越高,它为异常的可能性就越高,那么如果这个评分越低的话,那么就意味着这个数据对象它的密度比较高,那么它的这样的一个 lof 值就会比较低,就意味着这个数据对象为异常的可能性比较低。

基于邻近性的异常检测算法,就介绍到这里。

 

相关文章
|
SQL 数据挖掘 数据库
从管控角度谈慢SQL治理
慢SQL指的是执行效率低、响应时间长的SQL查询,其定义需综合考虑执行时间、业务场景、资源消耗、频率及影响、用户体验等多个维度。产生慢SQL的原因包括硬件问题、无索引或索引失效、锁等待及不当的SQL语句。慢SQL会增加资源占用,影响其他请求响应时间,可能导致系统故障,引发数据不一致问题,并影响用户体验。优化慢SQL需善用工具发现、设置合理告警机制,并进行分级治理与长期追踪。
|
机器学习/深度学习 数据采集 人工智能
数据工作中的自动化与AI融合实践
【8月更文第13天】随着大数据和人工智能(AI)技术的发展,数据处理和分析变得越来越重要。本文将探讨如何通过自动化工具和AI技术来优化数据处理流程,包括数据清洗、特征工程、模型训练以及结果可视化等步骤。我们将使用Python编程语言及其相关库(如Pandas、Scikit-learn和TensorFlow)作为实现手段。
892 0
|
容灾
共识协议的技术变迁问题之为什么无主共识领域的技术探索在工业界的落地应用不多
共识协议的技术变迁问题之为什么无主共识领域的技术探索在工业界的落地应用不多
227 48
|
Java 编译器 开发者
深入理解Java内存模型(JMM)及其在并发编程中的应用
【7月更文挑战第8天】本文旨在探索Java内存模型(JMM)的奥秘,揭示它在并发编程中的关键作用。通过深入浅出的方式,我们将了解JMM的基本概念、关键特性,以及它如何影响多线程程序的行为。文章将带领读者从理论到实践,探讨JMM对编写高效、可靠并发应用的重要性,并展示如何利用这些知识解决实际问题。
152 7
|
easyexcel Java 数据库
怎样用EasyExcel导出更多代码?
在处理大量数据导出时遇到Java OutOfMemoryError(OOM)。最初使用公司内部工具直接查询全量数据写入Excel,导致OOM。改用阿里EasyExcel后,虽偶发OOM,但问题依旧存在。为解决此问题,采用了分页查询并分批次写入Excel的方法,有效避免了OOM。为简化此过程,封装了一个EasyExcelExport抽象类,包含分批次导出和不分批次导出的方法。使用时需实现getData()和convertSourceData2ExportEntity()方法。通过示例展示了如何利用这个工具类进行分批导出,避免了内存溢出,并减少了重复代码。
240 1
|
存储 机器学习/深度学习 人工智能
未来已来:AI技术的最新趋势与前沿探索
【7月更文第20天】在这个日新月异的时代,人工智能(AI)已经从科幻概念逐渐深入到我们日常生活的方方面面,其发展速度之快超乎想象。从基础的语音识别、图像分析到复杂的决策制定、自动驾驶,AI技术正以前所未有的力量推动着社会进步。本文将带您一同展望AI技术的未来发展方向,深入探讨量子计算、生物计算等新兴领域的前沿探索,以及它们如何重新定义AI的边界。
777 0
|
机器学习/深度学习 数据采集 算法
支持向量机(SVM)在分类问题中的表现与优化方法
支持向量机(SVM)在分类问题中的表现与优化方法
772 1
|
大数据 数据挖掘 Java
大数据平台开发规范示例
大数据平台开发规范示例
514 0
大数据平台开发规范示例
|
Java
java判断时间是否为节假日(或指定的日期),是的话返回true,否返回false
java判断时间是否为节假日(或指定的日期),是的话返回true,否返回false
434 0
|
机器学习/深度学习 计算机视觉
自动编码器
将自动编码器应用于图像处理,主要是利用其无监督学习能力对图像进行降维、特征提取和数据压缩等操作。以下是将自动编码器应用于图像的具体步骤:
193 5