异常值检测

April 19, 2025 · View on GitHub

1,极值分析

通过scatterplots,histogramas, box和whisker plot分析极值。

查看样本分布(假设高斯分布),去距离1/4和3/4值2-3倍标准差数值的样本。

2,临近方法

基于k-means分析样本质心,去掉离质心特别远的样本。

3,投影方法

通过PCA,SOM,sammon mapping去掉不重要特征。

在数据分析中,异常值检测是识别数据集中与其他观测值显著不同的数据点的过程。这些异常值可能是由于测量误差、实验条件的变化或其它原因造成的。以下是几种常用的异常值检测方法:

1. Z 分数(标准分数)法

  • 描述:通过计算每个数据点的Z分数来判断它是否为异常值。Z分数表示一个数据点与平均值之间的距离(以标准差为单位)。通常认为Z分数绝对值大于3的数据点为异常值。
  • 适用场景:适用于近似正态分布的数据集。

2. IQR(四分位距)法

  • 描述:IQR是第三四分位数(Q3)和第一四分位数(Q1)之差。异常值定义为小于(Q1 - 1.5 \times IQR)或大于(Q3 + 1.5 \times IQR)的数据点。
  • 适用场景:适合用于非正态分布的数据集,对异常值不敏感。

3. 箱线图

  • 描述:箱线图是一种可视化方法,基于IQR法展示数据分布及潜在的异常值。箱线图中的“须”部分显示了上下边界,超出边界的点被标记为异常值。
  • 适用场景:适合用于初步探索性数据分析,快速发现异常值。

4. DBSCAN(基于密度的空间聚类算法)

  • 描述:DBSCAN是一种基于密度的聚类算法,可以自动识别异常点作为噪声点。不属于任何簇的点被认为是异常值。
  • 适用场景:适用于具有复杂形状的数据分布,尤其是当异常值不是孤立点而是形成小簇时。

5. 孤立森林(Isolation Forest)

  • 描述:孤立森林是一种专门用于异常检测的算法,基于决策树构建。该方法通过随机选择特征然后随机选择所选特征的最大值和最小值之间的分割值来“隔离”数据点。
  • 适用场景:高效处理高维数据集,并且不需要标签信息即可识别异常值。

6. 自编码器(Autoencoders)

  • 描述:自编码器是一种神经网络模型,旨在学习输入数据的压缩表示,并尝试从这个压缩表示重建原始输入。异常值通常表现为重建误差较大的数据点。
  • 适用场景:适用于大规模和复杂的高维数据集。

7. 基于统计模型的方法

  • 描述:包括使用特定的概率分布模型拟合数据,然后根据拟合模型评估每个数据点的可能性。如果某个点的概率低于一定阈值,则被视为异常值。
  • 适用场景:需要对数据分布有较好的理解,并能选择合适的概率模型。

每种方法都有其优缺点以及适用的最佳场景。实际应用中,可能需要根据具体问题的特点选择一种或结合多种方法进行异常值检测。