无标签机器学习异常检测

Anomaly detection with machine learning without labels

我在一段时间内跟踪多个信号并将它们与时间戳相关联,如下所示:

t0 1 10 2 0 1 0 ...
t1 1 10 2 0 1 0 ...
t2 3  0 9 7 1 1 ... // pressed a button to change the mode
t3 3  0 9 7 1 1 ...
t4 3  0 8 7 1 1 ... // pressed button to adjust a certain characterstic like temperature (signal 3)

其中 t0 是标记标记,1 是信号 1 的值,10 是信号 2 的值,依此类推。

那段时间抓取到的数据应该算是正常情况。现在应该从正常情况中检测到重要的推导。对于显着推导,我并不是说一个信号值只是更改为在跟踪阶段未看到的值,而是指许多值发生变化但尚未相互关联。我不想对规则进行硬编码,因为将来可能会添加或删除更多信号,并且可能会实施具有其他信号值的其他 "modi"。

这可以通过某种机器学习算法来实现吗?如果出现一个小的推导,我希望算法首先将它视为对训练集的一个小改动,如果它在未来出现多次,它应该是 "learned"。主要目标是检测更大的变化/异常。

我希望我能把我的问题解释得足够详细。提前致谢。

您可以只计算要素中的最近邻居 space 并设置一个阈值,允许它与您的测试点相距多远才不会成为异常。

假设您的 "certain period of time"

中有 100 个值

因此您使用 100 维特征 space 训练数据(不包含异常)

如果您获得要测试的新数据集,则计算 (k) 个最近邻并计算特征中的(例如欧氏)距离space。

如果该距离大于某个阈值,则为异常。 为了优化,您必须做的是找到一个好的 k 和一个好的阈值。例如。通过网格搜索。

(1) 请注意,只有当您的数据具有固定的起点和终点时,这样的事情才可能有效。否则你将需要大量的数据,而且它的性能也不会那么好。

(2) 注意 为您在问题中提到的每个 "mode" 创建一个自己的检测器应该是值得的。