我在一家银行工作,很快就意识到时间是一个多么重要的因素。利率随着时间的推移而变化,人们的支出随着时间的推移而变化,资产价格也随时间变化。然而我发现大多数人,包括我在内,都不太擅长进行时间序列分析,所以我决定学习时间序列预测。
事实证明这比预期的要难,因为我找到的每个资源都用R语言,而我习惯使用Python。对数据科学来说,毫无疑问,Python是业界最流行的语言。R语言限制你做统计计算,Python允许你编写网站代码、执行机器学习、部署模型、构建服务器等。因此,在学习时间序列预测时,我不得不将大量的R语言代码翻译成Python,那时我才意识到这个市场空白,我很幸运有机会写一本关于这方面的书。
通过这本书,我希望创建一个用Python进行时间序列预测的一站式参考指南。它既涵盖了统计和机器学习模型,还讨论了自动预测库,因为它们在行业中广泛使用,并且通常用作基线模型。本书结合各种现实生活场景,着重强调动手实践方法。在现实生活中,数据是杂乱的、“肮脏”的,有时还会丢失,而且我想给读者一个安全的空间,让他们带着困难实验,并从中学习,这样他们才能轻松地将这些技能转移到自己的项目中。
这本书的重点是时间序列预测。当然,对于时间序列数据,我们也可以执行分类或异常检测,但本书只聚焦于预测。
在每一章中,读者都会找到可以用来实践和磨炼技能的练习。每个练习在GitHub上都有完整的解决方案。我强烈建议读者花时间完成它们,这样才能获得重要的实践技能。这些练习可以帮助读者检验所学的知识、回顾指定的章节内容以及在新场景中应用建模技术。
在学完各章内容并完成练习后,读者将有信心使用所有必需的工具处理任何预测项目并获得很棒的结果。衷心地希望读者能在好奇心的驱动下,成为时间序列方面的专家。
写这本书是为了帮助数据科学家掌握时间序列预测,并帮助专业人士从用R语言转型到用Python进行时间序列分析。书中首先定义时间序列数据并强调使用该类型数据的独特性(例如,你不能打乱数据),然后逐步开发基线模型并探讨预测的必要性。
其他章节深入讨论预测技术,并逐渐增加模型的复杂性,从统计模型到深度学习模型。最后,本书介绍自动预测库,这些库可以大幅加速预测过程。
这本书是为那些知道如何执行传统的回归和分类任务但不擅长处理时间序列数据的数据科学家而写。到目前为止,如果你还一直在删除日期栏,那么本书非常适合你!这本书也适合精通R语言并希望转型到Python的专业人士。R语言是一种很好的时间序列预测语言,并且许多方法已经用R语言实现。然而,Python是最流行的数据科学语言,可以应用于深度学习模型,这是R语言无法做到的。
全书共21章,分为4部分。
第一部分是时间序列预测概述。我们将给出时间序列数据的形式化定义、开发基线模型,并查看预测是否合理:
❍第1章定义时间序列数据并探讨预测项目的生命周期。
❍第2章中,我们将开发基线模型,因为模型只能相对于另一个模型进行评估。因此,在转向更复杂的技术之前,首先有一个简单的预测模型是很重要的。
❍第3章将研究随机游走模型,这是一个特殊的场景,无法使用高级模型进行合理预测,我们必须求助于简单的基线模型。
第二部分将重点介绍使用统计模型进行预测:
❍第4章将开发移动平均模型MA( q ),它是更复杂的预测技术的构建模块之一。
❍第5章将开发自回归模型AR( p ),这是另一种用于更复杂场景的基础模型。
❍第6章将把AR( p )和MA( q )模型结合起来形成ARMA( p , q )模型,并设计新的预测过程。
❍第7章将在第6章的基础上使用ARIMA( p , d , q )模型对非平稳时间序列建模。
❍第8章将添加另一层复杂性并使用SARIMA( p , d , q )( P , D , Q ) m 模型对季节时间序列建模。
❍第9章将添加最后一层复杂性,并实现SARIMAX模型,使我们能使用外部变量来预测数据。
❍第10章将探讨向量自回归模型VAR( p ),它允许我们同时预测多个时间序列。
❍第11章将以一个顶点项目结束第二部分,使我们有机会应用自第4章以来学到的知识。
第三部分将介绍深度学习预测。当数据集变得非常大时,由于存在非线性关系和高维度,深度学习是最合适的预测工具:
❍第12章介绍深度学习和我们可以建立的模型类型。
❍第13章探讨数据窗口步长,这对于确保使用深度学习模型进行预测的成功至关重要。
❍第14章将开发第一个简单的深度学习模型。
❍第15章将使用LSTM架构进行预测。这个架构专门用于处理顺序数据,就像时间序列一样。
❍第16章将探索CNN架构,它可以有效地通过卷积运算过滤时间序列中的噪声。我们也会组合使用CNN和LSTM架构。
❍第17章将开发一个自回归深度学习模型,它是一个经证明可产生最先进结果的架构,因为模型的输出作为输入反馈来生成下一个预测。
❍第18章将以一个顶点项目来结束第三部分。
第四部分将探讨自动化预测库的使用,特别是Prophet,因为它是行业中广泛使用的库:
❍第19章将探讨自动化预测库的生态系统,我们将使用Prophet完成一个项目。我们还将使用SARIMAX模型比较两种方法的性能。
❍第20章是一个顶点项目,我们将带你使用Prophet库和SARIMAX模型,看看哪个在这种情况下表现最好。
❍第21章将对本书进行总结,旨在激励你超越自我,并探索利用时间序列数据还可以做些什么。
本书包含了许多示例代码,在大多数情况下,原始源代码已被重新格式化。我们添加了换行并重做了缩进,以适应书中可用的页面空间。在某些情况下即使这样还不够,因此清单包括了行连续标记( )。此外,当在正文中描述代码时,源代码中的注释通常会从清单中删除。许多清单中都有代码注释,以突出重要的概念。
你可以从网址https://livebook.manning.com/book/time-series-forecasting-in-python-book/获得可执行代码片段,本书的全部源代码可以在GitHub上找到:https://github.com/marcopeix/TimeSeriesForecastingInPython。在那里你也可以找到所有练习的解决方案,以及代码运行的图片。创建可视化有时是一项被忽视的技能,但我相信这是一项重要的技能。
所有的代码都是在Windows上使用Anaconda中的Jupyter Notebook运行的。我使用Python 3.7,但任何后续发布的版本应该都可以运行。