【问题标题】:Can I use a transfer learning in facebook prophet?我可以在 Facebook 先知中使用迁移学习吗?
【发布时间】:2018-05-24 16:51:07
【问题描述】:

我希望我的预言机模型能够预测接下来 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) 并获得即时预测。

【问题讨论】:

    标签: time-series facebook-prophet


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-04-07
        • 2017-09-14
        • 2020-05-13
        • 2018-10-04
        • 2019-12-19
        • 2021-11-11
        • 1970-01-01
        相关资源
        最近更新 更多