如果它们相关,如何从另一个时间序列预测一个时间序列

机器算法验证 时间序列 机器学习 预言
2022-02-28 23:28:21

一年多来,我一直试图解决这个问题,但没有太大进展。这是我正在做的一个研究项目的一部分,但我将用我编造的一个故事示例来说明它,因为问题的实际领域有点令人困惑(眼动追踪)。

你是一架飞机,追踪一艘穿越海洋的敌舰,所以你收集了这艘船的一系列 (x,y,time) 坐标。你知道一艘隐藏的潜艇会和船一起旅行以保护它,但是虽然它们的位置之间存在关联,但潜艇经常会从船上徘徊,所以虽然它经常靠近它,但它也可能在它的另一边世界偶尔。您想预测潜艇的路径,但不幸的是它对您隐藏。

但在 4 月的某个月,您注意到潜艇忘记隐藏自己,因此在 1,000 次航行中,您拥有潜艇和船舶的一系列坐标。使用这些数据,您想建立一个模型,仅根据船的运动来预测隐藏潜艇的路径。幼稚的基线会说“潜艇位置猜测=”船的当前位置”,但从 4 月份潜艇可见的数据中,您注意到潜艇有领先于船舶的趋势,所以“潜艇位置“guess = ship's position in 1 minute”是一个更好的估计。此外,4月份的数据显示,当船在水中停留较长时间时,潜艇很可能在远处巡逻沿海水域。还有其他模式当然。

给定 4 月份的数据作为训练数据,你将如何构建这个模型来预测潜艇的路径?我目前的解决方案是一个临时线性回归,其中因素是“行程时间”、“船舶的 x 坐标”、“船舶闲置 1 天”等,然后让 R 计算权重并进行交叉验证. 但我真的很想有一种方法可以从 4 月的数据中自动生成这些因素。此外,使用序列或时间的模型会很好,因为线性回归没有,我认为它是相关的。

感谢您阅读所有这些,我很乐意澄清任何事情。

1个回答

这是一种不使用任何“上下文”信息的方法,即它没有考虑到“潜艇正在跟随一艘船”这一事实。另一方面,它很容易开始:

表示为

xsub(t),ysub(t)

xship(t),yship(t)

潜艇和船当时的坐标t,并定义“距离系列”

xdist(t)=xship(t)xsub(t)

ydist(t)=yship(t)ysub(t)

我的建议是您分别预测其中的每一个(您可以稍后将它们联系在一起)。

让我们花点时间来想象一下它们的样子。让我们专注于x- 坐标,假设船向右移动,潜艇在后面跟随。假设潜艇在船后约 100 米处,偏差为 10 米。

然后

xdist(t)=100±10wiggle(t)

然后,您可以对“wiggle" 函数作为具有零均值和单位方差的高斯白噪声变量。

现在(仍然专注于x坐标,故事y是相同的)如果wiggle函数是白噪声,您将能够计算平均值μ和标准差σ该系列的xdist和写

xdist(t)=μ+σWx(t)

由于您有实际数据,您可以计算时间序列Wx(t)看看它是否遵循高斯(即正态)分布。如果是这样,或者即使它是您识别的任何分布,您也可以生成值并做出预测xdist.

人们采用的另一种策略(我认为这对你有用)是将他们的系列分成

Polynomial base + Cyclic pattern + Bounded randomness

在潜艇和船的情况下,多项式部分可能是常数,而循环部分可能是正弦和余弦的总和(来自海洋的波浪......)。眼动追踪可能并非如此。

有一些工具可以为您解决这个问题。以下是我所知道的两个:

  1. DTREG(30 天评估许可证)
  2. Microsoft 时序算法,它是其 SQL Server 产品的一部分。我目前用的是他们的180天评估版,很好用。

这是来自 SQL Server 工具的屏幕截图(虚线部分是预测):

在此处输入图像描述

他们使用的一种算法称为 ARIMA。想了解它是如何工作的,我做了一些谷歌搜索并找到了这本书:时间序列的第一门课程(别担心,你不需要 SAS 来跟随。我不需要。)。它非常易读。

您不必知道 ARIMA 如何使用这些工具,但我认为如果您有上下文,它总是更容易,因为要设置“模型参数”等。