本书基于Python这一处理数据功能强大的高级编程语言,在实践中展示了如何将这些模型应用于真实世界的数据科学场景。Python提供了一系列用于时间序列数据分析的库,可以针对不同的预测解决方案进行通用化的代码部署。
时间序列数据是用于不同行业(从营销和金融到教育、医疗和机器人)未来决策和战略规划的重要信息来源。在过去的几十年里,基于机器学习模型的预测已经成为私营和公共部门常用的工具。
目前,基于机器学习模型的时间序列预测的资源和教程一般分为两类:针对特定预测场景的代码演示,没有概念上的细节;对预测背后的理论和数学公式的学术性解释。这两种方法都非常有助于学习,如果对理解理论假设背后的数学知识有兴趣,强烈推荐使用这些资源。
为了解决实际的业务问题,有一个系统的、结构良好的预测框架是必不可少的,数据科学家可以使用它作为参考,并应用到现实世界的数据科学场景。这本实践性的书就是这样做的,它旨在通过一个实用的模型开发框架的核心步骤来引导读者构建、训练、评估和部署时间序列预测模型。
本书的部分(第1章和第2章)专门介绍时间序列的概念,包括时间序列的表示、建模和预测的基本方面。
第二部分(第3章到第6章)深入研究预测时间序列数据的自回归和自动方法,如移动平均、差分自回归移动平均和时间序列数据的自动化机器学习。然后介绍基于神经网络的时间序列预测,重点介绍循环神经网络(RNN)等概念以及不同RNN单元的比较。后,将指导读者完成在Azure上进行模型部署和操作的重要的步骤。
使用各种开源Python包和Azure,书中通过示例展示了如何将时间序列预测模型应用于真实世界的数据科学场景。有了这些指导方针,读者应该可以在日常工作中处理时间序列数据,并选择正确的工具来分析时间序列数据。
本书主要内容
本书对基于机器学习和深度学习的时间序列预测的核心概念、术语、方法和应用进行了全面的介绍,了解这些基础知识可以设计更灵活、更成功的时间序列应用。
本书包括下列各章:
第1章:时间序列预测概述 本章专门介绍时间序列的概念,包括时间序列的表示、建模和预测的基本方面,例如时间序列分析和时间序列预测的监督学习。
我们还将了解用于时间序列数据的不同Python库,以及pandas、statsmodels和scikit-learn之类的库是如何进行数据处理、时间序列建模和机器学习的。
后,给出有关设置用于时间序列预测的Python环境的一般建议。
第2章:如何在云上设计一个端到端的时间序列预测解决方案 本章旨在通过介绍时间序列预测模板和现实世界的数据科学场景,从实践和业务角度为时间序列预测提供端到端的系统指南,本书中将使用它们来展示时间序列的一些概念、步骤和技术。
第3章:时间序列数据准备 在本章中,将引导读者完成为预测模型准备时间序列数据的重要步骤。良好的时间序列数据准备可以产生干净且经过精心整理的数据,有助于进行更实用、更准确的预测。
Python是一种在处理数据方面功能非常强大的编程语言,它提供了一系列用于处理时间序列数据的库,并且对时间序列分析提供了出色的支持,这些库包括SciPy、NumPy、Matplotlib、pandas、statsmodels和scikit-learn等。
本章还将介绍如何对时间序列数据执行特征工程,要牢记两个目标:准备与机器学习算法要求相符的正确输入数据集,并改善机器学习模型的性能。
第4章:时间序列预测的自回归和自动方法 在本章中,将探索一些用于时间序列预测的自回归方法,它们可以用来测试预测问题。每节提供一个方法,从一个有效的代码示例入手,并展示了在哪里可以找到有关该方法的更多信息。
本章还将介绍用于时间序列预测的自动化机器学习,以及如何用这种方法完成模型选择和超参数调整任务。
第5章:基于神经网络的时间序列预测 在本章中,将讨论数据科学家在构建时间序列预测解决方案时想要考虑深度学习的一些实际原因。然后介绍循环神经网络,并展示如何将几种类型的循环神经网络用于时间序列预测。
第6章:时间序列预测的模型部署 在后一章中,介绍适用于Python的Azure机器学习SDK,以构建和运行机器学习工作流。本章将概述SDK中的一些重要的类,以及如何使用它们在Azure上构建、训练和部署机器学习模型。
通过部署机器学习模型,企业可以充分利用所构建的预测和智能模型,转变为实际的人工智能驱动型企业。
后,展示了如何在Azure上构建端到端的数据管道体系结构,并提供不同时间序列预测解决方案的通用化部署代码。
配套下载文件
本书提供了使用Python及其技术库的大量示例代码和教程,读者可以利用它们学习如何解决现实中的时间序列问题。
当学习本书中的示例时,需要用到的项目文件可以从aka.ms/ML4TSFwithPython下载。
每个文件都包含示例Notebooks和数据,可以使用它们来验证知识、实践技术以及构建自己的时间序列预测解决方案。
译者序
前言
致谢
关于作者
关于技术审阅人
第1章 时间序列预测概述1
1.1 时间序列预测的机器学习方法2
1.2 时间序列预测的监督学习12
1.3 基于Python的时间序列预测19
1.4 时间序列预测的实验设置22
1.5 总结24
第2章 如何在云上设计一个端到端的时间序列预测解决方案25
2.1 时间序列预测模板25
2.1.1 业务理解和性能度量27
2.1.2 数据摄取30
2.1.3 数据探索与理解33
2.1.4 数据预处理和特征工程34
2.1.5 模型构建和选择36
2.2 需求预测建模技术概述37
2.2.1 模型评估40
2.2.2 模型部署41
2.2.3 预测解决方案的接受程度47
2.3 用例:需求预测47
2.4 总结51
第3章 时间序列数据准备53
3.1 用于时间序列数据的Python库53
3.1.1 时间序列的通用数据准备工作56
3.1.2 时间戳与周期58
3.1.3 转换为时间戳61
3.1.4 提供格式参数62
3.1.5 索引63
3.1.6 时间/日期组件69
3.1.7 频率转换70
3.2 探索与理解时间序列72
3.2.1 如何开始时间序列数据分析72
3.2.2 时间序列中缺失值的数据清理77
3.2.3 归一化和标准化时间序列数据80
3.3 时间序列特征工程83
3.3.1 日期时间特征84
3.3.2 滞后特征和窗口特征85
3.3.3 滚动窗口统计信息90
3.3.4 扩展窗口统计信息92
3.4 总结93
第4章 时间序列预测的自回归和自动方法94
4.1 自回归95
4.2 移动平均112
4.3 自回归移动平均113
4.4 差分自回归移动平均114
4.5 自动化机器学习121
4.6 总结128
第5章 基于神经网络的时间序列预测130
5.1 将深度学习用于时间序列预测的原因130
5.1.1 深度学习神经网络能够自动从原始数据中学习和提取特征132
5.1.2 深度学习支持多个输入和输出133
5.1.3 循环神经网络擅长从输入数据中提取模式135
5.2 基于循环神经网络的时间序列预测136
5.2.1 循环神经网络137
5.2.2 长短期记忆139
5.2.3 门控循环单元140
5.2.4 如何为LSTM和GRU准备时间序列数据141
5.3 如何开发用于时间序列预测的GRU和LSTM146
5.3.1 Keras147
5.3.2 TensorFlow148
5.3.3 单变量模型149
5.3.4 多变量模型153
5.4 总结157
第6章 时间序列预测的模型部署159
6.1 实验设置和Python版的Azure机器学习SDK介绍 159
6.1.1 Workspace159
6.1.2 Experiment160
6.1.3 Run160
6.1.4 Model161
6.1.5 ComputeTarget、RunConfiguration和ScriptRunConfig162
6.1.6 Image和Webservice163
6.2 机器学习模型部署 164
6.3 时间序列预测的解决方案体系结构部署示例 168
6.3.1 训练并部署ARIMA模型 170
6.3.2 配置工作空间 173
6.3.3 创建实验 175
6.3.4 创建或连接计算集群 175
6.3.5 上传数据到Azure 176
6.3.6 创建估算器 179
6.3.7 将工作提交到远程集群180
6.3.8 注册模型 180
6.3.9 部署模型180
6.3.10 定义输入脚本和依赖项 182
6.3.11 自动生成模式 182
6.4 总结187
参考文献189