← 返回目录
Chapter 03Detecting Outliers

离群值检测

通过交互式可视化理解离群值的破坏力,掌握多种检测方法

🎯 影响可视化📊 直方图分析📈 百分位检测🔍 实时对比

"数学领域,提出问题比解决问题,更珍贵。"

— 格奥尔格·康托尔 (Georg Cantor),德国数学家,1845-1918

3.1

这几个数有点不合群?

理解离群值的定义和破坏力

离群值(Outlier),又称逸出值、异常值,指的是样本数据中和其他数值差别较大的数值,也就是明显地偏大或偏小的值。离群值可能由测量误差、数据录入错误、或真实的异常现象产生。

⚠️

测量误差

设备故障、环境干扰等导致的异常读数

例如:温度传感器故障读出-999°C
✏️

录入错误

人为失误导致的数据输入错误

例如:鸢尾花花萼长度误输为5.2米(应为5.2cm)
💎

真实异常

罕见但真实存在的极端情况

例如:极端天气事件、黑天鹅事件

💥离群值的破坏力

离群值可能对多种统计分析造成严重影响:

均值极度敏感
方差/标准差显著增大
线性回归斜率偏移
相关性虚假相关
最大/最小值直接污染
中位数相对稳健
🎓
关键洞察:
• 即使1-2个离群点,也可能让方差增加100%以上
• 回归线斜率会被离群点"拉扯",导致预测偏差
• 中位数相对稳健,这也是为什么有时用中位数代替均值
✦
3.2

直方图:单一特征分布

用百分位界定分布边界,识别潜在离群值

直方图(Histogram)是观察数据分布最直观的方法。通过顺序排列数据,离群值必然出现在分布的两端。结合百分位(Percentile),我们可以精确界定"尾部"数据的边界。

📐 什么是百分位?

定义

将数据按升序排列后,第P%个位置的值称为P百分位。例如,第50百分位(中位数)表示50%的数据小于等于该值。

计算方法

1. 将n个数据排序
2. 计算位置:index = (P/100) × (n-1)
3. 若index为整数,取该位置值
4. 否则,对相邻两值线性插值
🔴

离群值检测模式

使用1%和99%百分位界定分布的左尾和右尾

1%百分位:左尾边界
50%百分位:中位数
99%百分位:右尾边界
💡 超出[1%, 99%]范围的值可能是离群点
🟢

四分位数模式

使用25%、50%、75%将数据分为四份

25%百分位(Q1):第一四分位
50%百分位(Q2):中位数
75%百分位(Q3):第三四分位
💡 IQR = Q3 - Q1,用于箱型图定义离群值

📈KDE密度曲线

核密度估计(Kernel Density Estimation)用平滑曲线展示数据分布

✓ 比直方图更平滑
✓ 不受箱宽影响
✓ 更好展示多峰分布

📏Rug图(毯图)

在X轴上用短竖线标注每个数据点的精确位置

✓ 保留原始数据信息
✓ 显示数据密集区域
✓ 识别离群点聚集
✦
3.3

散点图:成对特征分布

多变量可视化,发现多维离群值

前面讲的可视化方案均用来发现单一特征可能存在的离群值。采用散点图,可以发现成对特征数据可能存在的离散点。通过观察多个特征的交互关系,能够识别出单变量分析难以发现的异常模式。

💡
多维离群值的重要性:
• 某些点在单个特征上看起来正常,但在多个特征的组合上却是异常的
• 成对特征分析图(Pairplot)可以同时观察所有特征对的关系
• 散点图上远离主体分布的点,以及KDE等高线图上密度极低的区域都可能包含离群值
✦
3.4

QQ图:分位数-分位数

检验正态性,识别尾部离群值

QQ图(Quantile-Quantile Plot)是散点图的一种,也可以用来发现离群值。《统计至简》第9章介绍过QQ图。QQ图的横坐标为某一样本的分位数,纵坐标则是另一样本的分位数。QQ图的纵坐标一般是正态分布,当然也可以是其他分布。

📊
QQ图与离群值检测:
• 如果两分布相似,散点在QQ图上趋近于落在一条直线上
• 两端明显偏离参考线的点可能是离群值
• 不同的数据分布对应特定的QQ图形态特征
• 《统计至简》第9章详细介绍如何通过QQ图判断原始数据分布特点
✦
3.5

箱型图:IQR方法的可视化

四分位数与1.5×IQR规则

箱型图(Box Plot)是John Tukey在1977年提出的经典可视化方法。它利用四分位数(Quartiles)和四分位距(IQR)来识别离群值,比百分位方法更加稳健。

📦 箱型图的五大要素

下须
≥ 下界的最小值
Q1 (25%)
第一四分位数
Q2 (50%)
中位数
Q3 (75%)
第三四分位数
上须
≤ 上界的最大值

