异常检测

识别意外事件和非正常行为

异常检测是识别与预期行为不同的事件或模式的过程。异常检测可以从简单的离群值检测到复杂的机器学习算法,这些算法被训练来揭示数百个信号中的隐藏模式。

工程师和数据科学家使用异常检测来识别:

  • 机械故障预测维修
  • 制造生产线的缺陷
  • 放射学图像中的癌症
  • 金融交易欺诈
  • 零售业客户流失
  • 监控录像中的异常动作

在MATLAB中设计异常检测算法的方法有很多®.最适合给定应用程序的异常检测方法取决于可用的异常数据量,以及是否可以将异常数据与正常数据区分开来。

异常检测的第一步是检查您拥有的数据。考虑以下问题:

你能在原始数据中发现异常吗?

有时只需查看数据就可以执行异常检测。例如,下面图1中的信号是从风扇中收集的,您可以很容易地看到表明风扇行为异常的突然信号变化。如果你能够用眼睛发现异常,你可以使用一个简单的算法,如findchangeptscontrolchart用于异常检测。

一个冷却风扇的MATLAB数据图,显示了很容易发现的异常。

图1:冷却风扇的MATLAB数据图,显示了容易发现的异常。

你能看到衍生特征中的异常吗?

异常通常很难从原始数据中直观地检测出来。在下面的信号中,很难确定哪些时域信号是异常的。然而,如果您创建一个功率谱来查看频域的数据,峰值的频率和幅度的差异清楚地表明两个信号有很大的不同。在这种情况下,您可以使用这些峰值作为异常检测算法的特征输入监督式学习方法。

虽然在原始时间序列信号(eft)中异常在视觉上并不明显,但在频域查看数据(右,使用MATLAB中的周期图)可以显示峰值频率的明显差异。

图2:虽然在原始时间序列信号中,异常在视觉上并不明显(左),但在频域查看数据(右,使用MATLAB中的周期图)可以看到峰值频率的明显差异。

你能从统计学上区分正常和异常特征吗?

在单个信号中,异常并不总是明显的。今天的复杂机器可以有数百个传感器,有时只有在同时考虑多个传感器时,异常才会变得明显。有了标记数据后,可以检查时间域和频域特征的统计分布,如图3所示。你也可以表演功能转换并进行排序,以确定最能区分两组的特征。然后,您可以使用这些特征使用监督学习在标记数据上训练异常检测算法。

在左边,MATLAB图分别用蓝色和红色表示成对的正常和异常数据。在右图中,使用来自诊断特征设计器的相应特征直方图来识别哪些特征可以清楚地区分正常和异常数据,用于监督异常检测算法。

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

如果你不知道异常点是什么样子呢?

机器停机时间是昂贵的,因此运营商通常通过保守的维护计划来防止出现问题。这可能意味着异常很少,这使得设计异常检测算法变得棘手。

几种设计异常检测算法的方法几乎不需要异常数据。这些“仅正常”方法仅在正常数据上训练算法,并将这些规范之外的数据识别为异常数据。

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

  • 阈值。阈值当数据超过统计指标上的阈值时标识异常。例如,时间序列数据中最近窗口的标准偏差,在信号上使用控制图,使用变化点检测发现信号中的突变,或获得数据分布的稳健估计,并将分布边缘的样本识别为异常。统计指标上的阈值可以是一个很好的开始,但这种方法更难以应用于多元数据,而且比机器学习异常检测方法的鲁棒性更差。对异常值具有健壮性的统计估计将产生更好的结果,例如健壮的协方差

  • 一类支持向量机。看到下面成了一支持向量机识别分离的超平面,使类之间的距离最大化。只训练一个类就会产生一个可以被认为是正常的数据模型,这允许您在没有任何标记的异常可用于训练的情况下检测异常。这种方法和其他基于距离的方法需要数字特征作为输入,在高维数据上不能很好地工作。

  • 与世隔绝的森林。与世隔绝的森林构建树,将每个观察结果隔离到一个叶子中,异常值计算为样本的平均深度:异常样本比正常样本做出的决策更少。此方法支持数字和分类特征的混合,并适用于高维数据。

  • Autoencoders。Autoencoders是在正常数据上训练的神经网络,试图重建原始输入。经过训练的自动编码器将准确地重建正常输入。输入数据和重建数据之间的巨大差异可能表明存在异常。自动编码器可用于信号和图像数据。

自动编码器被训练来复制输入。输入和重建之间的差异可以用于信号或图像数据中的异常检测。

图4:自动编码器被训练来复制输入。输入和重建之间的差异可以用于信号或图像数据中的异常检测。

当数据中出现异常但无法标记时,也可以尝试无监督聚类异常检测方法。有时您可以将集群与正常数据和异常数据相关联,但除非您的数据集是平衡的(包含许多相同类型的异常数据),否则使用仅正常方法更有可能得到有用的结果。

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

要点

  • 异常检测可以帮助您识别异常值、正常的偏差和意外的行为
  • 如果你有足够的标记数据(包括异常),使用监督学习进行异常检测
  • 如果您拥有的大多是正常数据,则应用一种专门的仅用于正常的异常检测方法

用MATLAB检测图像中的物体缺陷

为了构建一个基于图像的异常检测算法,你可以:1)通过预先训练的AlexNet卷积神经网络来提供你的图像,2)使用第一层之后的网络激活作为特征,然后3)训练一个类支持向量机fitcsvm.单类SVM在正常图像上进行训练,分类分数为负表示异常。在下面的例子中,经过训练的模型正确地识别了四个表面有缺陷的六角螺母。试试吧这个例子

用MATLAB检测图像中的物体缺陷

参见:统计和机器学习工具箱™预测性维护工具箱™图像处理工具箱™深度学习工具箱™autoencoders特征选择工程特性机器学习模型什么是机器学习?支持向量机(SVM)预见性维护状态监测计算机视觉

Baidu
map