使用没有标签的机器学习进行异常检测[关闭]

问题描述 投票:0回答:1

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

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”。

这可以通过某种机器学习算法来实现吗?如果发生小的推导,我希望算法首先将其视为对训练集的微小更改,如果将来多次发生,则应该“学习”。主要目标是检测更大的变化/异常。

我希望我能足够详细地解释我的问题。预先感谢。

machine-learning training-data anomaly-detection
1个回答
1
投票

您可以计算特征空间中的最近邻居,并设置一个阈值,允许其距离测试点多远才不会出现异常。

假设您在“特定时间段”内有 100 个值

因此您将 100 维特征空间与训练数据(不包含异常)一起使用

如果您获得要测试的新数据集,您可以计算 (k) 个最近邻并计算特征空间中的(例如欧几里得)距离。

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

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

(2) 注意应该值得尝试为您在问题中提到的每个“模式”创建一个自己的检测器。

© www.soinside.com 2019 - 2024. All rights reserved.