如何根据之前的时间序列数据预测流量?

数据挖掘 机器学习 时间序列
2021-09-28 23:55:41

如果我有一家零售店,并且有办法测量每分钟有多少人进入我的商店,并为这些数据加上时间戳,我如何预测未来的客流量?

我研究过机器学习算法,但不确定使用哪一种。在我的测试数据中,与我尝试过的其他方法(如 KNN)(我认为是合理的参数和距离函数)相比,同比趋势更准确。

这似乎与处理时间序列数据的财务建模类似。有任何想法吗?

4个回答

像 KNN 这样的模型的问题在于它们没有考虑季节性(趋势中随时间变化的变化)。要将这些考虑在内,您应该使用时间序列分析。

对于计数数据,例如您的数据,您可以使用广义线性自回归移动平均模型 (GLARMA)。幸运的是,有一个 R 包可以实现它们(glarma)。

插图是该工具背后理论的一个很好的资源。

我认为克里斯托弗的上述回答是完全明智的。作为一种替代方法(或者可能只是除了他给出的建议之外),我可能会首先将数据可视化一点,以大致了解正在发生的事情。

如果您还没有这样做,您可以尝试添加日期的月份和星期几作为特征——如果您最终坚持使用 KNN,这将有助于模型获得季节性。

作为一种不同的处理方式,您可以考虑从一个非常非常基本的模型(如 OLS)开始。这些通常在生成合理的预测方面大有帮助。

最后,我们对您的数据了解得越多,我们就越容易帮助生成建议——您观察的时间范围是什么?您目前正在使用哪些功能?等等。

希望这可以帮助 -

你可以试试神经网络。您可以在此处此处找到关于如何在时间序列上应用 NN 的 2 个很好的解释

请注意,最佳做法是:

  • 对输入数据进行去季节化/去趋势化(这样 NN 就不会学习季节性)。
  • 重新缩放/标准化输入数据。

因为您要寻找的是回归问题,所以激活函数应该是linear或不是sigmoidtanh并且您的目标是最小化(与分类问题中sum-of-squares error的最大化相反)。negative log-likelihood

正如上面提到的@Christopher Lauden,时间序列分析最适合这类事情。但是,如果您希望做一个更传统的“机器学习方法”,我过去做过的事情是将您的数据作为特征阻塞到重叠的时间窗口中,然后用它来预测接下来的几天(或几周) ) 交通。

您的特征矩阵将类似于:

t1 | t2 | ... | tN
t2 | t3 | ... | tN+1
t3 | t4 | ... | tN+2
...
tW | tW+1 | ... |tN+W

tI当天的交通在哪里I您将要预测的特征是最后一列之后的第二天的流量。本质上是用一个流量窗口来预测第二天的流量。

任何类型的 ML 模型都适用于此。

编辑

针对这个问题,“您能否详细说明如何使用此特征矩阵”:

特征矩阵的值指示过去一段时间内的流量(例如,1 周内每小时的流量),我们使用它来预测未来某个特定时间段的流量。我们获取历史数据并构建历史流量的特征矩阵,并将其标记为未来某个时期的流量(例如,在特征窗口后 2 天)。使用某种回归机器学习模型,我们可以获取历史流量数据,并尝试构建一个模型来预测流量在我们的历史数据集中是如何移动的。假设未来的流量将类似于过去的流量。