使用 Python 进行异常值检测的统计方法

2025年7月16日 | 阅读 7 分钟

异常检测是数据分析的一个重要组成部分,用于识别不符合预期行为的异常模式。这些异常或离群值可能代表重要的洞察,例如欺诈检测、系统故障或客户行为变化。Python 凭借其丰富的库生态系统,为实现异常检测的统计方法提供了强大的工具。

什么是异常检测?

异常检测是识别数据集中与大部分数据显著不同的异常数据点、模式或事件的过程。这些异常数据点,称为异常或离群值,可能表示重要信息或问题,包括欺诈、系统故障或意想不到的趋势。

异常检测的关键方面

异常检测涉及识别与规范显著偏离的数据点、模式或行为。以下是需要了解的关键组成部分:

异常类型

异常,也称为离群值,是指与大部分数据显著不同的异常数据点或模式。它们可分为三种主要类型:

1. 点异常

单个数据点与数据集的其余部分显著不同。

定义:当单个数据点偏离预期范围或分布时发生。

示例

  1. 35°C 的温度在热带地区可能很正常,但在冬季环境中则异常。
  2. 产品发布期间网站访问量增加是正常的,但在停机期间出现同样情况则可疑。

2. 集体异常

一组数据点共同显示出异常模式,即使单个数据点可能看起来不异常。

定义:集体异常涉及一系列或一组数据点,当它们一起分析时,会偏离预期模式。

示例

  1. 网络活动突然爆发,表明发生了 分布式拒绝服务 (DDoS) 攻击。
  2. 短时间内连续发生的一组设备故障。

了解这些异常类型有助于选择合适的检测策略并将解决方案定制到特定情况,从而提高异常检测系统的准确性和效率。

应用

  • 欺诈检测:识别银行或电子商务系统中的异常交易。
  • 网络安全:检测网络攻击或未经授权的访问。
  • 医疗保健:发现异常健康指标或诊断结果。
  • 工业监控:识别设备故障或运营效率低下。
  • 零售和营销:监控异常的客户购物行为。

检测技术

  • 统计方法:使用 Z 分数、四分位距 (IQR) 和高斯分布等技术来检测异常。
  • 机器学习:利用监督或无监督模型,如 支持向量机 (SVM)聚类算法 或神经网络。
  • 信号处理:使用时间序列分析和傅里叶变换来检测时间异常。
  • 混合方法:结合统计、机器学习和领域特定规则以获得更高的准确性。

挑战

  • 数据不平衡:异常通常很少见,这使得它们更难发现。
  • 高维度:大型复杂数据集需要高级方法来隔离异常。
  • 动态模式:异常会随着时间演变,需要自适应系统。
  • 误报/漏报:微调检测模型以避免误分类,同时保持灵敏度。

评估指标

  • 精确率和召回率:衡量检测到的异常的准确性。
  • F1-分数:平衡精确率和召回率以评估整体有效性。
  • 曲线下面积 (AUC):使用接收者操作特征 (ROC) 曲线评估异常检测模型的性能。

通过了解这些方面,组织可以选择合适的技术和工具来实施根据其特定需求量身定制的有效异常检测系统。

异常检测的常用统计方法

统计方法通过分析数据的分布、离散度和可变性为检测异常提供了基础。这些方法易于实施,并且在识别具有清晰模式或对正常性有假设的数据集中的离群值方面非常有效。以下是一些广泛使用的统计方法:

1. Z-分数分析

Z-分数分析是一种统计技术,通过测量数据点偏离数据集均值的距离(以标准差表示)来识别异常。它是一种简单有效的方法,用于检测正态分布数据中的离群值。

它的工作原理

Z-分数量化了数据点相对于均值的位置,并按标准差进行缩放。

如果数据点的 Z-分数超过指定阈值(通常为 3 或 -3),则将其视为异常。

公式

数据点 X 的 Z-分数计算公式为:

Z = (X - μ) / σ

其中

X:数据点。

μ:数据集的均值。

σ:数据集的标准差。

Z-分数分析的步骤

  • 计算数据集的均值 (μ)。
  • 计算标准差 (σ)。
  • 使用公式确定每个数据点的 Z-分数。
  • 将 Z-分数大于阈值(例如,Z < -3)的数据点标记为异常。

