如何从时间序列数据中预测连续值?

数据挖掘 机器学习 时间序列 预言
2022-02-18 01:31:53

我有一只手套,上面附有 2 个 IMU(惯性测量单元)。它可以将旋转值作为四元数 (x,y,z,w) 和手的加速度 (x,y,z)。我把它放在我的左手上,我想预测手相对于我身体上某个固定点(例如我的头)的位置。

当我收集数据时,我只是使用 Vive 控制器来跟踪我的手。

现在我只是将这个值输入到一个简单的模型中,比如 SVM 来预测手相对于我的头部的 (x,y,z)。问题是输出不稳定,因为传感器不够稳定。而且因为它没有考虑上一个时间步长的数据。

我想利用时间序列数据,因为我的数据本质上是时间序列。

如果我将数据视为时间序列,我应该使用哪些算法?你可以建议我也应该学习的东西。

1个回答

我将首先列出一些您可以研究的模型示例。

你可以建议我也应该学习的东西。

您可以查看更经典的回归类型模型,或者更深入地研究深度神经网络,利用长期短期记忆单元来模拟随时间变化的关系。

古典

帮助您搜索相关教程/文档的主要术语将是autoregressive,这是一个花哨的名称,表示目标值是根据其最近的历史预测的。新近是一个可以调整模型的参数,称为lags

查看 Python 的statsmodels模块中的选项。更具体地说,您可能想尝试ARIMA模型类。有关 ARIMA 的更多详细信息,请查看此线程

有许多传统模型可用于时间序列问题。您可能考虑搜索的术语包括:

深度学习

这是一个更新的话题,总体上比上面讨论的经典模型要复杂一些。如果你走这条路,你可能会通过使用 Keras 等深度学习框架取得最快的进展,它允许你构建复杂的模型而无需太多时间投入。它是一个包装库,在后台使用 Tensorflow、Theano 或 CNTK(这些是可用的后端)。

在涉及时间序列分析的深度学习方法中,您几乎肯定希望从 LSTM 模型开始。这代表长期短期记忆,并在您传递时间序列数据时使用复杂的单元来监控各种状态。这是一个非常大的话题,所以我将提供:

如果您决定采用这种方式(与经典模型相反),那么是的,您应该了解 backprop


这是您描述的一个非常广泛的问题,并且有很多方法。它也可能在(自我)本地化领域的研究中非常活跃。