传感器数据的二进制分类
Binary classification of sensor data
我的问题如下:我需要class验证来自传感器的数据流。我已经设法使用
window 的中位数,然后我从该基线中减去这些值(我想避免负峰值,所以我只使用差值的绝对值)。
现在我需要将事件(= 某些东西触发了传感器)与基线附近的噪音区分开来:
问题是不知道用什么方法。
我想到了几种方法:
- 对 window 中的值求和,如果总和高于阈值,则 class 应该是事件 ('Integrate and dump')
- 对 window 中的值求和并得到平均值(给出类似于一阶导数的值),如果该值为正且高于阈值集 class EVENT , 否则设置 class NO-EVENT
- 两者的结合
(不幸的是,这些方法的缺点是我需要猜测阈值并设置 window 大小)
- 使用从手动 class 化数据中学习的 SVM(但我不知道如何正确设置此算法:我应该查看哪些功能,例如 median/mean window?, 积分?, 一阶导数?...)
你有什么建议?是否有 better/simpler 方法来完成此任务?
我知道有很多复杂的算法,但我不知道什么是最好的方法 - 请对没有机器 learning/DSP 背景的新手有一点耐心:)
非常感谢你和最诚挚的问候。
评估启发式方法的关键是开发系统行为模型。
比如你监控的物理过程是什么模型?例如,您希望您的样本及时相关吗?
传感器输出的型号是什么?是否可以将其建模为电压的离散线性函数?有噪声成分吗?噪声的大小是已知还是未知但恒定?
一旦您列出了您对正在监控的系统的了解,您就可以使用它来评估和决定一个好的分类系统。然后,您还可以获得其准确性的估计值,这对分类器输出的消费者很有用。
编辑:
鉴于更详细的描述,我建议在转向通用的监督学习启发式之前尝试一些可以使用经典技术解决的简单行为模型。
例如,假设:
基线、事件阈值和噪声强度都是先验已知的。
底层过程可以建模为马尔可夫链:它有两个状态(关闭和打开),并且它们之间的转换时间呈指数分布。
然后您可以使用隐马尔可夫模型方法来确定任何给定时间最可能的潜在状态。即使在噪声参数和阈值未知的情况下,您也可以使用 HMM 前向后向训练方法来训练与每个状态的输出相关的参数(例如高斯的均值、方差)。
如果您对事件了解得更多,则可以采用更简单的方法:例如,如果您知道事件信号总是达到基线 + 噪声以上的水平,并且事件总是在时间上分开间隔大于事件本身的宽度,你可以做一个简单的阈值测试。
编辑:
HMM 的经典介绍是 Rabiner's tutorial (a copy can be found here). Relevant also are these errata。
根据您的描述,正确参数化的移动平均线可能就足够了
- 尝试了解传感器及其输出。制作一个模型并做一个提供模拟数据的模拟器,该模拟数据覆盖了带有噪声和所有其他东西的预期数据
- 记录大量真实的传感器数据
- 可视化数据并验证您的假设和模型
- 注释您的传感器数据 i。 e.生成基本事实(您的模拟器将为模拟数据执行此操作)
- 根据你目前所学提出一种或多种算法
- 制作一个测试系统,可以根据基本事实验证您的算法并针对以前的 运行s
进行回归
- 实施您提出的算法并运行它们与真实情况
- 尝试从记录的数据中理解误报和漏报(并尝试调整您的模拟器以重现它们)
- 调整你的算法
其他一些技巧
- 您可以对阈值实施滞后以避免弹跳
- 您可以实施延迟以避免弹跳
- 如果实施去抖动器或低通滤波器,请注意延迟
- 你可以实现多种算法和投票
- 为了测试相对改进,您可以对大量未注释的数据进行回归测试。然后你检查翻转检测只是为了找到性能 increase/decrease
我的问题如下:我需要class验证来自传感器的数据流。我已经设法使用 window 的中位数,然后我从该基线中减去这些值(我想避免负峰值,所以我只使用差值的绝对值)。
现在我需要将事件(= 某些东西触发了传感器)与基线附近的噪音区分开来:
问题是不知道用什么方法。 我想到了几种方法:
- 对 window 中的值求和,如果总和高于阈值,则 class 应该是事件 ('Integrate and dump')
- 对 window 中的值求和并得到平均值(给出类似于一阶导数的值),如果该值为正且高于阈值集 class EVENT , 否则设置 class NO-EVENT
- 两者的结合
(不幸的是,这些方法的缺点是我需要猜测阈值并设置 window 大小)
- 使用从手动 class 化数据中学习的 SVM(但我不知道如何正确设置此算法:我应该查看哪些功能,例如 median/mean window?, 积分?, 一阶导数?...)
你有什么建议?是否有 better/simpler 方法来完成此任务?
我知道有很多复杂的算法,但我不知道什么是最好的方法 - 请对没有机器 learning/DSP 背景的新手有一点耐心:)
非常感谢你和最诚挚的问候。
评估启发式方法的关键是开发系统行为模型。
比如你监控的物理过程是什么模型?例如,您希望您的样本及时相关吗?
传感器输出的型号是什么?是否可以将其建模为电压的离散线性函数?有噪声成分吗?噪声的大小是已知还是未知但恒定?
一旦您列出了您对正在监控的系统的了解,您就可以使用它来评估和决定一个好的分类系统。然后,您还可以获得其准确性的估计值,这对分类器输出的消费者很有用。
编辑:
鉴于更详细的描述,我建议在转向通用的监督学习启发式之前尝试一些可以使用经典技术解决的简单行为模型。
例如,假设:
基线、事件阈值和噪声强度都是先验已知的。
底层过程可以建模为马尔可夫链:它有两个状态(关闭和打开),并且它们之间的转换时间呈指数分布。
然后您可以使用隐马尔可夫模型方法来确定任何给定时间最可能的潜在状态。即使在噪声参数和阈值未知的情况下,您也可以使用 HMM 前向后向训练方法来训练与每个状态的输出相关的参数(例如高斯的均值、方差)。
如果您对事件了解得更多,则可以采用更简单的方法:例如,如果您知道事件信号总是达到基线 + 噪声以上的水平,并且事件总是在时间上分开间隔大于事件本身的宽度,你可以做一个简单的阈值测试。
编辑:
HMM 的经典介绍是 Rabiner's tutorial (a copy can be found here). Relevant also are these errata。
根据您的描述,正确参数化的移动平均线可能就足够了
- 尝试了解传感器及其输出。制作一个模型并做一个提供模拟数据的模拟器,该模拟数据覆盖了带有噪声和所有其他东西的预期数据
- 记录大量真实的传感器数据
- 可视化数据并验证您的假设和模型
- 注释您的传感器数据 i。 e.生成基本事实(您的模拟器将为模拟数据执行此操作)
- 根据你目前所学提出一种或多种算法
- 制作一个测试系统,可以根据基本事实验证您的算法并针对以前的 运行s 进行回归
- 实施您提出的算法并运行它们与真实情况
- 尝试从记录的数据中理解误报和漏报(并尝试调整您的模拟器以重现它们)
- 调整你的算法
其他一些技巧
- 您可以对阈值实施滞后以避免弹跳
- 您可以实施延迟以避免弹跳
- 如果实施去抖动器或低通滤波器,请注意延迟
- 你可以实现多种算法和投票
- 为了测试相对改进,您可以对大量未注释的数据进行回归测试。然后你检查翻转检测只是为了找到性能 increase/decrease