异常检测

识别意外事件和偏离正常行为

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

机械停机时间是昂贵的,因此操作人员通常希望通过保守的维护计划来防止出现问题。这可能意味着异常非常罕见,这使得设计异常检测算法非常棘手。

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

有了MATLAB,你可以对你的数据应用以下仅正常的异常检测方法:

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

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

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

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

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

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

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

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

要点

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

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

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

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

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

Baidu
map