《Python时间序列预测》[40M]百度网盘|pdf下载|亲测有效
《Python时间序列预测》[40M]百度网盘|pdf下载|亲测有效
《Python时间序列预测》[40M]百度网盘|pdf下载|亲测有效

Python时间序列预测 pdf下载

isbn:9787111754466
出版社 机械工业出版社
出版年 2024-07-01
页数 350页
ISBN 9787111754466
装帧 精装
评分 8.8(豆瓣)
限时特惠 00:00:00
活动结束后恢复原价
纸质书参考价 ¥23
电子版限时价 ¥5.99 省 18 元

选择版本

不满意全额退款
发货失败双倍赔偿
邮箱即时发送

内容简介

本篇主要提供Python时间序列预测电子书的pdf版本下载,本电子书下载方式为百度网盘方式,点击以上按钮下单完成后即会通过邮件和网页的方式发货,有问题请联系邮箱ebook666@outlook.com

编辑推荐

适读人群 :数据科学家,以及任何对时间序列预测感兴趣的读者。
借助Python、深度学习和时间序列数据,你可以预测未来!时间序列预测是一种以时间为中心的数据建模技术,用于识别即将发生的事件。新的Python库和强大的深度学习工具使准确预测时间序列比以往任何时候都更容易。
本书教你如何从基于时间的数据(例如日志、客户分析和其他事件流)获得即时、有意义的预测。作者通过带注释的Python代码全面演示用于时间序列预测的统计和深度学习方法,并通过一些项目(比如预测未来的药物处方数量)来帮助你巩固和拓展所学知识,提升预测技能,有效解决实际问题。
本书涵盖:
·为季节性效应和外部变量创建模型。
·用多元预测模型来预测多元时间序列。
·用于大规模数据集的深度学习。
·自动化预测过程。
本书适合熟悉Python和TensorFlow的数据分析师和数据科学家阅读。

内容简介

本书教你如何从基于时间的数据(如日志、客户分析和其他事件流)中获得即时、有意义的预测。在这本通俗易懂的书中,作者通过带有注释的Python代码进行全面演示,你将学习用于时间序列预测的统计和深度学习方法。通过跟随书中的实例锻炼你的技能,你很快就会准备好建立自己的准确、有洞察力的预测。

作者简介

Marco Peixeiro是加拿大一家大银行的高级数据科学家,自学成才,他特别清楚要想在这个行业发展需要掌握什么职业技能。Marco倡导实践学习方法,他在Medium博客、free Code Camp数据科学速成课程和Udemy课程都采用了这种方法。

目录

目  录
译者序
前 言
致 谢
第一部分 时间不等人
第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 进行数据探索 195

12.3.2 特征工程和数据拆分 198

12.4 下一步 202

12.5 练习 202

第13章 数据窗口和创建深度学习基线 204

13.1 创建数据窗口 204

13.1.1 探索如何训练深度学习模型用于时间序列预测 205

13.1.2 实现数据窗口类 208

13.2 应用基线模型 215

13.2.1 单步基线模型 215

13.2.2 多步基线模型 217

13.2.3 多输出基线模型 220

13.3 下一步 223

13.4 练习 223

第14章 初步研究深度学习 225

14.1 实现线性模型 225

14.1.1 实现单步线性模型 226

14.1.2 实现多步线性模型 228

14.1.3 实现多输出线性模型 229

14.2 实现深度神经网络 230

14.2.1 实现单步深度神经网络模型 232

14.2.2 实现多步深度神经网络模型 234

14.2.3 实现多输出深度神经网络模型 236

14.3 下一步 237

14.4 练习 237

第15章 使用LSTM记住过去 239

15.1 探索递归神经网络 239

15.2 研究LSTM架构 241

15.2.1 遗忘门 242

15.2.2 输入门 243

15.2.3 输出门 244

15.3 实现LSTM架构 245

15.3.1 实现单步LSTM模型 245

15.3.2 实现多步LSTM模型 247

15.3.3 实现多输出LSTM模型 249

15.4 下一步 252

15.5 练习 252

第16章 使用CNN过滤时间序列 254

16.1 研究卷积神经网络 254

16.2 实现CNN 257

16.2.1 实现单步CNN模型 258

16.2.2 实现多步CNN模型 261

16.2.3 实现多输出CNN模型 263

16.3 下一步 264

16.4 练习 265

第17章 使用预测做出更多预测 267

17.1 研究ARLSTM架构 267

17.2 构建自回归LSTM模型 269

17.3 下一步 273

17.4 练习 273

第18章 顶点项目:预测一个家庭的用电量 274

18.1 了解顶点项目 275

18.2 数据整理和预处理 277

18.2.1 处理缺失数据 278

18.2.2 数据转换 279

18.2.3 数据重采样 279

18.3 特征工程 281

18.3.1 删除无用的列 282

18.3.2 确定季节性周期 282

18.3.3 拆分和缩放数据 285

18.4 使用深度学习进行建模的准备工作 285

18.4.1 初始配置 285

18.4.2 定义DataWindow类 286

18.4.3 训练模型的效用函数 289

