描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111754466
编辑推荐
借助Python、深度学习和时间序列数据,你可以预测未来!时间序列预测是一种以时间为中心的数据建模技术,用于识别即将发生的事件。新的Python库和强大的深度学习工具使准确预测时间序列比以往任何时候都更容易。 本书教你如何从基于时间的数据(例如日志、客户分析和其他事件流)获得即时、有意义的预测。作者通过带注释的Python代码全面演示用于时间序列预测的统计和深度学习方法,并通过一些项目(比如预测未来的药物处方数量)来帮助你巩固和拓展所学知识,提升预测技能,有效解决实际问题。 本书涵盖: ·为季节性效应和外部变量创建模型。 ·用多元预测模型来预测多元时间序列。 ·用于大规模数据集的深度学习。 ·自动化预测过程。 本书适合熟悉Python和TensorFlow的数据分析师和数据科学家阅读。
内容简介
本书教你如何从基于时间的数据(如日志、客户分析和其他事件流)中获得即时、有意义的预测。在这本通俗易懂的书中,作者通过带有注释的Python代码进行全面演示,你将学习用于时间序列预测的统计和深度学习方法。通过跟随书中的实例锻炼你的技能,你很快就会准备好建立自己的准确、有洞察力的预测。
目 录
目 录
译者序
前 言
致 谢
第一部分 时间不等人
第1章 了解时间序列预测 3
1.1 时间序列简介 4
1.2 时间序列预测概览 7
1.2.1 设定目标 8
1.2.2 确定预测对象 8
1.2.3 设置预测范围 8
1.2.4 收集数据 8
1.2.5 开发预测模型 8
1.2.6 部署到生产中 9
1.2.7 监控 9
1.2.8 收集新的数据 9
1.3 时间序列预测与其他回归任务的
差异 10
1.3.1 时间序列有顺序 10
1.3.2 时间序列有时没有特征 10
1.4 下一步 11
第2章 对未来的简单预测 12
2.1 定义基线模型 13
2.2 预测历史均值 14
2.2.1 基线实现准备 15
2.2.2 实现历史均值基线 16
2.3 预测最后一年的均值 19
2.4 使用最后已知数值进行预测 21
2.5 实现简单的季节性预测 22
2.6 下一步 23
第3章 来一次随机游走 25
3.1 随机游走过程 26
3.2 识别随机游走 29
3.2.1 平稳性 29
3.2.2 平稳性检验 31
3.2.3 自相关函数 34
3.2.4 把它们组合在一起 34
3.2.5 GOOGL是随机游走吗 37
3.3 预测随机游走 39
3.3.1 长期预测 39
3.3.2 预测下一个时间步长 44
3.4 下一步 46
3.5 练习 46
3.5.1 模拟和预测随机游走 46
3.5.2 预测GOOGL的每日收盘价 47
3.5.3 预测你选择的股票的每日
收盘价 47
第二部分 使用统计模型进行预测
第4章 移动平均过程建模 51
4.1 定义移动平均过程 52
4.2 预测移动平均过程 57
4.3 下一步 64
4.4 练习 65
4.4.1 模拟MA(2)过程并做预测 65
4.4.2 模拟MA(q)过程并做预测 65
第5章 自回归过程建模 67
5.1 预测零售店平均每周客流量 67
5.2 定义自回归过程 69
5.3 求平稳自回归过程的阶数 70
5.4 预测自回归过程 76
5.5 下一步 82
5.6 练习 82
5.6.1 模拟AR(2)过程并做预测 82
5.6.2 模拟AR(p)过程并做预测 83
第6章 复杂时间序列建模 84
6.1 预测数据中心带宽使用量 85
6.2 研究自回归移动平均过程 86
6.3 确定一个平稳的ARMA过程 88
6.4 设计一个通用的建模过程 91
6.4.1 了解AIC 92
6.4.2 使用AIC选择模型 93
6.4.3 了解残差分析 95
6.4.4 进行残差分析 99
6.5 应用通用建模过程 102
6.6 预测带宽使用情况 108
6.7 下一步 112
6.8 练习 113
6.8.1 对模拟的ARMA(1,1)过程
进行预测 113
6.8.2 模拟ARMA(2,2)过程并
进行预测 113
第7章 非平稳时间序列预测 115
7.1 定义差分自回归移动平均模型 116
7.2 修改通用建模过程以考虑
非平稳序列 117
7.3 预测一个非平稳时间序列 119
7.4 下一步 125
7.5 练习 126
第8章 考虑季节性 127
8.1 研究SARIMA(p,d,q)(P,D,Q)m
模型 128
8.2 识别时间序列的季节性模式 129
8.3 预测航空公司每月乘客数量 133
8.3.1 使用ARIMA(p,d,q)模型进行
预测 135
8.3.2 使用SARIMA(p,d,q)(P,D,Q)m
模型进行预测 139
8.3.3 比较每种预测方法的性能 142
8.4 下一步 144
8.5 练习 145
第9章 向模型添加外生变量 146
9.1 研究SARIMAX模型 147
9.1.1 探讨美国宏观经济数据集的
外生变量 148
9.1.2 使用SARIMAX的注意
事项 150
9.2 使用SARIMAX模型预测实际
GDP 151
9.3 下一步 158
9.4 练习 159
第10章 预测多变量时间序列 160
10.1 研究VAR模型 161
10.2 设计VAR(p)建模过程 163
10.3 预测实际可支配收入和实际
消费 164
10.4 下一步 174
10.5 练习 174
10.5.1 使用VARMA模型预测realdpi和realcons 174
10.5.2 使用VARMAX模型预测realdpi和realcons 175
第11章 顶点项目:预测澳大利亚
抗糖尿病药物处方的数量 176
11.1 导入所需的库并加载数据 177
11.2 可视化序列及其分量 178
11.3 对数据进行建模 180
11.3.1 进行模型选择 181
11.3.2 进行残差分析 183
11.4 预测和评估模型的性能 184
11.5 下一步 187
第三部分 使用深度学习进行大规模预测
第12章 将深度学习引入时间序列
预测 191
12.1 何时使用深度学习进行时间
序列预测 191
12.2 探索不同类型的深度学习
模型 192
12.3 准备应用深度学习进行预测 194
12.3.1 进行数据探
译者序
前 言
致 谢
第一部分 时间不等人
第1章 了解时间序列预测 3
1.1 时间序列简介 4
1.2 时间序列预测概览 7
1.2.1 设定目标 8
1.2.2 确定预测对象 8
1.2.3 设置预测范围 8
1.2.4 收集数据 8
1.2.5 开发预测模型 8
1.2.6 部署到生产中 9
1.2.7 监控 9
1.2.8 收集新的数据 9
1.3 时间序列预测与其他回归任务的
差异 10
1.3.1 时间序列有顺序 10
1.3.2 时间序列有时没有特征 10
1.4 下一步 11
第2章 对未来的简单预测 12
2.1 定义基线模型 13
2.2 预测历史均值 14
2.2.1 基线实现准备 15
2.2.2 实现历史均值基线 16
2.3 预测最后一年的均值 19
2.4 使用最后已知数值进行预测 21
2.5 实现简单的季节性预测 22
2.6 下一步 23
第3章 来一次随机游走 25
3.1 随机游走过程 26
3.2 识别随机游走 29
3.2.1 平稳性 29
3.2.2 平稳性检验 31
3.2.3 自相关函数 34
3.2.4 把它们组合在一起 34
3.2.5 GOOGL是随机游走吗 37
3.3 预测随机游走 39
3.3.1 长期预测 39
3.3.2 预测下一个时间步长 44
3.4 下一步 46
3.5 练习 46
3.5.1 模拟和预测随机游走 46
3.5.2 预测GOOGL的每日收盘价 47
3.5.3 预测你选择的股票的每日
收盘价 47
第二部分 使用统计模型进行预测
第4章 移动平均过程建模 51
4.1 定义移动平均过程 52
4.2 预测移动平均过程 57
4.3 下一步 64
4.4 练习 65
4.4.1 模拟MA(2)过程并做预测 65
4.4.2 模拟MA(q)过程并做预测 65
第5章 自回归过程建模 67
5.1 预测零售店平均每周客流量 67
5.2 定义自回归过程 69
5.3 求平稳自回归过程的阶数 70
5.4 预测自回归过程 76
5.5 下一步 82
5.6 练习 82
5.6.1 模拟AR(2)过程并做预测 82
5.6.2 模拟AR(p)过程并做预测 83
第6章 复杂时间序列建模 84
6.1 预测数据中心带宽使用量 85
6.2 研究自回归移动平均过程 86
6.3 确定一个平稳的ARMA过程 88
6.4 设计一个通用的建模过程 91
6.4.1 了解AIC 92
6.4.2 使用AIC选择模型 93
6.4.3 了解残差分析 95
6.4.4 进行残差分析 99
6.5 应用通用建模过程 102
6.6 预测带宽使用情况 108
6.7 下一步 112
6.8 练习 113
6.8.1 对模拟的ARMA(1,1)过程
进行预测 113
6.8.2 模拟ARMA(2,2)过程并
进行预测 113
第7章 非平稳时间序列预测 115
7.1 定义差分自回归移动平均模型 116
7.2 修改通用建模过程以考虑
非平稳序列 117
7.3 预测一个非平稳时间序列 119
7.4 下一步 125
7.5 练习 126
第8章 考虑季节性 127
8.1 研究SARIMA(p,d,q)(P,D,Q)m
模型 128
8.2 识别时间序列的季节性模式 129
8.3 预测航空公司每月乘客数量 133
8.3.1 使用ARIMA(p,d,q)模型进行
预测 135
8.3.2 使用SARIMA(p,d,q)(P,D,Q)m
模型进行预测 139
8.3.3 比较每种预测方法的性能 142
8.4 下一步 144
8.5 练习 145
第9章 向模型添加外生变量 146
9.1 研究SARIMAX模型 147
9.1.1 探讨美国宏观经济数据集的
外生变量 148
9.1.2 使用SARIMAX的注意
事项 150
9.2 使用SARIMAX模型预测实际
GDP 151
9.3 下一步 158
9.4 练习 159
第10章 预测多变量时间序列 160
10.1 研究VAR模型 161
10.2 设计VAR(p)建模过程 163
10.3 预测实际可支配收入和实际
消费 164
10.4 下一步 174
10.5 练习 174
10.5.1 使用VARMA模型预测realdpi和realcons 174
10.5.2 使用VARMAX模型预测realdpi和realcons 175
第11章 顶点项目:预测澳大利亚
抗糖尿病药物处方的数量 176
11.1 导入所需的库并加载数据 177
11.2 可视化序列及其分量 178
11.3 对数据进行建模 180
11.3.1 进行模型选择 181
11.3.2 进行残差分析 183
11.4 预测和评估模型的性能 184
11.5 下一步 187
第三部分 使用深度学习进行大规模预测
第12章 将深度学习引入时间序列
预测 191
12.1 何时使用深度学习进行时间
序列预测 191
12.2 探索不同类型的深度学习
模型 192
12.3 准备应用深度学习进行预测 194
12.3.1 进行数据探
前 言
前 言
我在一家银行工作,很快就意识到时间是一个多么重要的因素。利率随着时间的推移而变化,人们的支出随着时间的推移而变化,资产价格也随时间变化。然而我发现大多数人,包括我在内,都不太擅长进行时间序列分析,所以我决定学习时间序列预测。
事实证明这比预期的要难,因为我找到的每个资源都用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,但任何后续发布的版本应该都可以运行。
我在一家银行工作,很快就意识到时间是一个多么重要的因素。利率随着时间的推移而变化,人们的支出随着时间的推移而变化,资产价格也随时间变化。然而我发现大多数人,包括我在内,都不太擅长进行时间序列分析,所以我决定学习时间序列预测。
事实证明这比预期的要难,因为我找到的每个资源都用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,但任何后续发布的版本应该都可以运行。
评论
还没有评论。