一、异常值检测概述:我们为什么要关注那些“怪数据”?
大家好,欢迎来到这门课。我是老赵,在数据分析和 AI 落地这块摸爬滚打了好多年。
咱们这门课叫《PAE异常值深度解读方法》。你可能会问,PAE 是什么?别急,我们一步步来。但不管什么高级方法,核心目标都是同一个——揪出数据里那些“不对劲”的家伙。
今天这第一讲,我们先聊聊最基础的东西:什么是异常值,为什么我们要关心它,以及市面上都有哪些常用的招数。说白了,这就是咱们整个课程的“地基”。
1.1 什么是异常值?
异常值,英文叫 Outlier。我的理解很简单:它就是一个数据点,跟它周围的大多数同伴比起来,显得格格不入。
你想想看,一班学生考试,大部分人考了 70-80 分,突然冒出一个考 150 分的,或者一个考 0 分的。这俩就是典型的异常值。
我个人习惯把异常值分成三类:
- 全局异常点 (Global Outlier): 在整个数据集里都显得很扎眼。比如上面提到的 150 分和 0 分。
- 上下文异常点 (Contextual Outlier): 放在某个特定背景里才叫异常。比如北京冬天 25 度,对夏天来说很正常,但对冬天来说就是异常。
- 集体异常点 (Collective Outlier): 单个看挺正常,但一堆人凑一起就怪了。比如一个用户一天内从北京、上海、纽约、伦敦连续登录,单个登录行为没问题,但串起来就非常可疑。
1.2 异常检测的应用场景:它在哪发光发热?
说实话,异常检测的应用场景比你想象的要多得多。我参与过的项目里,几乎每个行业都能用到它。
| 领域 | 典型案例 | 我在项目中踩过的坑 |
|---|---|---|
| 金融风控 | 信用卡盗刷检测、虚假交易识别、反洗钱 | 我曾经因为单纯依赖规则,漏掉了很多变种的欺诈模式,后来加入异常检测模型后,召回率提升了 40%。 |
| IT 运维 (AIOps) | 服务器 CPU 飙高、网络流量突刺、磁盘 I/O 异常 | 有个项目,监控系统天天半夜告警,结果发现是定时任务导致的“正常异常”。我们花了很大功夫才把它从模型里过滤掉。 |
| 工业制造 | 产品外观缺陷检测、传感器读数异常、设备预测性维护 | 生产线上的震动传感器数据,噪声特别大。直接用原始数据做检测,误报率高到离谱。必须得做信号预处理。 |
| 网络安全 | 入侵检测、DDoS 攻击识别、恶意流量分析 | 攻击者的手段越来越隐蔽,会故意把流量伪装成正常行为,这时候传统的统计方法基本失效,得靠深度学习。 |
| 医疗健康 | 心电图异常波形监测、医学影像病灶检测 | 医疗数据极其珍贵,且标签成本很高。无监督和半监督的异常检测方法在这里特别受欢迎。 |
嗯,这里要注意。很多人觉得异常检测就是简单的“找不同”。其实不是。选择的检测方法,跟你对业务的理解深度直接挂钩。比如,你是不是能容忍误报?你更怕漏报还是报错?这些问题,在选模型之前就该想清楚。
1.3 常见方法概览:有哪些兵器可以用?
好,到了大家最喜欢的环节。咱们看看工具箱里都有什么。我习惯把它们分成三大派系:
- 统计方法: 最古老,也最直观。基于数据的分布假设,比如高斯分布。这派方法计算快,容易解释。
- Z-Score:看一个点离均值有几个标准差。
- IQR 四分位距法:看一个点是否落在箱线图的“触须”之外。
- Grubbs‘ Test:专门用来检测单个异常点。
- 机器学习方法: 当数据不满足统计分布时,就该机器学习上场了。它不依赖假设,能从数据里自己学出模式。
- 聚类: 比如 K-Means 或 DBSCAN。离所有簇中心都很远的点,就是异常。
- 孤立森林 (Isolation Forest): 核心思想很聪明——异常点更容易被“孤立”出来。这是我个人很喜欢的一个算法,速度快,效果好。
- One-Class SVM: 只用一个类的数据来训练模型,然后判断新样本是否属于这个类。
- 时间序列方法: 专门对付随时间变化的数据。
- 移动平均/指数平滑: 基于历史数据预测,看实际值与预测值的差距。
- Prophet: Facebook 开源的,能很好地处理节假日、季节周期等效应。
- ARIMA/LSTM: 更复杂的时序模型,适用于有长期依赖关系的数据。
为了方便你理解这几个方法之间的关系,我画了一张图:
你看,整个体系就是这样一层层展开的。当然,这些方法的“江湖地位”也在变化。比如,以前做时序异常检测,大家最常用 3-Sigma。但这些年,随着 Transformer 等深度学习模型的出现,很多新方法已经能捕捉到更复杂的异常模式了。咱们这门课的主角——PAE,就是这些新方法里的一种。它在处理高维、非线性数据时,表现相当不错。
好了,第一讲就到这里。我们明确了异常值的定义,了解了它的应用场景,也看完了目前主流的检测方法。这些概念,是我们后面深入 PAE 算法的必备知识。说白了,你只有知道问题是什么,以及前人用什么办法尝试过,才能理解为什么 PAE 能解决一些特定的难题。