18.5 使用深度学习进行建模 289

18.5.1 基线模型 290

18.5.2 线性模型 292

18.5.3 深度神经网络 293

18.5.4 LSTM模型 294

18.5.5 卷积神经网络 295

18.5.6 组合CNN与LSTM 296

18.5.7 自回归LSTM模型 297

18.5.8 选择最佳模型 299

18.6 下一步 300

第四部分 大规模自动化预测

第19章 使用Prophet自动化时间序列预测 303

19.1 自动化预测库概述 303

19.2 探索Prophet 305

19.3 使用Prophet进行基本预测 306

19.4 探索Prophet的高级功能 310

19.4.1 可视化能力 311

19.4.2 交叉验证和性能指标 314

19.4.3 超参数调优 317

19.5 使用Prophet实现鲁棒的预测过程 319

19.5.1 预测项目:预测“chocolate”在Google上的受欢迎程度 320

19.5.2 实验:SARIMA能做得更好吗 326

19.6 下一步 329

19.7 练习 329

19.7.1 预测航空乘客人数 329

19.7.2 预测抗糖尿病药物处方数量 330

19.7.3 预测某个关键字在Google Trends上的受欢迎程度 330

第20章 顶点项目:预测加拿大牛排的月平均零售价格 331

20.1 了解顶点项目 331

20.2 数据预处理与可视化 332

20.3 使用Prophet进行建模 334

20.4 可选:开发一个SARIMA模型 338

20.5 下一步 342

第21章 超越自我 343

21.1 总结所学 343

21.1.1 统计学预测方法 344

21.1.2 深度学习预测方法 344

21.1.3 自动化预测过程 345

21.2 如果预测不起作用怎么办 345

21.3 时间序列数据的其他应用 346

21.4 保持练习 347

附录 安装说明 349

前言/序言

前  言
我在一家银行工作,很快就意识到时间是一个多么重要的因素。利率随着时间的推移而变化,人们的支出随着时间的推移而变化,资产价格也随时间变化。然而我发现大多数人,包括我在内,都不太擅长进行时间序列分析,所以我决定学习时间序列预测。
事实证明这比预期的要难,因为我找到的每个资源都用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章将对本书进行总结,旨在激励你超越自我,并探索利用时间序列数据还可以做些什么。
关于代码
本书包含了许多示例代码,在大多数情况下,原始源代码已被重新格式化。我们添加了换行并重做了缩进,以适应书中可用的页面空间。在某些情况下即使这样还不够,因此清单包括了行连续标记()。此外,当在正文中描述代码时,源代码中的注释通常会从清单中删除。许多清单中都有代码注释,以突出重要的概念。
本书的全部源代码可以在GitHub上找到。在那里你也可以找到所有练习的解决方案,以及代码运行的图片。创建可视化有时是一项被忽视的技能,但我相信这是一项重要的技能。
所有的代码都是在Windows上使用Anaconda中的Jupyter Notebook运行的。我使用Python 3.7,但任何后续发布的版本应该都可以运行。


编辑推荐

适读人群 :数据科学家,以及任何对时间序列预测感兴趣的读者。
借助Python、深度学习和时间序列数据,你可以预测未来!时间序列预测是一种以时间为中心的数据建模技术,用于识别即将发生的事件。新的Python库和强大的深度学习工具使准确预测时间序列比以往任何时候都更容易。
本书教你如何从基于时间的数据(例如日志、客户分析和其他事件流)获得即时、有意义的预测。作者通过带注释的Python代码全面演示用于时间序列预测的统计和深度学习方法,并通过一些项目(比如预测未来的药物处方数量)来帮助你巩固和拓展所学知识,提升预测技能,有效解决实际问题。
本书涵盖:
·为季节性效应和外部变量创建模型。
·用多元预测模型来预测多元时间序列。
·用于大规模数据集的深度学习。
·自动化预测过程。
本书适合熟悉Python和TensorFlow的数据分析师和数据科学家阅读。

内容简介

本书教你如何从基于时间的数据(如日志、客户分析和其他事件流)中获得即时、有意义的预测。在这本通俗易懂的书中,作者通过带有注释的Python代码进行全面演示,你将学习用于时间序列预测的统计和深度学习方法。通过跟随书中的实例锻炼你的技能,你很快就会准备好建立自己的准确、有洞察力的预测。

作者简介

Marco Peixeiro是加拿大一家大银行的高级数据科学家,自学成才,他特别清楚要想在这个行业发展需要掌握什么职业技能。Marco倡导实践学习方法,他在Medium博客、free Code Camp数据科学速成课程和Udemy课程都采用了这种方法。

目录

目  录
译者序
前 言
致 谢
第一部分 时间不等人
第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 进行数据探索 195

12.3.2 特征工程和数据拆分 198

12.4 下一步 202

12.5 练习 202

第13章 数据窗口和创建深度学习基线 204

13.1 创建数据窗口 204

13.1.1 探索如何训练深度学习模型用于时间序列预测 205

13.1.2 实现数据窗口类 208

13.2 应用基线模型 215

13.2.1 单步基线模型 215

