异常检测 的目标是识别与大多数数据显著不同的数据点、事件或观察结果,这些“异常”也被称为:

- 离群点
- 异常值
- 新奇点
核心思想:基于“正常”数据的行为模式,找出那些不符合该模式的实例。
关键特点:
- 非平衡性:异常数据通常只占极小的比例(如 0.1% - 5%),正常数据占绝大多数。
- 定义模糊:“异常”的定义高度依赖于具体场景和领域知识,在一个场景中是异常,在另一个场景中可能是正常。
- 无标签稀缺:在真实场景中,我们通常有大量“正常”数据,但很少有明确标记的“异常”数据。
异常的类型
- 点异常:单个数据实例相对于整个数据集是异常的。
- 示例:信用卡交易中一笔金额巨大的消费。
- 上下文异常:在特定上下文或条件下数据实例是异常的,但在其他上下文中正常。
- 示例:夏天下午气温30度是正常的,但冬天半夜气温30度就是异常的(上下文是时间和季节)。
- 集体异常:一组相关的数据实例作为一个整体是异常的,尽管其中每个单独点可能看起来正常。
- 示例:心跳信号中一段持续的平直线(心脏停搏),其中每一个单独的“平直”值在短时间内看可能不算离群,但连续出现就是严重异常。
主流异常检测方法
异常检测方法主要分为以下几大类,下图展示了其核心分类与关系:
flowchart TD
A[异常检测核心方法] --> B[传统方法]
A --> C[机器学习方法]
B --> B1[基于统计]
B --> B2[基于邻近度]
B --> B3[基于密度]
B --> B4[基于聚类]
B --> B5[基于隔离]
C --> C1[监督学习<br>(需完整标签)]
C --> C2[半监督学习<br>(仅需正常数据)]
C --> C3[无监督学习<br>(无需标签)]
C1 --> C1a[分类模型<br>如LR, SVM, RF]
C2 --> C2a[一类分类/自编码器<br>如OC-SVM, AE]
C3 --> C3a[深度学习方法<br>如GAN, LSTM-AE]
传统方法
基于统计的方法
- 原理:假设正常数据服从一个特定的概率分布(如高斯分布),计算数据点属于该分布的概率,概率极低的点被视为异常。
- 优点:理论基础坚实,计算高效。
- 缺点:需要先验分布假设,对高维、复杂分布数据效果差。
- 代表:
3σ原则(标准差)、Grubbs检验、箱线图。
基于邻近度的方法
- 原理:计算数据点与其最近邻之间的距离,远离其邻居的点被视为异常。
- 优点:直观,无需分布假设。
- 缺点:计算复杂度高(O(N²)),对参数(如k值)敏感,在高维空间中“距离”概念失效。
- 代表:
K-最近邻。
基于密度的方法
- 原理:比较数据点局部区域的密度,处于低密度区域的点是异常点。
- 优点:能检测出局部异常,比单纯基于距离的方法更鲁棒。
- 缺点:同样面临高维问题和参数选择问题。
- 代表:
局部离群因子。
基于聚类的方法
- 原理:先对数据进行聚类,不属于任何簇、或属于非常小的簇、或距离其所属簇中心很远的点,被认为是异常。
- 优点:无需监督标签,可同时进行数据划分和异常检测。
- 缺点:检测效果严重依赖于聚类算法本身的质量。
- 代表:
DBSCAN(将稀疏区域点视为异常)、K-Means。
基于隔离的方法
- 原理:异常点“少且不同”,因此更容易被随机划分快速隔离出来。
- 优点:无需距离或密度度量,线性时间复杂度,适合高维大数据。
- 代表:
孤立森林。
机器学习方法
监督学习方法
- 场景:拥有完整标记的训练数据。
- 方法:将问题视为一个二分类(正常 vs 异常)问题。
- 挑战:异常样本极少,导致严重的类别不平衡问题,需要采用过采样、欠采样、代价敏感学习等技术。
- 模型:逻辑回归、支持向量机、随机森林、XGBoost等。
半监督学习方法
- 场景:仅使用正常数据进行训练。
- 原理:学习正常数据的边界或特征表示,将偏离该模型的数据判为异常。
- 优点:最贴合实际场景(正常数据易得,异常未知)。
- 代表:
- 单类支持向量机:在特征空间中寻找一个包含所有正常数据的最小超球体。
- 自编码器:通过压缩再重建来学习正常数据的低维特征,训练后,用正常数据重建误差小,异常数据重建误差大。
无监督学习方法
- 场景:数据完全没有标签,假设正常数据占大多数。
- 方法:直接使用上述传统方法,或采用更强大的深度学习方法。
- 代表:
- 基于深度自编码器的变体:如去噪自编码器、变分自编码器。
- 生成对抗网络:训练一个生成器和一个判别器,好的生成器能模拟正常数据分布,对于异常数据,判别器会给出低分数或重建误差会很高。
- 时序数据异常检测:使用
LSTM、TCN等网络建模正常序列的时序模式,预测误差大的点即为异常。
评估指标
由于数据高度不平衡,准确率不是一个好指标。
常用指标:
- 精确率:在所有被预测为异常的点中,真正是异常的比例。
- 召回率:在所有真正的异常点中,被成功检测出来的比例。
- F1-Score:精确率和召回率的调和平均数,是综合性的核心指标。
- ROC曲线与AUC值:通过变化阈值,描绘
真阳率和假阳率的关系曲线下面积,对类别不平衡不敏感。 - 精确率-召回率曲线:在正例(异常)很少时,比ROC曲线更具信息性。
典型应用场景
- 金融风控:信用卡欺诈检测、洗钱交易识别、保险骗保。
- 网络安全:入侵检测、恶意软件行为识别、DDoS攻击流量识别。
- 工业物联网与运维:设备故障预测、生产线产品缺陷检测、服务器性能指标(CPU、流量)异常监控。
- 医疗健康:疾病筛查(如心电图异常)、医疗影像中的病灶识别。
- 公共安全与城市管理:视频监控中的异常行为检测、交通流量异常拥堵识别。
挑战与未来方向
- 概念漂移:正常的模式会随时间变化,模型需要在线更新。
- 可解释性:“为什么这个点被标记为异常?”在关键领域(如医疗、金融)至关重要。
- 标签稀缺与噪声:获取干净、准确的异常标签非常困难且昂贵。
- 高维与复杂数据:如图像、视频、图数据中的异常检测。
- 在线与实时检测:要求算法低延迟、高效率。
异常检测是一个结合了统计学、机器学习和领域知识的综合性领域,选择哪种方法取决于数据的性质、是否有标签、对计算效率的要求以及具体的业务场景,从简单的统计方法或孤立森林开始,再尝试基于自编码器或GAN的深度学习方法,是一个合理的实践路径。
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。