1

我希望我的先知模型能够预测接下来 24 小时内每 10 分钟间隔的值(例如 24*6=144 值)。

假设我已经在一个巨大的(超过 900k 行).csv文件上训练了一个模型,其中样本行是......

ds=2018-04-24 16:10, y=10
ds=2018-04-24 16:20, y=14
ds=2018-04-24 16:30, y=12

...

所以我打电话mode.fit(huge_df)并等待 1-2 秒来接收 144 个值。

然后一个小时过去了,我想在给定新数据(6 行)的情况下调整以下 (144 - 6) 138 个值的预测。

我怎样才能调整我现有的先知模型而不必再次打电话 mode.fit(huge_df + live_df)等待几秒钟?我希望能够打电话mode.tune(live_df)并获得即时预测。

4

2 回答 2

1

据我所知,这实际上是不可能的。我认为他们使用 BFGS 优化算法的变体来最大化模型的后验概率。因此,在我看来,训练模型的唯一方法是考虑您要使用的整个数据集。迁移学习与神经网络一起工作的原因是它只是一个权重(参数)初始化,然后反向传播在标准 SGD 训练模式中迭代运行。从理论上讲,您可以在先知的情况下将参数初始化为先前模型的参数,这可能会或可能不会按预期工作。然而,我不知道目前已经实现了一些类似的东西(但由于它是开源的,你可以试一试,希望能大大减少收敛时间)。

现在就实际建议而言。您可能不需要所有数据,只需将其尾随手头问题的真正需要即可。例如,如果您只有每月的季节性,那么拥有 10 年的数据是没有意义的。此外,根据您的数据自相关的强度,您可能会在不失去任何预测能力的情况下稍微降低采样。另一个想法是尝试一种适合在线学习(或批处理)的算法 - 例如,您可以尝试使用扩张卷积的 CNN。

于 2019-05-12T20:03:18.817 回答
0

时间序列问题与通常的机器学习问题完全不同。当我们训练猫/狗分类器时,猫和狗的特征集不会立即改变(进化很慢)。但是当涉及到时间序列问题时,每次都应该在预测之前进行训练。当您进行单变量预测(如您的情况)时,这一点变得更加重要,因为我们提供给模型的唯一特征是过去的值,这些值会在每个实例中发生变化。由于这些担忧,我认为像迁移学习这样的东西不会在时间序列中起作用。

相反,您可以做的是,尝试使用滚动窗口方法将您的时间序列问题转换为回归问题。然后,您可以保存该模型并获得预测。但是,请确保在较短的时间间隔内一次又一次地训练它,例如每天一次左右,具体取决于您需要预测的频率。

于 2019-05-12T14:52:43.350 回答