时间序列预测简介 时间序列的速写摘要 速写由 Tomomi Imura 绘制 在这节课和接下来的一课中,你将学习一些关于时间序列预测的知识,这是机器学习科学家工具箱中一个有趣且有价值的但不太为人所知的部分。时间序列预测是一种“水晶球”:基于变量(如价格)过去的性能,你可以预测其未来潜在的价值。 时间序列预测简介 点击上面的图片观看关于时间序列预测的视频 课前小测验 这是一个非常有用且有趣的领域,在定价、库存和供应链问题等实际业务问题中有直接的应用价值。虽然深度学习技术已经开始被用来获取更多洞察以更好地预测未来的绩效,但时间序列预测仍然是一个很大程度上受到经典机器学习技术影响的领域。

速写由 Tomomi Imura 绘制
在这节课和接下来的一课中,你将学习一些关于时间序列预测的知识,这是机器学习科学家工具箱中一个有趣且有价值的但不太为人所知的部分。时间序列预测是一种“水晶球”:基于变量(如价格)过去的性能,你可以预测其未来潜在的价值。
点击上面的图片观看关于时间序列预测的视频
这是一个非常有用且有趣的领域,在定价、库存和供应链问题等实际业务问题中有直接的应用价值。虽然深度学习技术已经开始被用来获取更多洞察以更好地预测未来的绩效,但时间序列预测仍然是一个很大程度上受到经典机器学习技术影响的领域。
宾夕法尼亚州立大学关于时间序列的有用课程可以在这里找到:宾夕法尼亚州立大学课程
假设你维护着一个智能停车计费系统,该系统提供有关停车频率和持续时间的数据。
如果你能根据计费系统的过去表现来预测其未来的价值,遵循供需法则,会怎么样?
准确地预测何时采取行动以实现目标是一项挑战,可以通过时间序列预测来解决。在繁忙时段对寻找停车位的人收取更多的费用可能不会让人高兴,但这确实是一个确保收入以清洁街道的有效方式!
让我们探索一些时间序列算法类型,并开始一个笔记本来清理和准备一些数据。你将要分析的数据来自GEFCom2014预测竞赛。它包括2012年至2014年间三年的每小时电力负载和温度值。给定历史上的电力负载和温度模式,你可以预测未来的电力负载值。
在这个例子中,你将学习如何仅使用历史负载数据来预测一步。但在开始之前,了解幕后发生的事情是有用的。
当你遇到“时间序列”这个术语时,需要理解它在几个不同上下文中的使用。
时间序列
在数学中,“时间序列是一系列按时间顺序排列的数据点。”最常见的形式是在时间间隔内连续取样的一系列数据。例如,道琼斯工业平均指数每日收盘价就是一个时间序列的例子。时间序列图和统计建模在信号处理、天气预报、地震预测等领域经常被使用。
时间序列分析
时间序列分析是对上述提到的时间序列数据的分析。时间序列数据可以有不同的形式,包括“中断时间序列”,它检测时间序列在中断事件前后的发展模式。时间序列分析所需的类型取决于数据的本质。时间序列数据本身可以是数字序列或字符序列。
进行分析的方法多种多样,包括频域和时域方法、线性和非线性方法等。了解更多关于分析这种数据的不同方式。
时间序列预测
时间序列预测是利用模型根据过去收集的数据中显示的模式来预测未来值。虽然可以使用回归模型来探索时间序列数据,但在图表中使用时间作为x变量,这类数据最好使用特殊类型的模型来分析。
时间序列数据是一个有序的观测列表,不同于可以用线性回归分析的数据。最常见的是ARIMA,即“自回归积分滑动平均模型”。
ARIMA模型“将当前值与过去值和过去的预测误差相关联。”它们最适合用于时间域数据的分析,其中数据是按时间顺序排列的。
有几种类型的ARIMA模型,你可以在这里学习更多:ARIMA模型,你将在下一课中涉及这些内容。
在下一课中,你将使用单变量时间序列构建一个ARIMA模型,专注于随着时间变化的一个变量。这种类型的数据的一个例子是记录莫纳罗亚天文台每月二氧化碳浓度的数据集:
| CO2 | 年月 | 年 | 月 |
|---|---|---|---|
| 330.62 | 1975.04 | 1975 | 1 |
| 331.40 | 1975.13 | 1975 | 2 |
| 331.87 | 1975.21 | 1975 | 3 |
| 333.18 | 1975.29 | 1975 | 4 |
| 333.92 | 1975.38 | 1975 | 5 |
| 333.43 | 1975.46 | 1975 | 6 |
| 331.85 | 1975.54 | 1975 | 7 |
| 330.01 | 1975.63 | 1975 | 8 |
| 328.51 | 1975.71 | 1975 | 9 |
| 328.41 | 1975.79 | 1975 | 10 |
| 329.25 | 1975.88 | 1975 | 11 |
| 330.97 | 1975.96 | 1975 | 12 |
✅ 在这个数据集中识别随时间变化的变量
在查看时间序列数据时,你可能会注意到它具有某些特性,这些特性需要考虑并缓解,以便更好地理解其模式。如果你认为时间序列数据可能提供了你想要分析的“信号”,那么这些特性可以被视为“噪声”。通常,你需要通过使用一些统计技术来减少这种“噪声”。
以下是一些概念,你应该了解这些概念才能处理时间序列:
趋势
趋势是指随着时间的增加和减少。了解更多。在时间序列的背景下,它关乎如何使用以及必要时去除趋势。
季节性是指周期性的波动,比如假日销售激增。查看不同类型的图表如何在数据中展示季节性。
异常值
异常值远离标准数据方差。
长期循环
独立于季节性,数据可能显示出长期循环,例如持续超过一年的经济衰退。
恒定方差
有些数据随时间显示恒定波动,比如每天和晚上的能源使用量。
突然变化
数据可能会出现突然的变化,这可能需要进一步分析。例如,由于COVID-19导致企业突然关闭,导致了数据的变化。
✅ 这里有一个时间序列示例图,展示了几年间每日游戏货币的花费。你能在这份数据中识别出上面列出的任何特征吗?

