传感器数据的二进制分类

时间:2015-03-11 15:24:53

标签: algorithm machine-learning signal-processing classification svm

我的问题如下:我需要对来自传感器的数据流进行分类。我已设法使用。获得基线 窗口的中位数和I减去该基线的值(我想避免负峰值,所以我只使用差值的绝对值)。

现在我需要区分一个事件(=触发传感器的东西)和基线附近的噪声:

enter image description here

问题是我不知道使用哪种方法。 我想到了几种方法:

  • 总结窗口中的值,如果总和高于阈值,则该类应为EVENT('Integrate and dump')
  • 总结窗口中值的差异并得到平均值(给出类似于一阶导数的东西),如果值为正且高于阈值设置类EVENT,则设置类别NO-EVENT否则
  • 两者的结合

(不幸的是,这些方法的缺点是我需要猜测阈值并设置窗口大小)

  • 使用SVM从手动分类数据中学习(但我不知道如何正确设置这个算法:我应该看哪些功能,如窗口的中位数/平均值?,积分?,一阶导数?... 。)

你会建议什么?是否有更好/更简单的方法来完成这项任务?

我知道存在许多复杂的算法,但我对可能是最好的方法感到困惑 - 请对没有机器学习/ DSP背景的新手有一点耐心:)

非常感谢和最诚挚的问候。

2 个答案:

答案 0 :(得分:1)

评估启发式的关键是开发一个系统行为模型。

例如,您正在监控的物理过程的模型是什么?例如,您是否希望您的样本在时间上相关?

传感器输出的型号是什么?可以将其建模为例如电压的离散线性函数吗?有噪音成分吗?噪声的大小是已知的还是未知的但是不变?

一旦列出了您正在监控的系统知识,就可以使用它来评估和确定一个好的分类系统。然后,您还可以估算其准确性,这对分类器输出的消费者非常有用。

修改

鉴于更详细的描述,我建议尝试一些简单的行为模型,这些模型可以在转向通用监督学习启发式之前使用经典技术解决。

例如,假设:

  • 基线,事件阈值和噪声幅度都是先验已知的。

  • 基础流程可以建模为马尔可夫链:它有两种状态(关闭和打开),它们之间的转换时间呈指数分布。

然后,您可以使用隐马尔可夫模型方法确定任何给定时间最可能的基础状态。即使噪声参数和阈值未知,您也可以使用HMM前后训练方法来训练与每个状态的输出相关的参数(例如,高斯的均值,方差)。

如果您对事件了解得更多,可以采用更简单的方法:例如,如果您知道事件信号总是达到基线+噪声之上的水平,并且事件总是在时间上由如果间隔大于事件本身的宽度,则可以进行简单的阈值测试。

修改

HMM的经典介绍是Rabiner's tutorialcopy can be found here)。相关的还有these errata

答案 1 :(得分:1)

根据您的描述,正确参数化的移动平均线可能就足够了

  • 尝试了解传感器及其输出。制作一个模型并做一个模拟器,提供模拟数据,涵盖带噪声和所有这些东西的预期数据
  • 记录大量真实传感器数据
  • 可视化数据并验证您的分歧和模型
  • 注释您的传感器数据i。即生成基本事实(你的模拟器应该为模拟数据做到这一点)
  • 从您学到的东西到现在提出一个或多个算法
  • 制作一个测试系统,可以根据基本事实验证您的算法并对之前的运行进行回归
  • 实施您提出的算法并针对基本事实运行它们
  • 尝试从记录的数据中了解误报和漏报(并尝试调整模拟器以重现它们)
  • 适应你的算法

其他一些提示

  • 您可以在阈值上实施滞后以避免反弹
  • 您可以实施延迟以避免反弹
  • 如果实施去抖动或低通过滤器,请注意延迟
  • 您可以实施多种算法并进行投票
  • 为了测试相对改进,您可以对未注释的大量数据进行回归测试。然后检查翻转检测仅查找性能增加/减少