我有一个模型,它使用前几天的数据来预测今天。 (使用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个小时。
答案 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
数据点的输出。t
天的预测输出来预测t+1
的输出的问题是,它考虑了与预测相关的误差第t
天。因此,根据模型的准确性,向我们现有的t-1
培训数据点添加一个额外的数据点可能会或可能没有帮助。t-1
很大(大于Scikit-Learn's Flow Chart开头讨论的最少50个数据点),那么t
天标记数据的贡献就会增加t在准确性上有很大差异,因为它只是n
中的一个额外训练数据点。t-1+k
正确标记的数据点重新训练模型。t-1
数据点设置了正确的标签,因此随机划分t-1
数据 - 指向60%的训练数据点,20%的测试数据点和20%的交叉验证数据点。然后,这些随机选择的数据点可以5C2
AlarmManager.RTC_WAKEUP
方式进一步相互替换。