1.2 时间序列预测概览
预测是使用历史数据和可能影响我们预测的未来事件的知识来预测未来。这个定义充满了希望,作为数据科学家,我们通常非常渴望通过使用科学知识来展示一个令人难以置信的具有近乎完美的预测准确性的模型,并用它来开始预测。然而,在达到预测点之前,必须涵盖一些重要的步骤。
图1.7是一个完整预测项目在专业设置下的简化示意图。但请注意,这些步骤并不是通用的,它们可能会也可能不会被遵循,这取决于组织及其成熟度。尽管如此,这些步骤对确保数据团队和业务团队之间的良好凝聚力是必不可少的,从而提供商业价值并避免团队之间的摩擦和挫折。
图1.7 项目预测路线图。第一步自然是设定目标,证明预测的必要性;然后,你必须确定需要预测什么才能实现这一目标;接着设置预测的范围,一旦完成,你就可以收集数据并开发预测模型;最后将模型部署到生产中,监控其性能,并再收集新数据,以便重新训练预测模型并确保其仍然相关
让我们深入研究一个场景,该场景详细涵盖了预测项目路线图的每个步骤。想象一下,你正计划一个月后进行一次为期一周的露营旅行,你想知道要随身携带哪个睡袋,以便晚上可以舒适地睡觉。
1.2.1 设定目标
任何项目路线图的第一步都是设定目标。这里的场景很明确:你想知道晚上带哪个睡袋才能睡得舒服。如果晚上很冷,那么一个温暖的睡袋是最好的选择。当然,如果预计晚上会很暖和,那么一个轻便的睡袋会是更好的选择。
1.2.2 确定预测对象
然后为决定带哪个睡袋你要确定什么是必须预测的。在这种情况下,你需要预测夜间的温度。为了简化问题,只要考虑预测最低温度就足以做出决定,因为最低温度出现在夜间。
1.2.3 设置预测范围
现在,你可以设置预测的范围。在这种情况下,你的露营旅行是一个月后开始,并且将持续一周。因此,你预测的时间范围是一周,因为你只对预测露营旅行期间的最低温度感兴趣。
1.2.4 收集数据
现在,你可以开始收集数据了。例如,你可以收集历史每日最低温度数据。你还可以收集可能影响温度的因素的数据,比如湿度和风速。
这时会产生一些问题,就是到底收集多少数据才算足够。理想情况下,你应该收集1年以上的数据。这样,你可以确定是否存在年度季节性模式或趋势。就温度而言,你当然可以期待一年中的一些季节性模式,因为不同的季节会带来不同的最低温度。
然而,一年的数据并不是确定数据多少的最终答案。这在很大程度上取决于预测的频率。在这种情况下,你将创建每日预测,因此,一年的数据应该足够了。
如果你想按每小时构建预测,几个月的训练数据就足够了,因为它将包含大量的数据点。如果你要按月度或年度构建预测,则需要更大的历史时段,以获得足够多的数据点进行训练。
最后,关于训练模型所需的数据量,这里没有明确的答案。确定这一点是构建模型、评估其性能,以及测试更多数据是否会提高模型性能的实验过程的一部分。
1.2.5 开发预测模型
有了历史数据,你就可以开发预测模型了。项目路线图的这一部分是本书的重点。这是你研究数据并确定是否存在趋势或季节性模式的时候。
如果你观察季节性,那么SARIMA模型将是相关的,因为该模型使用季节性效应来产生预测。如果你有关于风速和湿度的信息,那么你可以使用SARIMAX模型将其考虑在内,因为你可以向它提供来自外部变量(如风速和湿度)的信息。我们将在第8章和第9章中详细探讨这些模型。
如果你设法收集了大量的数据,比如过去20年的日最低气温,那么你可以使用神经网络来训练这些大量的数据。与统计学习方法不同,深度学习倾向于产生更好的模型,因为更多的数据被用于训练。
无论开发哪个模型,你都将使用部分训练数据作为测试集来评估模型的性能。测试集将始终是最新的数据点,并且必须代表预测范围。
在这种情况下,由于你的预测范围是一周,因此你可以从训练集中删除最后7个数据点,将它们放在测试集中。然后,在训练每个模型时,你可以生成一周的预测,并将结果与测试集进行比较。模型的性能可以通过计算误差度量来评估,例如均方误差(Mean Squared Error,MSE)。这是一种评估你的预测与实际值差距的方法。MSE最小的模型将是性能最好的模型,它将进入下一步。
1.2.6 部署到生产中
一旦你得到了最佳模型,就必须把它部署到生产环境中。这意味着你的模型可以接收数据,并返回未来7天的每日最低气温预测。有许多方法可以将模型部署到生产环境中,这可能是一整本书的主题。你的模型可以作为API或集成到Web应用程序中来运行,你也可以定义自己的Excel函数来运行该模型。最终,模型部署后,当你输入数据时,无须对其进行任何手动操作,就能返回预测。此时,还可以对你的模型进行监控。
1.2.7 监控
由于露营旅行距离现在有1个月,因此你可以看到你的模型的表现。每天,你都可以将模型的预测与当天记录的实际最低气温进行比较,这使你可以确定模型预测的质量。
你还可以查找意外事件。例如,可能会出现热浪,从而降低模型预测的质量。密切监控你的模型和当前事件可以让你确定意外事件是暂时的,还是会持续2个月,在这种情况下,它可能会影响你的露营旅行决定。
1.2.8 收集新的数据
在监控模型时,你需要将模型的预测与当天观测到的最低气温进行比较,这样就必须收集新的数据。这个新的、更新的数据可以用来重新训练模型,这样就可以用来预测未来7天的最低气温。
这个循环在接下来的一个月里重复,直到露营旅行开始的那一天,如图1.8所示。到那时,你将做出许多预测,根据新观测到的数据评估它们的质量,并在你记录它们时用新的日最低气温重新训练模型。这样,你就可以确保你的模型仍然有效,并使用相关数据来预测露营旅行的温度。
最后,根据模型的预测,你可以决定带哪个睡袋。
图1.8 生产循环可视化。一旦将模型部署到生产中,就将进入一个循环,对其进行监控,收集新的数据,并使用该数据调整预测模型,然后再次部署它