让我们开始创建一个时间序列模型,以预测未来的电力使用情况,基于过去的使用情况。
本例中的数据来自GEFCom2014预测竞赛。它包括2012年至2014年间三年的每小时电力负载和温度值。
Tao Hong, Pierre Pinson, Shu Fan, Hamidreza Zareipour, Alberto Troccoli 和 Rob J. Hyndman, "概率能源预测:全球能源预测竞赛2014及以后",《国际预测杂志》,第32卷,第3期,第896-913页,2016年7月至9月。
在本课的working文件夹中,打开_notebook.ipynb_文件。首先添加帮助加载和可视化数据的库。
import os import matplotlib.pyplot as plt from common.utils import load_data %matplotlib inline
注意,你正在使用包含的common folder which set up your environment and handle downloading the data.
Next, examine the data as a dataframe calling load_data() and head()文件:
data_dir = './data' energy = load_data(data_dir)[['load']] energy.head()
你可以看到有两个列代表日期和负载:
| 负载 | |
|---|---|
| 2012-01-01 00:00:00 | 2698.0 |
| 2012-01-01 01:00:00 | 2558.0 |
| 2012-01-01 02:00:00 | 2444.0 |
| 2012-01-01 03:00:00 | 2402.0 |
| 2012-01-01 04:00:00 | 2403.0 |
然后,通过调用plot()来绘制数据:
energy.plot(y='load', subplots=True, figsize=(15, 8), fontsize=12) plt.xlabel('timestamp', fontsize=12) plt.ylabel('load', fontsize=12) plt.show()

接下来,通过提供输入到energy in [from date]: [to date]模式来绘制2014年7月的第一周:
energy['2014-07-01':'2014-07-07'].plot(y='load', subplots=True, figsize=(15, 8), fontsize=12) plt.xlabel('timestamp', fontsize=12) plt.ylabel('load', fontsize=12) plt.show()

美丽的图表!看看这些图表,看看是否能确定上面列出的任何特征。通过可视化数据,我们可以推断出什么?
在下一课中,你将创建一个ARIMA模型来生成一些预测。
列出所有你认为可以从时间序列预测中受益的行业和研究领域。你能想到在艺术、计量经济学、生态学、零售、工业、金融等领域应用这些技术的地方吗?还有其他哪些地方?
虽然我们不会在这里覆盖,但神经网络有时用于增强经典的时间序列预测方法。阅读更多关于它们的信息:神经网络用于预测金融和经济时间序列
声明:
本文件灏天文库团队进行了翻译。尽管我们力求准确,但请注意,翻译可能包含错误或不准确之处。原文档以其原始语言为准。我们不对因使用此翻译而产生的任何误解或误译负责。