通过监督学习检测异常的“猫”行为

数据挖掘 机器学习 监督学习 图像识别
2021-10-15 19:25:04

我和几个同事正在查看我们在工作场所最近更换的“猫”。对于那些好奇的人,本文中的“猫”是指一种特定类型的泵,称为猫泵。它被亲切地称为“小猫”,因为我们只有一个这样的泵。

经过一次例行检查后,我注意到小猫在许多时期表现不佳。这在数据集中被标记为 Cat Anomaly。

(如果有人想进一步分析,可以从这里访问:

https://drive.google.com/open?id=1e0OhzhaSZP9_A3QdaK9-BvWXbRPZacED

这是异常时的样子:

从本质上讲,它看起来类似于正弦曲线并且略微弯曲。我还注意到,当它处于异常状态时,点簇似乎很紧。

异常猫行为圈出

使用 Python 的 Sklearn 库和一些很好的老式信号处理,我决定删除一些有噪声的集群,这样我就可以看到信号在“没有”噪声的情况下是什么样子的。为此,我对数据执行了 Savitzy-Golay 过滤器,它按照下面的方法对其进行了平滑处理。

使用 SG 滤波器净化信号

然后,我使用了一个功能从“正常”猫值中减去值——“平滑”猫值,它可以粗略地指示“集群”何时出现。

这已经可以接受(大约 90% 的准确率),当我将这个特征输入到我的随机森林模型中时,我可以在一定程度上发现异常,但我觉得我使用的“集群”方法非常笨拙,并且有更好的方法将 cat 信号的“噪声”捕获为变量。

指示模型精度的 ROC 曲线

所以现在我正在寻找一种更好的方法来识别和区分“异常”的猫行为。

那么,作为捕获“嘈杂”集群的更好特征或变量,其他人对如何捕获这一点有任何想法吗?

1个回答

您以什么分辨率进行分类?在样本层面?

如果是这样,您的基线模型是什么样的?例如,您是否尝试过仅将最后 5-10 个原始样本作为特征输入,并查看您以这种方式获得的准确度?

此外,您可以尝试查看如果您在输出中进行某种“平滑”会发生什么 - 例如,如果您假设一个被 10 个“坏”样本包围的“好”样本也应该被重新分类为“坏”——因为系统无法在正常操作模式和故障操作模式之间快速跳转。

最后(或应该首先),要使您的模型在实践中有用,实际需要的准确度是多少?