python稳健性检验_有哪些比较好的做异常值检测的方法?

2023-10-30

最近很多小伙伴都比较关注异常值检测的方法,接下来小编就为大家介绍几种,希望能帮到大家!!

摘要: 本文介绍了异常值检测的常见四种方法,分别为Numeric Outlier、Z-Score、DBSCA以及Isolation Forest

在训练机器学习算法或应用统计技术时,错误值或异常值可能是一个严重的问题,它们通常会造成测量误差或异常系统条件的结果,因此不具有描述底层系统的特征。实际上,最佳做法是在进行下一步分析之前,就应该进行异常值去除处理。

在某些情况下,异常值可以提供有关整个系统中局部异常的信息;因此,检测异常值是一个有价值的过程,因为在这个工程中,可以提供有关数据集的附加信息。

目前有许多技术可以检测异常值,并且可以自主选择是否从数据集中删除。在这篇博文中,将展示KNIME分析平台中四种最常用的异常值检测的技术。

数据集和异常值检测问题

本文用于测试和比较建议的离群值检测技术的数据集来源于航空公司数据集,该数据集包括2007年至2012年间美国国内航班的信息,例如出发时间、到达时间、起飞机场、目的地机场、播出时间、出发延误、航班延误、航班号等。其中一些列可能包含异常值。

从原始数据集中,随机提取了2007年和2008年从芝加哥奥黑尔机场(ORD)出发的1500次航班样本。

为了展示所选择的离群值检测技术是如何工作的,将专注于找出机场平均到达延误的异常值,这些异常值是在给定机场降落的所有航班上计算的。我们正在寻找那些显示不寻常的平均到达延迟时间的机场。

四种异常值检测技术

数字异常值|Numeric Outlier

数字异常值方法是一维特征空间中最简单的非参数异常值检测方法,异常值是通过IQR(InterQuartile Range)计算得的。

计算第一和第三四分位数(Q1、Q3),异常值是位于四分位数范围之外的数据点x i:

使用四分位数乘数值k=1.5,范围限制是典型的上下晶须的盒子图。这种技术是使用KNIME Analytics Platform内置的工作流程中的Numeric Outliers节点实现的(见图1)。

Z-score

Z-score是一维或低维特征空间中的参数异常检测方法。该技术假定数据是高斯分布,异常值是分布尾部的数据点,因此远离数据的平均值。距离的远近取决于使用公式计算的归一化数据点z i的设定阈值Zthr:

其中xi是一个数据点,μ是所有点xi的平均值,δ是所有点xi的标准偏差。

然后经过标准化处理后,异常值也进行标准化处理,其绝对值大于Zthr:

Zthr值一般设置为2.5、3.0和3.5。该技术是使用KNIME工作流中的行过滤器节点实现的(见图1)。

DBSCAN

该技术基于DBSCAN聚类方法,DBSCAN是一维或多维特征空间中的非参数,基于密度的离群值检测方法。

在DBSCAN聚类技术中,所有数据点都被定义为核心点(Core Points)、边界点(Border Points)或噪声点(Noise Points)。核心点是在距离ℇ内至少具有最小包含点数(minPTs)的数据点;

边界点是核心点的距离ℇ内邻近点,但包含的点数小于最小包含点数(minPTs);

所有的其他数据点都是噪声点,也被标识为异常值;

从而,异常检测取决于所要求的最小包含点数、距离ℇ和所选择的距离度量,比如欧几里得或曼哈顿距离。该技术是使用图1中KNIME工作流中的DBSCAN节点实现的。

孤立森林|Isolation Forest

该方法是一维或多维特征空间中大数据集的非参数方法,其中的一个重要概念是孤立数。

孤立数是孤立数据点所需的拆分数。通过以下步骤确定此分割数:随机选择要分离的点“a”;

选择在最小值和最大值之间的随机数据点“b”,并且与“a”不同;

如果“b”的值低于“a”的值,则“b”的值变为新的下限;

如果“b”的值大于“a”的值,则“b”的值变为新的上限;

只要在上限和下限之间存在除“a”之外的数据点,就重复该过程;

