【发布时间】:2011-04-19 19:43:31
【问题描述】:
给定传感器状态间隔的时间序列,如何实现一个分类器,该分类器从受监督的训练数据中学习,以根据一系列状态间隔检测事件?为了简化问题,传感器状态被减少到true 或false。
更新:我在 Mining Sequences of Temporal Intervals 上找到了this paper (PDF),它解决了类似的问题。 Another paper (Google Docs) 关于在多元时间序列中挖掘分层时间模式采用了一种新颖的方法,但处理分层数据。
训练数据示例
以下数据是事件的训练示例,表示为随时间变化的图表,其中/¯¯¯\ 表示true 状态间隔,\___/ 表示传感器的false 状态间隔。
Sensor | Sensor State over time
| 0....5....10...15...20...25... // timestamp
---------|--------------------------------
A | ¯¯¯¯¯¯¯¯¯¯¯¯\________/¯¯¯¯¯¯¯¯
B | ¯¯¯¯¯\___________________/¯¯¯¯
C | ______________________________ // no state change
D | /¯\_/¯\_/¯\_/¯\_/¯\_/¯\_/¯\_/¯
E | _________________/¯¯¯¯¯¯¯¯\___
事件检测 vs 序列标签 vs 分类
我最初将我的问题概括为两类序列标记问题,但我的类别确实代表“正常操作”和罕见的“警报事件”,因此我将我的问题重新表述为事件检测。训练数据可用于“正常操作”和“报警事件”。
为了降低问题的复杂性,我已将传感器事件离散化为布尔值,但不必如此。
可能的算法
隐马尔可夫模型似乎是一种可能的解决方案,但它能够使用状态区间吗?如果序列标记器不是解决此问题的最佳方法,我们将不胜感激其他建议。
贝叶斯概率方法
传感器活动在一天中的不同时间会有很大差异(早上忙碌,晚上安静)。我最初的方法是在几天内测量正常的传感器状态,并按一天中的时间(小时)计算状态概率。在不太可能的时间超过“不可能阈值”的传感器状态的组合概率将表明发生了事件。但是,如果传感器嘈杂,这似乎会引发错误警报。我还没有实现这个,但我相信这种方法是有好处的。
特征提取
向量状态可以表示为在特定时间发生并持续特定持续时间的状态间隔变化。
struct StateInterval
{
int sensorID;
bool state;
DateTime timeStamp;
TimeSpan duration;
}
例如。进程表中的一些状态间隔:
[ {D, true, 0, 3} ]; [ {D, false, 4, 1} ]; ...
[ {A, true, 0, 12} ]; [ {B, true, 0, 6} ]; [ {D, true, 0, 3} ]; etc.
一个好的分类器会考虑状态值区间和最近的状态变化,以确定状态变化的组合是否与某个类别的训练数据非常匹配。
编辑:关于如何从多个传感器的警报数据中提取特征以及如何将其与以前的数据进行比较的一些想法......
首先计算每个传感器在一天中每个小时的以下数据:
- 平均状态间隔长度(对于
true和false状态) - 状态变化的平均时间
- 状态随时间变化的次数
然后可以将每个传感器与矩阵中的每个其他传感器进行比较,数据如下:
- 传感器 B 在传感器 A 更改为真实状态后所需的平均时间。如果平均值是 60 秒,那么等待 1 秒会比等待 120 秒更有趣。
- 当传感器 A 处于一种状态时,传感器 B 经历的平均状态变化次数
给定两组训练数据,分类器应该能够从这些特征集中确定最有可能进行分类的类别。
这是一种明智的方法吗?比较这些特征的好算法是什么?
编辑:状态变化的方向(false->true vs true-false)很重要,因此任何功能都应考虑到这一点。
【问题讨论】:
-
"将一系列状态变化分类为两类".. 这两类的标准是什么? “考虑状态更改间隔”.. 这将需要每个状态更改的时间戳,而您的表格中没有提供。
-
我已将我的
Time列澄清为时间戳而非持续时间。 -
@FreshCode:如果没有“不寻常”和“罕见事件”的精确定义,我不知道如何回答这个问题。也许这是你的问题?如何指定这两个模糊的概念?
-
@Tergriver:在这种情况下,“罕见”和“正常”只是两个可能分类类别的标签。训练数据将可用于教导分类器哪些传感器数据最匹配其中之一。
-
显着改变了我的问题陈述,使其更笼统。
标签: c# machine-learning sequence classification time-series