用于实时传感器数据中模式识别的机器学习

机器算法验证 时间序列 机器学习 即时的
2022-03-25 12:11:53

我正在开展一个项目,我们需要检测传感器输出中的模式以查明是否发生了给定事件。鉴于我在机器学习方面的经验有限,我想知道是否有人可以为我指明正确的方向。

Bellow 是 11 天后数据的样子,我们希望实时检测积极事件(在事件结束之前)。我们最初有一个基于斜率变化的检测,但我们需要更强大的东西(每个传感器的整体传感器行为略有不同,但事件配置文件是相同的)

长期传感器数据: 长期传感器数据

近距离观察事件: 近距离观看活动

我知道这是一个相当广泛的问题,但如果有人能指出正确的机器学习概念来检测事件,那就太好了。

谢谢美人!

1个回答

几周前我研究了一个类似的问题,以检测嘈杂传感器中的正确峰值。这里最重要的任务是选择正确的特征。斜率似乎是个好主意,可能不使用相邻点,而是使用固定距离(例如 10 或 100,取决于您的采样率)分隔的数据点。如果使用机器学习工具对您至关重要,我建议您构建一个训练集,您可以使用它来训练多层感知器(神经网络)、SVM 等监督模型。需要对训练数据进行标记才能训练监督模型。这是我所做 的:构建数据集 我找到了我想要检测的信号的大致起始位置(在你的情况下,峰值内的前几个数据点)。假设它们位于 x_10、x_30 和 x_53。然后,我将构建一个数据集,在其中选择一些相邻点,这将导致数据集如下所示:

x_{8}, x_{9}, x_{10}, x_{11}, x_{12} x_{28}, x_{29}, x_{30}, x_{31}, x_{32} x_{ 51}, x_{52}, x_{53}, x_{54}, x_{55}

此外,我会在数据中选择一些我知道没有所需信号的随机点,并将这些数据添加到数据集中,假设这些观察值位于 x_14 和 x_41。最终的数据集将如下所示:

x_{8}, x_{9}, x_{10}, x_{11}, x_{12} x_{28}, x_{29}, x_{30}, x_{31}, x_{32} x_{ 51}, x_{52}, x_{53}, x_{54}, x_{55} x_{12}, x_{13}, x_{14}, x_{15}, x_{16} x_{39} , x_{40}, x_{41}, x_{42}, x_{43}

相应的标签向量,告诉模型我的数据的类别将如下所示:

[ 1, 1, 1, 0, 0 ]

这意味着前 3 行属于 1 类(需要),最后两行属于 0 类(不需要)。然后,我将我的数据放入具有 3 层(1 个输入、1 个隐藏、1 个输出)的多层感知器中(具有用于非线性的 sigmoid 函数)。这对我来说效果出奇的好。

放弃机器学习 尽管 MLP 工作得很好,但我最终还是通过一些 if-else 规则解决了我的问题,这些规则使用了更强大的功能,例如局部方差、信号的绝对值等等。阈值是手动调整的(因为它比构建大型训练数据集更容易)。因此,我建议尝试简单的规则并尝试不同的功能。从您发布的图形来看,信号似乎非常清晰,因此如果您具有良好的功能,调整阈值并不是非常重要。一些想法: - 斜率(例如 x_{i} - x_{iT},其中 T > 0) - 与局部平均值的大偏差(测试 x_{i} > Average(x_{iT},...,x_{ i-1}) + a*StandardDeviation(x_{iT},...,x_{i-1}),其中 a 可以是 3 或更高,具体取决于峰的清晰/极端程度)- x_{ 的值i} (如果峰值中的值在每个峰值中都相同。不