通过处理时间序列图,我希望能够检测到类似于这样的模式:
以一个样本时间序列为例,我希望能够检测到如图所示的模式:
我需要使用哪种AI算法(我假设是机器学习技术)来实现这个目标?有没有可以使用的C/C++库?
回答:
这是我做的一个小项目,用于分割心电图数据的样本结果。
我的方法是“切换自回归隐马尔可夫模型”(如果您没听说过,可以谷歌一下),其中每个数据点都是通过贝叶斯回归模型从前一个数据点预测的。我创建了81个隐藏状态:一个垃圾状态用于捕捉每个心跳之间的数据,以及80个单独的隐藏状态对应于心跳模式内的不同位置。80个状态的模式直接从一个子采样的单一心跳模式构建,并且有两种转换 – 自转换和转换到模式中的下一个状态。模式中的最后一个状态转换到自身或垃圾状态。
我使用Viterbi训练训练模型,仅更新回归参数。
在大多数情况下,结果是足够的。结构相似的条件随机场可能会表现得更好,但如果您没有已标记的数据,训练CRF将需要手动标记数据集中的模式。
编辑:
这是一些示例Python代码 – 它不是完美的,但它给出了总体方法。它实现了EM而不是Viterbi训练,这可能会稍微稳定一些。心电图数据集来自http://www.cs.ucr.edu/~eamonn/discords/ECG_data.zip