游乐游手机版
首页/AI热点日报/热点详情

异常检测如何识别意外事件与偏离正常行为

类型:热点整理2026-07-16
异常检测用于识别与预期行为不同的事件或模式,广泛应用于预测性维护、质量控制、医疗影像、金融安全、客户分析和安防监控。常用方法包括阈值化、单类支持向量机、孤立森林和自编码器,具体选择取决于数据特点。

什么是异常检测?

异常检测是一种识别与预期行为存在显著差异的事件或模式的技术。其应用范围非常广泛,从简单的离群值检测,到能够从数百个信号中挖掘隐藏模式的复杂机器学习算法,均涵盖在内。

工程师与数据科学家常借助异常检测来完成以下识别任务:

  • 机械故障识别,用于预测性维护
  • 制造生产线的缺陷检测
  • 放射学影像中的恶性肿瘤筛查
  • 金融交易中的欺诈行为发现
  • 零售业的客户流失预测
  • 视频监控录像中的异常动作捕捉

在 MATLAB 中,有多种方法可用于设计异常检测算法。具体哪种方法最适合特定应用,取决于可用的异常数据量,以及是否能够将异常数据与正常数据有效区分。

异常检测的常见应用场景

异常检测在以下领域得到了广泛应用:

  • 预测性维护:通过实时监测传感器数据,提前发现机械故障隐患。
  • 质量控制:精准检测生产线上的产品缺陷。
  • 医疗影像:辅助识别放射学影像中的恶性肿瘤区域。
  • 金融安全:及时发现信用卡欺诈交易。
  • 客户分析:预测零售业客户流失风险。
  • 安防监控:在视频中快速检测异常动作行为。

异常检测的第一步:分析您的数据

在开展异常检测之前,务必先对现有数据进行全面检查。不妨从以下四个核心问题入手:

1. 您能在原始数据中直接发现异常吗?

有时候,只需简单查看数据即可完成异常检测。例如,下图 1 中的信号采集自风扇,您可以很直观地看到表示风扇行为异常的信号突变。如果能够通过肉眼识别异常,则可以考虑使用简单的算法(如 findchangeptscontrolchart)进行异常检测。

图 1:MATLAB 冷却风扇数据图,异常情况一目了然。

小提示:如果数据噪声较大或存在周期性波动,建议先进行滤波或去趋势处理,再通过肉眼观察。

2. 您能在衍生特征中发现异常吗?

通常,直接从原始数据中直观检测异常并不容易。在下面的信号中,很难判断哪个时域信号存在异常。然而,如果创建功率谱从频域角度查看数据,峰值频率和幅度的差异就能清楚表明两个信号截然不同。在这种情况下,可以将这些峰值作为基于有监督学习方法的异常检测算法的特征输入。

图 2:尽管原始时序信号(左图)中的异常看上去不明显,但通过频域分析(右图,使用 MATLAB 中的周期图)可以观察到峰值频率的明显差异。

常见问题:如果频域特征也不明显该怎么办?
答:可以尝试时频分析或小波变换,或者提取更多统计特征(如均值、方差、偏度、峰度等)。

3. 您能用统计学方法区分正常特征和异常特征吗?

在单个信号中,异常不一定那么明显。当今的复杂设备可能安装有数百个传感器,有时只有同时分析多个传感器的数据才能发现异常。在标注数据后,您可以检查时域和频域特征的统计分布,如图 3 所示。此外,还可以执行特征变换与排名,找出最能区分两个组的特征。然后,利用这些特征,通过有监督学习方法基于标注数据训练异常检测算法。

图 3:左侧的 MATLAB 图分别用蓝色和红色表示成对的正常数据和异常数据。右侧是来自诊断特征设计器的相应特征直方图,用于识别哪些特征可以明确区分正常数据和异常数据,供有监督异常检测算法使用。

4. 如果您不知道异常的具体表现该怎么办?

机械故障代价高昂,因此操作人员通常希望通过保守的维护计划来防患于未然。这可能意味着异常事件很少发生,使得设计异常检测算法变得棘手。

有几种设计异常检测算法的方法只需很少的异常数据,甚至根本不需要异常数据。这些“仅正常”方法只基于正常数据训练算法,并将正常数据之外的数据识别为异常。

当异常数据稀缺时:四种“仅正常”方法

使用 MATLAB,您可以对数据应用以下“仅正常”异常检测方法:

1. 阈值化

阈值化方法在数据超过统计指标的阈值时识别异常。例如,时序数据中最近时段内的标准差、对信号使用控制图、利用变化点检测查找信号中的突变,或获取数据分布的稳健估计值,并将分布边缘的样本视为异常。基于统计指标的阈值化是不错的起点,但与机器学习方法相比,它在处理多元数据时较为困难,且异常检测的稳健性不足。采用对离群值具有稳健性的统计估计法(如稳健协方差)将获得更好的结果。

小提示:选择阈值时可以使用百分位数或3σ原则,但需要根据实际数据分布进行适当调整。

2. 单类支持向量机(One-Class SVM)

单类支持向量机用于识别能够最大化类间距离的分离超平面。仅训练一个类别会生成一个描述正常数据的模型。该模型使您无需任何标注异常即可进行检测。这种方法和其他基于距离的方法需要数值特征作为输入,且不适用于高维数据。

3. 孤立森林(Isolation Forest)

孤立森林通过构建多棵决策树,将每个观测值隔离到一个叶节点中。异常分数根据样本的平均深度计算:异常样本需要的决策次数通常比正常样本更少。该方法支持数值特征和分类特征的组合,并且适用于高维数据。

4. 自编码器(Autoencoder)

自编码器是一种基于正常数据训练、尝试重构原始输入的神经网络。经过训练的自编码器能够准确重构正常输入,如果输入与其重构结果之间存在较大差异,则可能表明存在异常。自编码器可用于信号和图像数据。

图 4:自编码器经过训练来复制输入。利用输入与其重构之间的差异,可以对信号或图像数据进行异常检测。

常见问题:当数据中存在异常但无法标注时该怎么办?
答:您可以尝试使用无监督聚类方法进行异常检测,但除非数据集非常均衡(包含大量同类型的异常),否则使用“仅正常”方法更有可能获得有用的结果。

特征提取:让异常更“明显”

在应用异常检测算法之前,通常需要从原始数据中提取特征。MATLAB 同时支持手动和自动方法,从信号、图像和文本数据中提取特征。Predictive Maintenance Toolbox 中的诊断特征设计器可以帮助您从多种类型的信号中提取特征。

上手示例:使用 MATLAB 检测图像中的对象缺陷

要构建基于图像的异常检测算法,您可以执行以下步骤:

  1. 将图像馈送入预训练的 AlexNet 卷积神经网络;
  2. 使用第一层后的网络激活值作为特征;
  3. 使用 fitcsvm 训练单类支持向量机。单类支持向量机基于正常图像训练,负的分类分数表示异常。

总结

  • 异常检测有助于识别离群值、与正常值的偏差以及意外行为
  • 如果您拥有足够的标注数据(包括异常),则可使用有监督学习方法进行异常检测
  • 如果您的数据大部分都是正常数据,则应用某种专门的“仅正常”异常检测方法即可

重要提醒:无论选择哪种方法,都建议先用交叉验证或留出法评估模型效果,避免过拟合。对于高维数据,优先考虑孤立森林或先进行特征降维再使用单类 SVM。

来源:https://m.elecfans.com/article/2191056.html

相关热点

继续查看同栏目近期热点。

延伸阅读

补充最近整理过的热点入口。