异常值检测方法(Z-score,DBSCAN,孤立森林)

 机器学习_深度学习_入门经典(博主永久免费教学视频系列)

https://study.163.com/course/courseMain.htm?courseId=1006390023&share=2&shareId=400000000398149

微信扫二维码,免费学习更多python资源

数据预处理的好坏,很大程度上决定了模型分析结果的好坏。(Garbage In Garbage Out!)

其中,异常值(outliers)检测是整个数据预处理过程中,十分重要的一环。方法也是多种多样。比如有基于经典统计的方法——三倍于标准差之上的数据为异常值等等。

由于异常值检验,和去重、缺失值处理不同,它带有一定的主观性。所以,想请问一下各位大牛,平时你们更愿意相信哪种或哪几种异常值检测的方法。

作者:阿里云云栖社区
链接:https://www.zhihu.com/question/38066650/answer/549125707
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

异常值检测的常见四种方法,分别为Numeric Outlier、Z-Score、DBSCA以及Isolation Forest

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

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

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

数据集和异常值检测问题

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

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

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

四种异常值检测技术

数字异常值|Numeric Outlier

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

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

作者:阿里云云栖社区
链接:https://www.zhihu.com/question/38066650/answer/549125707
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

使用四分位数乘数值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)。

作者:阿里云云栖社区
链接:https://www.zhihu.com/question/38066650/answer/549125707
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

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

作者:阿里云云栖社区
链接:https://www.zhihu.com/question/38066650/answer/549125707
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

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和孤立森林)可以识别分布左尾的异常值,即平均航班早于预定到达时间到达的那些机场。因此,应该根据具体问题选择合适的检测技术。

参考

https://study.163.com/provider/400000000398149/index.htm?share=2&shareId=400000000398149(博主视频教学主页)

原文地址:https://www.cnblogs.com/webRobot/p/11965155.html

时间: 2024-08-05 11:16:47

异常值检测方法(Z-score,DBSCAN,孤立森林)的相关文章

基于聚类的异常值检测方法( 1 )

韩家炜的书中提到也可以用基于聚类的方法去做Outlier的识别.的确,outlier这个概念是和cluster这样的场景很相关的.对于工业上的数据来说,一般这个cluster的数量会是1或者2.在找出了cluster后,我们可以发现outlier要么不属于任何的cluster,要么说outlier在这个cluster里显得如此的奇怪. 今天我们用DBSCAN的方法去发现cluster和outleir.DBSCAN的介绍可以见这篇文章: http://www.cnblogs.com/chaosim

基于聚类的异常值检测方法( 2 )

韩家炜书中在介绍基于聚类的异常值检测中的第二种方法提到: 如果某对象与最近的簇的距离非常远,则该对象为Outlier.这句话其实有两个意思,第一个意思假定某对象在cluster A中,则它必定距离A簇比较近( 一般指的是球型的cluster ).第二个意思假定某对象是未知的点,距离A簇最近.其实在使用中,大部分情况我们可以把这两个场景合二为一.在本文中,我们假定对象已经在cluster A中. 本文基于聚类的异常值检测的算法思路是: 1 ) 用聚类算法做cluster 2 ) 计算cluster

基于近邻的异常值检测方法

今天写个基于近邻的异常值方法.由于维数灾难,这个方法在高维上慎用.而且对于有多个cluster且密度差别比较大的数据,这个方法是不适用的. 该方法的思路如下: 1) 对与每个样本计算出与其指定半径radius内近邻的个数 2) 如果某个样本近邻的个数少于指定的近邻最小个数minPts, 则为outlier 一般来说所谓的outler,数量会很小,且值会和正常值很不一样.要不然就可能是个cluster的问题了.所以这里默认的minPts我设置为3.那radius怎么办呢.在sklearn.clus

异常检测概览——孤立森林和局部异常因子算法效果是最好的

转自博客:http://www.infosec-wiki.com/?p=140760 一.关于异常检测 异常检测(outlier detection)在以下场景: 数据预处理 病毒木马检测 工业制造产品检测 网络流量检测 等,有着重要的作用.由于在以上场景中,异常的数据量都是很少的一部分,因此诸如:SVM.逻辑回归等分类算法,都不适用,因为: 监督学习算法适用于有大量的正向样本,也有大量的负向样本,有足够的样本让算法去学习其特征,且未来新出现的样本与训练样本分布一致. 以下是异常检测和监督学习相

异常检测 | 使用孤立森林 sklearn.ensemble.IsolationForest 分析异常流量

孤立森林 Isolation Forest(sklearn.ensemble.IsolationForest):一种适用于 连续数据 的 无监督 异常检测方法.与随机森林类似,都是高效的集成算法,相较于LOF,K-means等传统算法,该算法鲁棒性高且对数据集的分布无假设. Isolation Forest算法做非监督式的异常点检测分析,对数据特征的要求宽松: 该算法对特征的要求低,不需要做离散化,不需要数值标准化 不需要考虑特征间的关系(例如共线性)等,不需要额外做特征过滤和筛选 附:SKle

R-CNN,SPP-NET, Fast-R-CNN,Faster-R-CNN, YOLO, SSD系列深度学习检测方法梳理

1. R-CNN:Rich feature hierarchies for accurate object detection and semantic segmentation 技术路线:selective search + CNN + SVMs Step1:候选框提取(selective search) 训练:给定一张图片,利用seletive search方法从中提取出2000个候选框.由于候选框大小不一,考虑到后续CNN要求输入的图片大小统一,将2000个候选框全部resize到227*

【转】目标检测方法——R-FCN

目录 作者及相关链接 方法概括 方法细节 实验结果 总结 参考文献 作者及相关链接 作者: 作者链接:代季峰,何恺明,孙剑 论文链接:论文传送门 代码链接:matlab版,python版 方法概括 R-FCN解决问题--目标检测 整个R-FCN的结构 一个base的conv网络如ResNet101, 一个RPN(Faster RCNN来的),一个position sensitive的prediction层,最后的ROI pooling+投票的决策层 R-FCN的idea出发点(关键思想) 分类需

【Python数据分析基础】: 异常值检测和处理

在机器学习中,异常检测和处理是一个比较小的分支,或者说,是机器学习的一个副产物,因为在一般的预测问题中,模型通常是对整体样本数据结构的一种表达方式,这种表达方式通常抓住的是整体样本一般性的性质,而那些在这些性质上表现完全与整体样本不一致的点,我们就称其为异常点,通常异常点在预测问题中是不受开发者欢迎的,因为预测问题通产关注的是整体样本的性质,而异常点的生成机制与整体样本完全不一致,如果算法对异常点敏感,那么生成的模型并不能对整体样本有一个较好的表达,从而预测也会不准确.从另一方面来说,异常点在某

基于半监督学习方法的异常值检测

在韩家炜书中提到了使用半监督学习方法的异常值检测.在半监督学习中,一部分样本会被标记为“正常”或"离群点“,另一部分样本没有标号,需要算法去估计.貌似这看上去有些像分类得预测问题.但是半监督学习的思想是每次学习后,把最有可能预测正确的样本,加入到下一次迭代的训练集中去.如此不断扩大学习和标记的范围.问题是如何指定一开始的初始标签?( 当然可以人为指定 ) 我们来看这个数据集.绿色部分是被标记“正常”的样本.红色的为“异常”的样本.蓝色的为“未标记”样本点.其实这里我自己采用的初始标记方法很简单,