识别意外事件和偏离正常行为
异常检测是识别与预期行为不同的事件或模式的过程。异常检测可以从简单的离群值检测到训练有素的复杂机器学习算法,以在数百个信号中发现隐藏模式。
工程师和数据科学家使用异常检测来识别:
- 机械故障的预见性维修
- 制造生产线的缺陷
- 放射学图像中的癌症
- 金融交易欺诈
- 零售业的客户流失
- 监控录像中出现异常动作
在MATLAB中有多种方法设计异常检测算法®.最适合特定应用程序的异常检测方法将取决于可用的异常数据的数量,以及是否能够将异常数据与正常数据区分开来。
异常检测的第一步是检查您拥有的数据。考虑以下问题:
你能在原始数据中发现异常吗?
有时,只需查看数据就可以执行异常检测。例如,下面图1中的信号是从一个风扇上收集的,你可以很容易地看到信号的突然变化,这表明风扇的行为异常。如果您能够用肉眼检测异常,您可能能够使用一个简单的算法,如findchangepts或controlchart异常检测。
你能在衍生特征中看到异常吗?
异常现象通常很难从原始数据中直观地发现。在下面的信号中,很难确定哪个时域信号是异常的。然而,如果您创建一个功率谱来查看频域的数据,峰值的频率和幅度的差异清楚地表明两个信号是完全不同的。在这种情况下,可以使用这些峰值作为异常检测算法的特征输入监督式学习方法。
你能从统计上区分正常和异常特征吗?
异常在单个信号中并不总是明显的。今天的复杂机器可能有数百个传感器,有时只有同时考虑多个传感器时,异常才会变得明显。当您有了标记的数据后,您可以检查时间域和频域特征的统计分布,如图3所示。你也可以表演功能转换然后进行排序,找出最能区分两组的特征。然后,您可以使用这些特征使用监督学习对标记数据训练异常检测算法。
如果你不知道异常点长什么样呢?
机械停机时间是昂贵的,因此操作人员通常希望通过保守的维护计划来防止出现问题。这可能意味着异常非常罕见,这使得设计异常检测算法非常棘手。
设计异常检测算法的几种方法需要很少或不需要异常数据。这些“仅正常”方法只在正常数据上训练算法,并将超出这些规范的数据识别为异常数据。
有了MATLAB,你可以对你的数据应用以下仅正常的异常检测方法:
阈值。阈值当数据超过统计指标的阈值时,标识异常。例子包括时间序列数据中最近窗口的标准偏差,在信号上使用控制图,使用变化点检测发现信号中的突变,或获得数据分布的稳健估计,并将分布边缘的样本识别为异常。在统计指标上的阈值化可以是一个很好的开始,但这种方法更难应用于多元数据,而且在异常检测方面不如机器学习方法健壮。对异常值具有健壮性的统计估计将产生更好的结果,例如健壮的协方差.
单类支持向量机。看到下面成了一支持向量机识别分离的超平面,使类之间的距离最大化。只训练一个类会产生一个可以被认为是正常的数据模型,这允许您在没有任何标记的异常可用于训练的情况下检测异常。这种方法和其他基于距离的方法需要数字特征作为输入,在高维数据上不能很好地工作。
与世隔绝的森林。与世隔绝的森林构建树,将每个观察结果隔离到一个叶子中,异常值被计算为样本的平均深度:异常样本比正常样本需要更少的决策。此方法支持数字和类别特性的混合,适用于高维数据。
Autoencoders。Autoencoders神经网络训练的正常数据,试图重建原始输入。经过训练的自动编码器将准确地重构正常输入。输入和重构之间的巨大差异可能表明存在异常。自动编码器可用于信号和图像数据。
要点
- 异常检测帮助您识别异常值、偏离正常值和意外行为
- 如果有足够的标记数据(包括异常),可以使用监督学习进行异常检测
- 如果您的数据基本正常,请应用一种专门的仅正常异常检测方法
例子和如何
软件参考
参见:统计和机器学习工具箱™,预见性维护工具箱™,图像处理工具箱™,深度学习工具箱™,autoencoders,特征选择,工程特性,机器学习模型,什么是机器学习?,支持向量机(SVM),预见性维护,状态监测,计算机视觉