优点

  1. 易于计算和解释。
  2. 对于正态分布的数据集有效。
  3. 适用于单变量异常检测。

局限性

  1. 假设数据呈正态分布,这并非总是如此。
  2. 对极端值敏感,因为它们会扭曲均值和标准差。
  3. 可能无法在具有高维度或复杂模式的数据集中表现良好。

何时使用 Z-分数分析

  • 适用于中小型数据集。
  • 当数据服从或近似正态分布时。
  • 用于识别金融交易、传感器读数或其他定量数据中的异常。

Z-分数分析是异常检测的一个多功能起点,并为理解更高级技术奠定了基础。

2. 四分位距 (IQR) 方法

四分位距 (IQR) 方法是一种统计技术,通过测量数据中间 50% 的分布来检测异常。它在不假设特定分布的情况下,可有效识别数据集中的离群值。

它的工作原理

A. 数据集分为四分位数

  • Q1:第一四分位数(第 25 百分位数),表示 25% 的数据低于该值。
  • Q3:第三四分位数(第 75 百分位数),表示 75% 的数据低于该值。

B. 四分位距 (IQR) 计算公式为:IQR = Q3 - Q1

C. 范围 [Q1 - 1.5 × IQR, Q3 + 1.5 × IQR] 之外的数据点被视为离群值。

IQR 方法的步骤

  • 按升序排序数据。
  • 计算 Q1 和 Q3(第 25 和第 75 百分位数)。
  • 计算 IQR,即 Q3 - Q1。
  • 确定下限和上限
    • 下限:Q1 - 1.5 × IQR
    • 上限:Q3 + 1.5 × IQR
  • 将这些边界之外的任何数据点标记为异常。

优点

  • 不假设数据的特定分布。
  • 对极端值的影响具有鲁棒性(因为它侧重于四分位数)。
  • 简单易懂。

局限性

  • 对于具有偏斜分布或异常不显著影响 IQR 的数据集无效。
  • 对于四分位数无意义的小数据集可能效果不佳。

何时使用 IQR 方法

  • 用于不具备明确分布假设的数据集中的单变量异常检测。
  • 常用于探索性数据分析 (EDA) 和预处理。
  • 适用于检测交易金额、传感器读数或调查响应等数据集中的异常。

IQR 方法是一种直接可靠的方法,特别是对于具有适度变异性的数据集,它是异常检测工作流程中的重要工具。

3. Grubbs' 检验

Grubbs' 检验是一种统计方法,用于检测近似正态分布的数据集中的单个离群值。它基于假设检验,对于确定数据集中的最极端值是否与其余值显著不同特别有效。

它的工作原理

  • 零假设 (H0):数据集中没有离群值。
  • 备择假设 (H1):最极端值是离群值。
  • Grubbs' 检验计算一个检验统计量,该统计量将极端值(最大值或最小值)与数据集的均值进行比较,并按标准差进行缩放。

检验统计量

检验统计量 G 的计算公式为:G = |𝑋i - 𝑋̅| / σ

其中

  • 𝑋i:可疑离群值(最大值或最小值)。
  • 𝑋̅:数据集的均值。
  • σ:数据集的标准差。

Grubbs' 检验的步骤

  1. 计算数据集的均值 (𝑋̅) 和标准差 (σ)。
  2. 计算最极端值(最大值或最小值)的 G。
  3. 将 G 与 Grubbs' 检验表中的临界值进行比较,或使用统计软件包进行计算。
    • 如果 G 超过临界值,则极端值被视为离群值。
  4. 可选地,迭代重复该过程以检测多个离群值。

优点

  • 对于检测单个离群值具有鲁棒性。
  • 提供统计显著性,减少异常识别中的主观性。
  • 对正态分布数据集有效。

局限性

  • 假设数据呈近似正态分布。
  • 一次只能检测一个离群值,需要迭代应用才能检测多个离群值。
  • 对于具有多个或聚类异常的大型数据集可能效果不佳。

何时使用 Grubbs' 检验

  • 处理中小型数据集时。
  • 对于怀疑存在单个离群值的数据集。
  • 在质量控制、实验室测量或传感器读数等应用中。

Grubbs' 检验是统计异常检测的强大工具,可作为自信识别离群值的基准。


下一主题