与孤立非异常值相比,它需要更少的分裂来孤立异常值,即异常值与非异常点相比具有更低的孤立数。因此,如果数据点的孤立数低于阈值,则将数据点定义为异常值。

阈值是基于数据中异常值的估计百分比来定义的,这是异常值检测算法的起点。有关孤立森林技术图像的解释,可以在此找到详细资料。

通过在Python Script中使用几行Python代码就可以实现该技术。

from sklearn.ensemble import IsolationForest

import pandas as pd

clf = IsolationForest(max_samples=100, random_state=42)

table = pd.concat([input_table['Mean(ArrDelay)']], axis=1)

clf.fit(table)

output_table = pd.DataFrame(clf.predict(table))```python

Python Script节点是KNIME Python Integration的一部分,它允许我们将Python代码编写/导入到KNIME工作流程。

在KNIME工作流程中实施

KNIME Analytics Platform是一个用于数据科学的开源软件,涵盖从数据摄取和数据混合、数据可视化的所有数据需求,从机器学习算法到数据应用,从报告到部署等等。它基于用于可视化编程的图形用户界面,使其非常直观且易于使用,大大减少了学习时间。

此外,它被设计为对不同的数据格式、数据类型、数据源、数据平台以及外部工具(例如R和Python)开放,还包括许多用于分析非结构化数据的扩展,如文本、图像或图形。

KNIME Analytics Platform中的计算单元是小彩色块,名为“节点”。一个接一个地组装管道中的节点,实现数据处理应用程序。管道也被称为“工作流程”。

鉴于所有这些特性,本文选择它来实现上述的四种异常值检测技术。图1中展示了异常值检测技术的工作流程。工作流程:1.读取Read data metanode中的数据样本;

2.进行数据预处理并计算Preproc元节点内每个机场的平均到达延迟;

3.在下一个名为密度延迟的元节点中,对数据进行标准化,并将标准化平均到达延迟的密度与标准正态分布的密度进行对比;

4.使用四种选定的技术检测异常值;

5.使用KNIME与Open Street Maps的集成,在MapViz元节点中显示美国地图中的异常值机场。图1:实施四种离群值检测技术的工作流程:数字异常值、Z-score、DBSCAN以及孤立森林

检测到的异常值

在图2-5中,可以看到通过不同技术检测到的异常值机场。其中。蓝色圆圈表示没有异常行为的机场,而红色方块表示具有异常行为的机场。平均到达延迟时间定义的大小了记。

一些机场一直被四种技术确定为异常值:斯波坎国际机场(GEG)、伊利诺伊大学威拉德机场(CMI)和哥伦比亚大都会机场(CAE)。斯波坎国际机场(GEG)具有最大的异常值,平均到达时间非常长(180分钟)。然而,其他一些机场仅能通过一些技术来识别、例如路易斯阿姆斯特朗新奥尔良国际机场(MSY)仅被孤立森林和DBSCAN技术所发现。

对于此特定问题,Z-Score技术仅能识别最少数量的异常值,而DBSCAN技术能够识别最大数量的异常值机场。且只有DBSCAN方法(MinPts = 3/ℇ= 1.5,欧几里德距离测量)和孤立森林技术(异常值的估计百分比为10%)在早期到达方向发现异常值。图2:通过数字异常值技术检测到的异常值机场图3:通过z-score技术检测到的异常机场图4:DBSCAN技术检测到的异常机场图5:孤立森林技术检测到的异常机场

总结

本文在一维空间中描述并实施了四种不同的离群值检测技术:2007年至2008年间所有美国机场的平均到达延迟。研究的四种技术分别是Numeric Outlier、Z-Score、DBSCAN和Isolation Forest方法。其中一些用于一维特征空间、一些用于低维空间、一些用于高维空间、一些技术需要标准化和检查维度的高斯分布。而有些需要距离测量,有些需要计算平均值和标准偏差。有三个机场,所有异常值检测技术都能将其识别为异常值。但是,只有部分技术(比如,DBSCAN和孤立森林)可以识别分布左尾的异常值,即平均航班早于预定到达时间到达的那些机场。因此,应该根据具体问题选择合适的检测技术。

参考

以上为译文,由阿里云云栖社区组织翻译。

本文为云栖社区原创内容,未经允许不得转载。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python稳健性检验_有哪些比较好的做异常值检测的方法? 的相关文章

  • 宋浩概率论与数理统计笔记(一)

    基本信息 本篇是根据宋浩老师在B站的概率论与数理统计完成 标明了每一个知识点所在的时间点 在学数学的时候笔记必不可少 但频繁暂停记笔记又浪费时间 那你就借他山之石 快速掌握基本数学知识 宋浩老师视频的时长分布 Lesson1 随机试验与随机
  • [Unity][Unity光照][Unity摄像机]代码来改变场景变黑

    要使得场景中完全变黑 同时需要几个操作 1 控制场景的光源 比如新场景中的 直射光Directional Light 把所有光源的active设置为false 2 对摄像机背景进行设置 设置Camera的ClearFlags不为Skybox
  • 国内镜像安装Centos7的jenkins.rpm

    Jenkins官方推荐的安装方式 不过该方式有两个弊端 第一 该方式默认安装的是Jenkins的最新版本 所以无法自定义安装版本 第二 使用国外的镜像源 所以其下载速度极慢 Jenkins华为镜像源 Jenkins清华大学镜像源 Jenki
  • python邮件合并的基本操作步骤_Python SMTP:将电子邮件合并为一个

    The objective is to send the email to two people at a time I prepare the email message I iterate over the pairs and send
  • 数组顺序颠倒php,php怎么将数组顺序反转

    PHP中可以使用array reverse 函数来将数组顺序反转 语法格式为 array reverse array preserve 参数preserve可省略 用于规定是否保留原始数组的键名 只针对数字键名 非数字的键则不受影响 本教程
  • 解决jupyter notebook中出现"Figure size 640x480 with 1 Axes"不显示图片的方案

    问题代码 可忽略代码 import numpy as np from sklearn feature selection import SelectKBest f classif import matplotlib pyplot as pl
  • R语言实现读取excel

    可以使用R语言中的 readxl 包来读取excel文件 可以使用read excel 函数读取整个工作簿或指定工作表 示例代码如下 安装包 install packages readxl 载入包 library readxl 读取整个工作
  • SSD咯````

    文章目录 SSD咯 为什用卷积代替全连接 为什么conv4 3有一个Normalize操作 为什么采用anchor 如何匹配anchor 损失函数 SSD咯 SSD Single Shot MultiBox Detector 的主干网络基于
  • c++求余的用处

    求余符号常常用于数组的数值重新定位的问题 求余符号会把数组穿成一个环状的结构 例如0 10 0 1 10 1 如果将一个值向右平移两个位置则 9 2 10 1 则会在1的位置上出现
  • ARMV8体系结构简介:AArch64系统级体系结构之VMSA

    1 前言 2 VMSA概述 2 1 ARMv8 VMSA naming VMSAv8 整个转换机中 地址转换有一个或两个stage VMSAv8 32 由运行AArch32的异常级别来管理 VMSAv8 64 由运行AArch64的异常级别
  • Bulma Tracy 小笔记

    https bulma zcopy site column cd C Program Files nginx start nginx exe 启动服务 55555 cd front account cd service gateway cd
  • 十八年开发经历小结

    原文地址 http blog csdn net binarytreeex article details 7999853 comments 本来题目想写为 十八年开发经历总结 但是一想我的开发生涯还没结束 怎么就总结了呢 再说个人的一些积累
  • Nuget 配置文件的位置

    最近在 Visual Studio 中使用 Nuget 时 发现总是连接代理服务器 忘了什么时候配置的了 找了半天没找到配置位置 最后发现在这个地方 appdata NuGet 找到 NuGet Config 文件 其中的
  • L2-001 紧急救援 (25 分)

    题目 题目链接 题解 最短路 扩展 算是朴素Dijkstra模板吧 Dijkstra算法 额外加上记录路径 记录到达此处的最短距离 记录以最短距离到达此处的最多人数 更新方式 假设未确定距离的点集中的点t距离已确定距离的点集最近 以t对其他
  • Redis 网络模型

    redis网络模型背景 1 进程分为用户空间和内核空间 用户空间和内核空间共同目标是对系统资源的访问 为了提高IO效率 给用户空间和内核空间都加入了缓存 访问的流程为读写两部分 读 用户空间访问内核空间的缓存产看是否存在资源 若没有内核空间
  • log4j自定类的日志信息打印到指定文件

    需求 现在有需要把每月的定时任务的日志信息 INFO级别的 打印到自定义的emailAccount log文件中 这个跑批类日志信息需要跟其他文件中INFO区分开来 也就是说emailAccount log文件不能有别的文件的INFO级别的
  • 机器学习——Dropout原理介绍

    一 引言 因为在机器学习的一些模型中 如果模型的参数太多 而训练样本又太少的话 这样训练出来的模型很容易产生过拟合现象 在训练bp网络时经常遇到的一个问题 过拟合指的是模型在训练数据上损失函数比较小 预测准确率较高 如果通过画图来表示的话
  • JavaScript如何设置hover属性?

    hover就是选择鼠标指针浮动在其上的元素 并可以设置其样式的 但是在DOM操作中 我们并不可以直接设置hover属性 而要想有这个效果我们可以直接给元素注册一个onmouseover 鼠标进入 和onmouseout 鼠标离开 事件 然后
  • 算法-树结构

    算法 树结构 一 概述 一维结构 数组 链表 跳表 栈 队列等 这些结构都是 线性存储结构 二维结构 树 图 是一种非线性存储结构 存储的是具有 一对多 关系的数据元素的集合 树 Tree 结点 使用树结构存储的每一个数据元素都被称为 结点

随机推荐

  • ubuntu下安装NerdTree和动态语法检测工具ALE

    1 文件浏览插件NerdTree的安装 1 NerdTree的安装 在 vimrc文件中添加 Plugin scrooloose nerdtree 然后重启Vim 输入并运行命令 PluginInstall 完成安装 2 配置NerdTre
  • 微信小程序之摇骰子源代码分享

    通过这个案例你可以知道 按钮事件 切换image图片 陀螺仪事件 与按钮事件逻辑相同 啥者不用说了 直接上代码 https github com lzc alioo weiapp2 备注 图片是网上百度的 不够好 有小伙伴有好图片替换的话欢
  • springboot+mina框架服务端的实现(一) ------ pom依赖、mina配置类、自定义协议以及编解码器的实现

    来吧 一步一步搭建mina服务端 原理往后再说 参考博客 矢落叶 博客 首先利用springboot的插件新建一个maven项目 一 pom xml 所需依赖 首先加入mina核心依赖
  • 【教程】在VSCode中使用码云进行代码管理

    教程 在VSCode中使用码云进行代码管理 前言 本教程核心内容 本文主要是整合了网上教程 从Git安装开始 配置关联本地仓库到码云 最终用上VScode这个流程 非常基础和简单 照着操作就行了 起因 平时常写python脚本 原先用Sub
  • 因果推断总结

    目录 因果关系的三个层级 因果推断的三个假设 因果性的常见谬误 因果推断偏差原因 因果推断的两种流派 因果推断前提假设 因果推断的方法与实操流程 因果关系的三个层级 因果推断是基于统计学方法刻画变量之间的因果关系 因果关系存在三个层级 第一
  • Java堆,方法区,直接内存

    Java的内存区中 为线程共有的有三部分 Java堆 方法区 直接内存 其中方法区中包含运行时常量池 直接内存并不属于Java的常规内存区 1 Java堆是被所有线程共享的一块内存 在启动虚拟机时创建 通常 所有的对象实例及数组都要在堆上分
  • [pytorch报错]ValueError: num_samples should be a positive integer value, but got num_samples=0

    项目场景 在mmeg中运行自定义数据集报错情况 问题描述 运行代码后 mmSeg提示说 2021 12 08 18 39 33 991 mmseg INFO Loaded 0 images 说明模型没有加载数据 数据地址出错 报错信息 Fi
  • 轮胎的魔术公式(Magic Fomula)模型

    本篇结合Adams中的TR rear pac89 tir文件 介绍一下魔术公式的基本知识 使用魔术公式的轮胎模型主要有Pacejka 89 Pacejka 94 MF Tyre MF Swift四种 1 Pacejka 89和 94轮胎模型
  • java常用框架总结

    今天想看看现在常用的框架有哪些 发现网上文章不多决定根据自己的理解写一篇文章 如有错误希望大家包涵 1 java的5大框架 springboot都不说了 网上资料很多 2 缓存工具 Ehcache redis 3 消息队列中间工具 Rabb
  • 层次聚类AgglomerativeClustering()树形图可视化与children_属性解析

    层次聚类函数AgglomerativeClustering 我们主要来讲解层次聚类的可视化画图和层次聚类后返回的children 属性 children 属性的理解需要借助可视化图形 1 层次聚类的可视化画图 1 1步骤 step1 使用
  • Linux中修改jar包中的文件内容

    1 命令行中输入vim jar包路径 2 回车 打开jar包中的文件目录 并定位到要修改的文件位置 3 回车 打开文件内容进行修改 4 修改后 Ctrl wq保存退出上步 再次Ctrl q退出 完成修改
  • 计算机二级页表页框大小,两级页表

    本文是在基本分页存储管理的基础上对分页管理的优化 在上篇文章中说到 操作系统会为每个进程建立一张页表 实现页号和内存块号之间的对应关系 本文从单级页表存在的问题引出两级页表 以及两级页表如何实现地址的变换 1单级页表存在的问题 假设某计算机
  • 两层和三层的讨论

    下面的东西都是转贴的 包括那个声明 都跟我没关系 google搜出来的 在这之前我的确觉得DataSetProvider ClientDataSet和我理解中的三层有点差别 看完这些讨论 我的结论是 DataSetProvider Clie
  • 2023华为OD机试真题-跳格子2JAVA、Python、C++)

    题目描述 小明和朋友玩跳格子游戏 有 n 个连续格子组成的圆圈 每个格子有不同的分数 小朋友可以选择从任意格子起跳 但是不能跳连续的格子 不能回头跳 也不能超过一圈 给定一个代表每个格子得分的非负整数数组 计算能够得到的最高分数 输入描述
  • BFS常见模板题(初学BFS推荐,附例题由浅入深)

    BFS类题目 主要考查对广度搜索的理解 BFS相比于暴力枚举来说效率更高 BFS只要将范围矩阵扫一次即可得出答案 本文通过队列来实现求解 当然也可以用其他方式实现广度搜索 First question 馋嘴羊 BFS思路 可能会比较抽象 建
  • 图论之Dijkstra

    Dijkstra模板 include
  • JavaScript V8 > 牛客OJ在线编程常见输入输出练习场

    C 处理输入输出 牛客OJ在线编程常见输入输出练习场 A A B 1 B A B 2 C A B 3 D A B 4 E A B 5 F A B 6 G A B 7 H 字符串排序 1 I 字符串排序 2 J 字符串排序 3 牛客OJ在线编
  • C语言函数大全-- _w 开头的函数(4)

    w 开头的函数 4 1 wstrtime 1 1 函数说明 1 2 演示示例 1 3 运行结果 2 wstrtime s 2 1 函数说明 2 2 演示示例 2 3 运行结果 3 wsetlocale 3 1 函数说明 3 2 演示示例 3
  • STM32 ADC

    1 什么是ADC ADC指模数转换 模拟信号是指时间幅值均连续的信号 对其采样后得到的信号称之为离散时间信号 若再对其进行量化处理则得到数字信号 请注意对模拟信号采样得到的信号不是数字信号 仅仅是离散时间信号 详情请见数字电子电路 信号与系
  • python稳健性检验_有哪些比较好的做异常值检测的方法?

    最近很多小伙伴都比较关注异常值检测的方法 接下来小编就为大家介绍几种 希望能帮到大家 摘要 本文介绍了异常值检测的常见四种方法 分别为Numeric Outlier Z Score DBSCA以及Isolation Forest 在训练机器