13.2.2 多步基线模型 217

13.2.3 多输出基线模型 220

13.3 下一步 223

13.4 练习 223

第14章 初步研究深度学习 225

14.1 实现线性模型 225

14.1.1 实现单步线性模型 226

14.1.2 实现多步线性模型 228

14.1.3 实现多输出线性模型 229

14.2 实现深度神经网络 230

14.2.1 实现单步深度神经网络模型 232

14.2.2 实现多步深度神经网络模型 234

14.2.3 实现多输出深度神经网络模型 236

14.3 下一步 237

14.4 练习 237

第15章 使用LSTM记住过去 239

15.1 探索递归神经网络 239

15.2 研究LSTM架构 241

15.2.1 遗忘门 242

15.2.2 输入门 243

15.2.3 输出门 244

15.3 实现LSTM架构 245

15.3.1 实现单步LSTM模型 245

15.3.2 实现多步LSTM模型 247

15.3.3 实现多输出LSTM模型 249

15.4 下一步 252

15.5 练习 252

第16章 使用CNN过滤时间序列 254

16.1 研究卷积神经网络 254

16.2 实现CNN 257

16.2.1 实现单步CNN模型 258

16.2.2 实现多步CNN模型 261

16.2.3 实现多输出CNN模型 263

16.3 下一步 264

16.4 练习 265

第17章 使用预测做出更多预测 267

17.1 研究ARLSTM架构 267

17.2 构建自回归LSTM模型 269

17.3 下一步 273

17.4 练习 273

第18章 顶点项目:预测一个家庭的用电量 274

18.1 了解顶点项目 275

18.2 数据整理和预处理 277

18.2.1 处理缺失数据 278

18.2.2 数据转换 279

18.2.3 数据重采样 279

18.3 特征工程 281

18.3.1 删除无用的列 282

18.3.2 确定季节性周期 282

18.3.3 拆分和缩放数据 285

18.4 使用深度学习进行建模的准备工作 285

18.4.1 初始配置 285

18.4.2 定义DataWindow类 286

18.4.3 训练模型的效用函数 289

18.5 使用深度学习进行建模 289

18.5.1 基线模型 290

18.5.2 线性模型 292

18.5.3 深度神经网络 293

18.5.4 LSTM模型 294

18.5.5 卷积神经网络 295

18.5.6 组合CNN与LSTM 296

18.5.7 自回归LSTM模型 297

18.5.8 选择最佳模型 299

18.6 下一步 300

第四部分 大规模自动化预测

第19章 使用Prophet自动化时间序列预测 303

19.1 自动化预测库概述 303

19.2 探索Prophet 305

19.3 使用Prophet进行基本预测 306

19.4 探索Prophet的高级功能 310

19.4.1 可视化能力 311

19.4.2 交叉验证和性能指标 314

19.4.3 超参数调优 317

19.5 使用Prophet实现鲁棒的预测过程 319

19.5.1 预测项目:预测“chocolate”在Google上的受欢迎程度 320

19.5.2 实验:SARIMA能做得更好吗 326

19.6 下一步 329

19.7 练习 329

19.7.1 预测航空乘客人数 329

19.7.2 预测抗糖尿病药物处方数量 330

19.7.3 预测某个关键字在Google Trends上的受欢迎程度 330

第20章 顶点项目:预测加拿大牛排的月平均零售价格 331

20.1 了解顶点项目 331

20.2 数据预处理与可视化 332

20.3 使用Prophet进行建模 334

20.4 可选:开发一个SARIMA模型 338

20.5 下一步 342

第21章 超越自我 343

21.1 总结所学 343

21.1.1 统计学预测方法 344

21.1.2 深度学习预测方法 344

21.1.3 自动化预测过程 345

21.2 如果预测不起作用怎么办 345

21.3 时间序列数据的其他应用 346

21.4 保持练习 347

附录 安装说明 349

前言/序言

前  言
我在一家银行工作,很快就意识到时间是一个多么重要的因素。利率随着时间的推移而变化,人们的支出随着时间的推移而变化,资产价格也随时间变化。然而我发现大多数人,包括我在内,都不太擅长进行时间序列分析,所以我决定学习时间序列预测。
事实证明这比预期的要难,因为我找到的每个资源都用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章将对本书进行总结,旨在激励你超越自我,并探索利用时间序列数据还可以做些什么。
关于代码
本书包含了许多示例代码,在大多数情况下,原始源代码已被重新格式化。我们添加了换行并重做了缩进,以适应书中可用的页面空间。在某些情况下即使这样还不够,因此清单包括了行连续标记()。此外,当在正文中描述代码时,源代码中的注释通常会从清单中删除。许多清单中都有代码注释,以突出重要的概念。
本书的全部源代码可以在GitHub上找到。在那里你也可以找到所有练习的解决方案,以及代码运行的图片。创建可视化有时是一项被忽视的技能,但我相信这是一项重要的技能。
所有的代码都是在Windows上使用Anaconda中的Jupyter Notebook运行的。我使用Python 3.7,但任何后续发布的版本应该都可以运行。