每位数据科学家都应了解的五种检测异常值/异常的方法 (Python 代码)

2025年1月7日 | 5 分钟阅读

在数据科学中,区分异常值或不一致项至关重要,因为它们会极大地影响数据研究的结果。数据点,通常称为异常值,是指与其他观测值有显著偏差的点。这些观测值可能是由于估计不准确、测试错误或异常事件造成的。异常检测的应用多种多样,包括质量控制、欺诈检测和网络安全。在本教程中,我们将通过 Python 代码示例,探讨一些识别异常值或离群值的方法。

数据科学家的不同异常值/离群值检测方法

在下一节中,我们将讨论数据科学家常用的不同异常值或离群值检测方法。

其中一些方法如下:

  1. Z 分数
  2. IQR(四分位距)
  3. DBSCAN(基于密度的噪声应用空间聚类)
  4. 隔离森林
  5. LOF(局部离群因子)

现在,我们将通过使用 Python 编程语言的示例来理解这五种方法。

理解 Z 分数法

Z 分数法是一种基本检测方法,用于计算一个数据点与平均值的标准差数量。如果一个数据点的 Z 分数超过某个阈值(通常是 3 或 -3),则将其标记为异常值。

方法

Z 分数计算如下:

代码

输出

Outliers using Z-Score method: (array([11], dtype=int64),)

理解 IQR(四分位距)法

四分位距(Interquartile Range),简称 IQR,是一种非参数方法,用于通过数据的中间 50% 的分布来查找异常值或离群值。异常值被定义为与第一四分位数(Q1)或第三四分位数(Q3)相差 1.5 倍 IQR 的数据点。

方法

IQR 的计算方法是:

使用以下方法检测异常值:

  • 下限 = Q1 − 1.5 × IQR
  • 上限 = Q3 + 1.5 × IQR

代码

输出

Outliers using IQR method: [100]

理解 DBSCAN(基于密度的噪声应用空间聚类)法

基于密度的噪声应用空间聚类(Density-Based Spatial Clustering of Applications with Noise),简称 DBSCAN,是一种聚类方法,用于在数据点密集聚集并形成簇时,以及当一个点孤立在低密度区域时,检测和分类异常值或离群值。

方法

DBSCAN 需要两个参数:

  1. min_samples:min_samples 参数是在邻域内必须形成簇的样本数量。
  2. eps:eps 参数是两个样本之间被视为邻居的最大距离。

异常值被定义为不属于任何簇的点。

代码

输出

Outliers using DBSCAN method: [[ 27]
 [100]]

理解 Isolation Forest 法

Isolation Forest 算法使用一种方法来划分观测值,通过随机选择、包含和将异常值或离群值隔离到最大值和最小值。它的原理是异常值数量少且独特,这使得将它们分离出来更加容易。

方法

划分是通过创建路径长度较短的树来完成的,森林会在异常值被隔离在树的底部附近的位置种植树木。

代码

输出

Outliers using Isolation Forest method: [[ 27]
 [100]]

LOF(局部离群因子)法

局部离群因子(Local Outlier Factor),简称 LOF,是一种用于衡量给定数据点相对于其邻居的局部密度偏差的方法。异常值被定义为密度明显低于其邻居密度的点。

方法

LOF 方法用于对具有相似密度的区域进行排序和识别,并找出密度明显低于其邻居的区域,LOF 将每个点的局部密度与其邻居的密度进行比较。

代码

输出

Outliers using LOF method: [[ 27]
 [100]]

结论

在数据预处理阶段,识别异常值至关重要,因为它们有可能扭曲解释性发现并阻碍模型性能。Z 分数、IQR、DBSCAN、Isolation Forest 和 LOF 是我们在本文中考察的五种主要的异常值检测方法。每种方法都有其优点,并且适用于不同类型的数据和应用。通过理解和实践这些技术,数据科学家可以确保其数据分析的准确性和一致性。

拥有这些方法作为工具箱,您将能够很好地识别和管理数据集中的异常值,从而构建更可靠、更准确的模型。