具有预测的机器学习重新训练模型

时间:2017-03-09 11:56:24

标签: machine-learning

我有一个模型,它使用前几天的数据来预测今天。 (使用0:t-1数据来预测t数据)

现在我想扩展这个模型,以便为接下来的n天做出预测。然而,不是仅使用0:t-1数据来预测t,t + 1,t + 2等等;我还想使用对t,t + 1等进行的预测来重新训练模型并分别对t + 1,t + 2等进行预测。

所以对于t的预测:使用0:t-1数据

用于预测t + 1:使用0:t-1数据+预测t以上。

用于预测t + 2:使用0:t-1数据+预测t高于+预测t + 1以上

这是ML社区的公认惯例吗? 这样做的最佳方法是什么?

我天真的解决方案:我使用t-1数据训练。预测t。用t-1 + t预测重新训练。预测t + 1。等等。

我面临的问题:训练模型需要一些时间(约1.5-2分钟),每天重复这个过程似乎是违反直觉的。当我运行100天进行预测时,大约需要3个小时。

2 个答案:

答案 0 :(得分:1)

您的问题(甚至包括您的评论)相当含糊,因为它没有向您的模型描述输入数据。当你说“使用预测x”时也会有歧义,因为“使用”可能意味着用作训练数据或用作训练模型的输入。

您不应使用预测数据来重新训练模型。如果你的模型不完美(如果是,没有理由重新培训),你将创建一个根据自己的输出进行训练的乱伦模型,并将其自身的错误用作“真实”标签。

在你的评论中,你提到有一个“真实生活事件”提供了一个正确的(真实)标签。当您收到新的真相数据时,重新训练您的模型当然是可以接受的。

您可以通过多种方式处理处理问题。最好的方法取决于您的模型的细节,但这里有一些通常需要考虑的选项:

  • 只需等待N天,直到您重新训练模型。
  • 仅在预测不正确时重新训练模型。
  • 限制用于再培训的数据量(例如,仅使用 M最近几天的数据。)

关于“使用”预测和/或新的真实数据,可以通过使用以N天的数据序列作为输入的模型来重新训练整个模型。例如,您可以使用天t-N-1:t-1来预测日t。然后 - 在不重新训练模型的情况下 - 使用天t-N:t来预测日t+1。这可以通过预测或新的真值来完成。 N的大小具体取决于模型和输入数据的详细信息(例如,是否考虑日期/季节变化)。

答案 1 :(得分:1)

  • 好的,我们有t-1天的标记数据,我们希望预测结果让我们说明n天。
  • 由于在问题中没有提到我们每天对应的输入特征是什么,我会假设对应于不同日期的特征向量彼此独立。这样说,我们有t-1个独立的训练数据点,并且使用这些数据点,我们想要预测新n数据点的输出。
  • 让我们先讨论问题中提出的方法,然后让我们讨论一下可能更好的解决方案。
  • 因此,在这个问题中,OP希望使用动态模型,在该模型中,他使用每个新日的标签来重新训练模型并进一步预测。最初,不清楚他是否想要使用每个新的一天的预测输出或每个新的一天使用正确的标签。阅读完评论后,很明显他想要使用与每个新日相对应的正确标签。
  • 如果反之亦然,使用第t天的预测输出来预测t+1的输出的问题是,它考虑了与预测相关的误差第t天。因此,根据模型的准确性,向我们现有的t-1培训数据点添加一个额外的数据点可能会或可能没有帮助。
  • 现在谈到OP实际上想问的部分。因此,为每天添加正确的标签并重新训练模型肯定会在一定程度上提高其准确性。但是,如果t-1很大(大于Scikit-Learn's Flow Chart开头讨论的最少50个数据点),那么t天标记数据的贡献就会增加t在准确性上有很大差异,因为它只是n中的一个额外训练数据点。
  • 也就是说,等待k天更好,然后使用t-1+k正确标记的数据点重新训练模型。
  • 因此,总而言之,检查当前模型准确性的最佳方法是,由于我们为所有这些t-1数据点设置了正确的标签,因此随机划分t-1数据 - 指向60%的训练数据点,20%的测试数据点和20%的交叉验证数据点。然后,这些随机选择的数据点可以5C2 AlarmManager.RTC_WAKEUP方式进一步相互替换。
  • 现在问题是k应该有多大?也就是说,在重新训练模型之前我们应该等多久?这个问题的答案是非常主观的,取决于某些要求:
    • 例如,假设模型的当前准确性不是很好,因此在这种情况下,经常重新训练模型直到它开始达到确定的阈值是更好的主意。也就是说,在这种情况下,k可能很小。
    • 决定k值的另一个好方法是观察不同日期的特征向量之间的模式。如果特征向量根据季节显着变化,那么k可以大到2-3个月。如果每周特征向量发生剧烈变化,则k可以是7天,依此类推。
  • 关键是每个再培训步骤都应该为模型增加一些重要的价值并且准确性。每天重新训练可能无法实现这一目的。最后,我们的想法是在“2-3小时再培训和预测成本”“每次重新培训后的模型准确性”之间保持良好的平衡。