📐 IQR方法的数学定义

1. 计算四分位距

IQR = Q₃ - Q₁

四分位距衡量数据的中间50%的分散程度,相比标准差更稳健

2. 定义离群值边界

下界 = Q₁ - 1.5 × IQR
上界 = Q₃ + 1.5 × IQR

超出此范围的点标记为离群值

📊vs 百分位

✓ 更稳健(基于IQR)
✓ 可视化更直观
✓ 标准化方法

📏vs Z-score

✓ 不假设正态分布
✓ 不受极端值影响
✗ 可能漏检真实异常

🎯适用场景

• 探索性数据分析
• 数据分布未知
• 需要快速筛查
✦
3.6

Z-score:标准化检测法

基于标准差的统计检测方法

Z-score(标准分数)衡量数据点偏离均值的程度,以标准差为单位。根据68-95-99.7法则,99.7%的数据落在±3σ范围内,超出此范围的点可判定为离群值。

📐 Z-score的数学原理

标准公式

z = (x - μ) / σ
x:数据点值
μ:样本均值
σ:样本标准差
将数据标准化为均值0、方差1的分布

离群值判定

|z| < 2
正常数据(95%置信度内)
|z| > 2
可疑离群值
|z| > 3
极端离群值

✓Z-score的优势

  • •理论基础扎实(中心极限定理)
  • •可调阈值(±2σ或±3σ)
  • •适合大样本数据
  • •标准化后可跨特征对比

⚠️Z-score的局限

  • •假设数据服从正态分布
  • •均值和标准差易被离群值污染
  • •小样本时效果差
  • •多峰分布时会误判
💡
改进方案:
• 使用中位数代替均值,MAD代替标准差(更稳健)
• 先用箱型图或百分位粗筛,再用Z-score精查
• 对数据进行正态性检验(Shapiro-Wilk或Q-Q图)
✦
3.7

马氏距离和其他方法

多元高斯分布与机器学习方法

对于二维乃至多维的情况,我们也可以使用Z分数。这个Z分数就是马氏距离(Mahalanobis Distance),《统计至简》一册专门讲解过马氏距离。如果样本数据分布近似服从多元高斯分布,马氏距离则可以作为判定离群值的有效手段。

🔬概率密度估计检测离群值

马氏距离实际上假设数据服从多元正态分布。当多特征数据分布情况较大偏离多元正态分布,马氏距离就会失效。这时我们可以用概率密度估计来检测离群值。KDE概率密度估计没有预设数据分布假设。有关KDE概率密度估计,请回顾《统计至简》第17章。

🤖机器学习算法

机器学习中很多算法都可以用来判断离群值。下面展示用支持向量机(One-Class SVM)和孤立森林(Isolation Forest)算法判断鸢尾花数据中可能存在的离群值。更多机器学习算法,请参考《机器学习》一书。

🔗
延伸阅读:
• 有关马氏距离、卡方分布、置信区间关系,请参考《统计至简》第23章
• Scikit-learn提供更多利用机器学习方法检测离群值的工具
• 建议学完《机器学习》一册内容,再回过头来自学这些算法
✦

🎯本节核心要点

📚理论知识

  • •离群值三大来源:测量误差、录入错误、真实异常
  • •多种检测方法:百分位、箱型图、Z-score、散点图、QQ图、马氏距离、机器学习
  • •IQR = Q3 - Q1,箱型图边界 = Q1/Q3 ± 1.5×IQR
  • •Z-score = (x - μ) / σ,阈值通常为±3

🛠️实用技能

  • •用交互式可视化观察离群值的多维度影响
  • •掌握直方图+KDE+Rug的组合可视化
  • •理解箱型图whiskers的真实含义(不是边界)
  • •根据数据分布选择合适的检测方法

📊 四种方法对比表

方法原理优势局限
百分位1%/99%界定尾部简单直观阈值人为设定
箱型图Q1/Q3 ± 1.5×IQR稳健,标准化可能漏检
Z-score|z| > 3理论扎实假设正态分布
散点图成对特征可视化发现多维异常主观判断
QQ图分位数对比检验正态性需要经验
马氏距离协方差椭圆考虑相关性假设正态分布
机器学习SVM/森林适应复杂分布需要调参
🚀 实战建议
• 探索阶段:先用箱型图快速筛查,再用Pairplot和QQ图确认多维异常
• 分析阶段:结合Z-score定量判断,用QQ图检验正态性假设
• 高级方法:对多元数据用马氏距离或KDE,必要时使用机器学习方法
• 决策阶段:综合业务知识判断是删除、填补还是保留离群值
• 记录阶段:记录检测方法、阈值参数和处理决策,确保可重现