如何使用机器学习从数据序列中计算状态图?

Posted

技术标签:

【中文标题】如何使用机器学习从数据序列中计算状态图?【英文标题】:How to use machine learning to calculate a graph of states from a sequence of data? 【发布时间】:2016-08-02 17:29:39 【问题描述】:

通用配方

我有一个由一系列点组成的数据集,每个点有 12 个特征。

我有兴趣检测此数据中的事件。

在训练数据中,我知道事件发生的时刻。 当事件发生时,我可以在事件之前的点序列中看到一个可观察的模式。该模式由大约 300 个连续的点组成。

我有兴趣在无限的点序列中检测事件何时发生。

分析发生在事后。我对预测事件是否会发生不感兴趣。

具体例子

您可以跳过此部分

我正在构建一种可穿戴设备,它需要检测老人何时跌倒。它将像手表一样戴在手腕上,并且具有 IMU(3 轴加速度计、3 轴陀螺仪和磁力计)

最相关的数据是 Z 轴上的绝对加速度,但还有许多其他信息需要考虑,因为手部动作很复杂并且会产生许多误报。

基于绝对 Z 加速度的人类可观察模式由 3 个状态组成:

    向地面加速 Z 轴上的冲击加速度 沉默 - 非常小的动作

这些状态可以通过监督学习进一步扩展,并且应考虑可穿戴坐标系和绝对坐标系中的其他加速度以及表示为欧拉和四元数的旋转矢量。

接近

我的想法是找到一种算法,该算法使用训练数据来计算状态图,其中在每个状态中都有一些基于 12 个特征的阈值。如果超过阈值,则状态将根据图表发生变化。

你们觉得呢?

马尔可夫模型?

如果我有兴趣在事件发生之前根据 300 模式的起始 200 点来预测事件,那么马尔可夫模型会起作用。

但我有兴趣在模式结束后不久检测到事件,无需预测。

我不确定马尔可夫模型是否适用,我是否不知道如何计算模型。

【问题讨论】:

【参考方案1】:

隐马尔可夫模型对于序列中的事件检测并不少见,尤其是将某个事件的帧与序列中的“背景信号”分开。

最基本的实现是连接 2 个 HMM,一个专门用于建模“信号”,另一个用于建模背景,适当组合以允许像背景-->信号-这样的转换->背景。

一个具体的例子是语音识别中的关键字定位(将“关键字”与背景信号分开)。在Grangier et al., "Discriminative keyword spotting" 的第 11.2 节中可以找到简要说明。 该参考资料中的图 11.1 可能是您正在寻找的模型拓扑。

其他替代方法是带有滑动窗口的二元分类。例如,在T. Dietterich, "Machine Learning for Sequential Data: A review"(以及其他替代方案中)对此进行了讨论。

【讨论】:

以上是关于如何使用机器学习从数据序列中计算状态图?的主要内容,如果未能解决你的问题,请参考以下文章

机器学习和计算机视觉的前20个图像数据集

如何使用 scikit-learn for python 分析和预测(机器学习)时间序列数据集

机器学习笔记:(时间序列中的线性回归)如何选择预测变量

从HMM到RNN,机器学习中的时间序列模型

机器学习 —— 概率图模型(学习:综述)

机器学习RNN——从初识到进阶