LOF(局部离群因子)异常值检测

2024-05-03 20:36

本文主要是介绍LOF(局部离群因子)异常值检测,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

LOF(Local Outlier Factor,局部离群因子)异常值检测的原理和实现步骤时,我们可以进一步详细解释如下:

LOF(局部离群因子)异常值检测代码获取戳此处代码获取戳此处代码获取戳此处代码获取戳此处

原理

LOF算法基于密度的概念来判断数据集中的异常点。它比较每个数据点与其邻近点的局部密度,以确定该点是否异常。如果一个点的局部密度明显低于其邻近点,则它被视为异常点。

LOF算法的关键在于“局部”的概念,这意味着它考虑了数据点的邻近区域,而不是全局数据集。这使得LOF算法能够识别局部异常点,即使它们在整个数据集中的位置并不异常。

实现步骤

  1. 计算k距离(k-distance):
    • 对于数据集中的每个点p,找到距离它最近的k个点的最大距离,这个距离就是p的k距离。
    • k距离表示了p的邻域大小。
  2. 计算k距离邻域(k-distance neighborhood):
    • 对于数据集中的每个点p,找到所有距离p不超过其k距离的点,这些点组成的集合就是p的k距离邻域。
  3. 计算可达距离(Reachability Distance):
    • 对于点p和其k距离邻域中的点o,p关于o的可达距离定义为o的k距离和p与o之间的实际距离中的较大值。
    • 可达距离用于避免距离p很近但k距离很大的点对p的局部密度产生过大的影响。
  4. 计算局部可达密度(Local Reachability Density,LRD):
    • 对于点p,其局部可达密度是其k距离邻域中所有点关于p的可达距离之和的倒数,再除以k。
    • 局部可达密度越高,说明p的邻域点越密集,p越可能是正常点。
  5. 计算局部离群因子(Local Outlier Factor,LOF):
    • 对于点p,其LOF是其k距离邻域中所有点的局部可达密度与p的局部可达密度的比值的平均值。
    • 如果LOF接近1,说明p的密度与其邻域点相似,p是正常点;如果LOF远大于1,说明p的密度明显低于其邻域点,p是异常点。
  6. 异常检测:
    • 根据LOF值,设定一个阈值来判断哪些点是异常点。通常,LOF值大于某个阈值的点被认为是异常点。

注意事项

  • k值的选择对LOF算法的结果有很大影响。k值太小可能导致误报(将正常点误判为异常点),k值太大可能导致漏报(漏掉一些真正的异常点)。
  • LOF算法对高维数据可能不太有效,因为高维空间中点的距离度量可能不太准确。
  • LOF算法的计算复杂度较高,对于大规模数据集可能需要较长的计算时间。

实际应用

LOF算法在欺诈检测、网络安全、工业监测等领域都有广泛的应用。例如,在信用卡欺诈检测中,LOF算法可以帮助识别出与正常交易模式显著不同的异常交易。在网络安全领域,LOF算法可以用于检测网络流量中的异常模式,从而识别出可能的网络攻击。

部分代码展示

function lof = LOF(dist,K)
m=size(dist,1);                 %m为对象数,dist为两两之间的距离
distance = zeros(m,m);
num = zeros(m,m);               %distance 和num用来记录排序后的顺序,和对象编号顺序
kdistance = zeros(m,1);         %计算每个对象的kdistance
count  = zeros(m,1);            %k邻域的对象数
reachdist = zeros(m,m);         %计算两两之间的reachable-distance
lrd = zeros(m,1);
lof = zeros(m,1);
%计算k-距离
for i=1:m[distance(i,:),num(i,:)]=sort(dist(i,:),'ascend');kdistance(i)=distance(i,K+1); count(i) = -1;%自己的距离为0,要去掉自己for j = 1:mif dist(i,j)<=kdistance(i)count(i) = count(i)+1;endend
end
for i = 1:mfor j=1:i-1reachdist(i,j) = max(dist(i,j),kdistance(j));reachdist(j,i) = reachdist(i,j);end

数据集格式为excel

结果图

这篇关于LOF(局部离群因子)异常值检测的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/957592

相关文章

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

烟火目标检测数据集 7800张 烟火检测 带标注 voc yolo

一个包含7800张带标注图像的数据集,专门用于烟火目标检测,是一个非常有价值的资源,尤其对于那些致力于公共安全、事件管理和烟花表演监控等领域的人士而言。下面是对此数据集的一个详细介绍: 数据集名称:烟火目标检测数据集 数据集规模: 图片数量:7800张类别:主要包含烟火类目标,可能还包括其他相关类别,如烟火发射装置、背景等。格式:图像文件通常为JPEG或PNG格式;标注文件可能为X

基于 YOLOv5 的积水检测系统:打造高效智能的智慧城市应用

在城市发展中,积水问题日益严重,特别是在大雨过后,积水往往会影响交通甚至威胁人们的安全。通过现代计算机视觉技术,我们能够智能化地检测和识别积水区域,减少潜在危险。本文将介绍如何使用 YOLOv5 和 PyQt5 搭建一个积水检测系统,结合深度学习和直观的图形界面,为用户提供高效的解决方案。 源码地址: PyQt5+YoloV5 实现积水检测系统 预览: 项目背景

AI基础 L9 Local Search II 局部搜索

Local Beam search 对于当前的所有k个状态,生成它们的所有可能后继状态。 检查生成的后继状态中是否有任何状态是解决方案。 如果所有后继状态都不是解决方案,则从所有后继状态中选择k个最佳状态。 当达到预设的迭代次数或满足某个终止条件时,算法停止。 — Choose k successors randomly, biased towards good ones — Close

JavaFX应用更新检测功能(在线自动更新方案)

JavaFX开发的桌面应用属于C端,一般来说需要版本检测和自动更新功能,这里记录一下一种版本检测和自动更新的方法。 1. 整体方案 JavaFX.应用版本检测、自动更新主要涉及一下步骤: 读取本地应用版本拉取远程版本并比较两个版本如果需要升级,那么拉取更新历史弹出升级控制窗口用户选择升级时,拉取升级包解压,重启应用用户选择忽略时,本地版本标志为忽略版本用户选择取消时,隐藏升级控制窗口 2.

线性因子模型 - 独立分量分析(ICA)篇

序言 线性因子模型是数据分析与机器学习中的一类重要模型,它们通过引入潜变量( latent variables \text{latent variables} latent variables)来更好地表征数据。其中,独立分量分析( ICA \text{ICA} ICA)作为线性因子模型的一种,以其独特的视角和广泛的应用领域而备受关注。 ICA \text{ICA} ICA旨在将观察到的复杂信号

Thymeleaf:生成静态文件及异常处理java.lang.NoClassDefFoundError: ognl/PropertyAccessor

我们需要引入包: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>org.springframework</groupId><artifactId>sp

深入理解数据库的 4NF:多值依赖与消除数据异常

在数据库设计中, "范式" 是一个常常被提到的重要概念。许多初学者在学习数据库设计时,经常听到第一范式(1NF)、第二范式(2NF)、第三范式(3NF)以及 BCNF(Boyce-Codd范式)。这些范式都旨在通过消除数据冗余和异常来优化数据库结构。然而,当我们谈到 4NF(第四范式)时,事情变得更加复杂。本文将带你深入了解 多值依赖 和 4NF,帮助你在数据库设计中消除更高级别的异常。 什么是

消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法

消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法   消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法 [转载]原地址:http://blog.csdn.net/x605940745/article/details/17911115 消除SDK更新时的“