单击以了解有关作者的更多信息 马里特·维德曼。
完整的时间序列分析应用程序涵盖以下步骤 数据科学 从访问到转换、建模、评估和部署时间序列数据的循环。然而,对于时间序列数据,这些步骤中的具体任务与横截面数据不同。例如,横截面数据是作为一个对象在某个时间点的快照来收集的,而时间序列数据是通过在一段时间内观察同一对象来收集的。时间序列数据中的规则模式有其特定的术语,它们确定在对时间序列进行建模之前所需的预处理。时间序列可以使用多种类型的模型进行建模,但特定的时间序列模型(例如 ARIMA 模型)利用观测值之间的时间结构。
在本文中,我们介绍了构建时间序列应用程序过程中最常见的任务。最后,我们通过在分析平台中构建示例应用程序将理论付诸实践。
访问时间序列
时间序列有多种来源和应用:用于需求预测的每日销售数据、用于长期政治规划的年度宏观经济数据、用于分析锻炼课程的智能手表的传感器数据等等。所有这些时间序列在粒度、规律性和清洁度等方面都有所不同:我们可以确定我们国家今年以及未来 10 年的 GDP 值,但我们不能保证我们智能手表的传感器在任何运动和任何温度下都能稳定运行。时间序列数据也可能无法定期获得,而只能从随机事件点收集,例如疾病感染或自发的客户拜访。不过,所有这些类型的时间序列数据的共同点是,它们都是随着时间的推移从同一来源收集的。
正则化和清理时间序列
一旦我们有了时间序列数据,下一步就是使其以合适的粒度等间隔、连续且干净。所需的任务取决于数据的原始形状以及我们的 分析 目的。例如,如果我们计划对一种产品进行为期一周的促销,那么我们可能会对更精细的数据感兴趣,而不是想要获得某些产品的销售概况。
排序
时间序列需要按时间排序。当您将数据划分为训练集和测试集时,请记住通过从顶部/底部获取数据进行测试/训练来保留记录之间的时间结构。如果您的数据每个时间戳包含多个记录,那么您需要按时间戳聚合它们。例如,当您每天有多个订单并且您对每日销售额感兴趣时,您需要对每天的销售额进行求和。此外,如果您对当前数据之外的其他粒度的时间序列感兴趣(例如,每月销售额而不是每日销售额),您可以按首选粒度进一步聚合数据。
缺失值
如果某些时间戳丢失,您需要将它们引入时间序列中,以使其间隔相等。有时,缺失的记录是时间序列动态的一部分(例如,股票市场在周五收盘并在周一开盘)。
当您向数据引入缺失的时间戳时,相应的值当然会丢失。您可以通过线性插值或移动平均值等方法来估算这些缺失值。但请记住,估算缺失值的最佳技术取决于数据的常规动态。例如,如果您检查每日数据中的每周季节性,并且缺少某个周六的值,则上周六的值可能是最佳替代值。如果缺失值不是随机缺失的,例如缺失周末股市收盘价,则可以用固定值替换它们,在本例中为 0。另一方面,如果缺失值是随机的,并且它们发生在过去足够远的时间,则可以使用缺失值之后的数据,并忽略较旧的数据。
不规则图案
处理快速波动和异常值的一种好方法是平滑数据。可以使用多种技术,例如 移动平均线 和 指数平滑。此外,删除箱线图须线之外的值可以平滑数据。请记住,数据中的强烈季节性可能会导致广泛的箱线图,然后最好使用条件箱线图来检测异常值。
然而,有时时间序列只是表现出一种非常不规则的现象!在这种情况下,您可以尝试通过提取时间序列的子集来使时间序列更加规则,例如,仅考虑一种产品的销售额而不是整个超市的销售额,或者通过对数据进行聚类。
探索和转换时间序列
此时,我们的时间序列数据的形状适合以视觉和数字方式进行探索。不同的图表和统计数据揭示了时间序列中的长期和短期模式以及时间关系,我们可以使用它们更好地理解其动态并预测其未来发展。
时间序列的可视化探索
探索时间序列的基本图是折线图(图 3),它显示时间序列中可能的方向、规则和不规则波动、异常值、间隙或转折点。如果您观察时间序列中的规律模式,例如饮料销售的年度季节性,则可以在季节性图中单独检查每个季节周期(年)(图 3)。在季节性图中,您可以轻松看出,例如,今年 XNUMX 月的销售月份是否比去年强劲,或者每月销售额是否逐年增长。
如果您对季节内发生的情况感兴趣,例如夏季月份的销售额中位数是多少以及每月销售额变化的幅度和方向,您可以在条件箱形图中检查这些动态(图3)。探索时间序列的另一个有用的图是滞后图(图 3)。滞后图显示当前值和过去值之间的关系,例如今天的销售额和前一周的销售额。
时间序列的经典分解
经典分解,即将时间序列分解为其趋势、季节性和残差,为预测提供了良好的基准。时间序列的剩余部分,即残差,应该是 静止的,例如可以通过 ARIMA 模型进行预测。但请记住,如果残差序列不是平稳的,则可能需要一些额外的变换,例如一阶差分或原始时间序列的对数变换。
首先,如果时间序列显示出方向、趋势,则可以例如通过数据拟合回归模型或通过计算移动平均值来对时间序列进行去趋势处理。
其次,如果时间序列显示出有规律的波动(季节性),则可以对其进行调整。您可以在时间序列的自相关图中找到主要季节性发生的滞后。例如,如果您在滞后 7 处观察到峰值,并且您有每日数据,则数据将具有每周季节性。可以通过区分主要尖峰发生的滞后处的数据来调整季节性。如果要调整数据中的第二季节性,可以通过对调整(差异)时间序列重复该过程来完成。
最后,当您达到准备通过 ARIMA 模型进行建模的平稳时间序列时,您可以使用以下命令进行最终检查: 荣格盒检验 为了平稳性。
建模和评估时间序列
现在我们继续对包含不规则动态的时间序列的剩余部分进行建模。我们可以使用 ARIMA 模型来做到这一点, 机器学习 模型、神经网络及其许多变体。我们经常用这些模型对时间序列的剩余部分进行建模,因为它是平稳的。然而,分解时间序列并不总是必要的,因为某些模型(例如季节性 ARIMA 模型)也适用于对非平稳时间序列进行建模。
在下文中,我们收集了这些不同建模技术的一些属性、它们的相似点和差异,以便您可以选择最适合您的用例的一种。还要记住,训练多个模型,甚至构建它们的集成是很有用的!
ARIMA 模型
有马 (自回归综合移动平均)模型是当前值与过去值(AR 部分)以及当前预测误差与过去预测误差(MA 部分)之间的线性回归模型。如果模型具有非零 I 部分,则对数据进行差分以使其平稳。基本 ARIMA 模型假设时间序列是平稳的,而平稳时间序列在长期内不具有可预测的模式。长期预测的准确性下降可以从预测置信区间的增加看出。拥有更多数据并不总是更适合训练 ARIMA 模型:大型数据集可能会使估计 ARIMA 模型的模型参数变得耗时,并且夸大真实过程与模型过程之间的差异。
机器学习模型
机器学习模型使用滞后值作为预测列,并且忽略目标列和预测列之间的时间结构。机器学习模型还可以识别数据中的长期模式和转折点,前提是训练数据中提供了足够的数据来建立这些模式。一般来说,数据显示的不规则性越多,训练模型所需的数据就越多。当您应用机器学习模型时,建议对残差进行建模。否则,您可能会构建一个比经典分解模型更复杂的模型,但实际上并没有在此基础上学习任何新东西!
型号选择技巧
首先,有些现象很难预测,在这种情况下,采用更简单的模型通常是有意义的,而不是投入资源来对无法准确预测的事物进行建模。
其次,模型的性能并不是唯一的标准。如果重要的决策基于模型的结果,那么其可解释性可能比稍微好一点的性能更重要。也就是说,神经网络可能会输给简单的经典分解模型,尽管它的预测稍好一些。
第三,向模型添加解释变量可能会提高预测准确性。然而,在这样的模型中,也需要预测解释变量,并且模型复杂性的增加并不总是值得更高的精度。有时粗略的估计足以支持决策:如果运输量以数十和数百计算,那么预测需求也不必具有更大的粒度。
模型评估
训练模型后,下一步是对其进行评估。对于样本内预测,测试集就是训练集本身,因此模型过程适合用于训练模型的数据。对于样本外预测,测试集在时间上位于训练集之后。
用于评估时间序列模型的一种推荐误差指标是平均绝对百分比误差(MAPE),因为它提供了通用比例的误差,以实际值的百分比形式。但是,如果真实值为零,则未定义此度量,然后还有其他误差度量,例如均方根误差(均方根误差), 会做。不过,通常建议不要使用 R-平方。 R 平方指标不适合时间序列分析的背景,因为重点是预测目标列的未来系统变异性,而不是对过去的所有变异性进行建模。
预测和重建时间序列
我们快到了!最后一步是预测未来值并重建信号。
动态预测
如果您的模型无法长期提供准确的预测,动态部署通常会提高样本外预测的准确性。在动态部署中,一次仅预测未来的一个点,并通过该预测值更新过去的数据以生成下一个预测(图5)。
恢复趋势和季节性
最后,如果我们在预测之前分解时间序列,我们需要恢复预测的趋势和/或季节性。如果我们通过差异数据来调整季节性,我们就会通过在季节性发生的滞后处添加值来开始重建信号。例如,如果我们有每日数据 y,其中我们在滞后 7(每周季节性)应用季节性差异,则恢复此季节性将需要对预测值进行以下计算 yt+1, yt+2,... yt+h :
哪里 t是训练数据中的最后一个时间点,并且 h 是预测范围。
为了恢复第二个季节性,我们将对恢复的时间序列重复上述步骤。如果我们想将趋势分量恢复到时间序列中,我们会将代表趋势的回归模型应用到恢复的时间序列中。
分析平台中完整的时间序列应用
最后,让我们看看如何使用我们的分析平台将这些步骤付诸实践。工作流程 访问时间序列转换和建模 (在 Hub 上可用)图 6 显示了从访问到清理、可视化探索、分解和建模时间序列的步骤。对于其中一些任务,我们使用 时间序列成分 将工作流封装为特定于时间序列的功能:以选定的粒度聚合数据、执行经典分解等等。
在此示例中,我们使用 样品 – 超市 数据提供者 画面。在我们的分析中,我们重点关注2014年至2017年所有产品的订单——总共9994条记录。我们通过计算每天的总销售额将数据重塑为时间序列数据来开始预处理。现在,我们每天只有一个值,但有些日子缺失,因为这些日子没有提交订单。因此,我们将这些天引入到时间序列中,并将缺失的销售值替换为固定值0。之后,我们在月级别上汇总数据,并在进一步分析时考虑每个月的平均销售额。
对于视觉探索,我们还按年度汇总数据,我们发现2015年初有一个转折点,如图7右侧的线图所示。左侧的线图显示了数据中的年度季节性:每年年底有两个常规峰值,每年年初有一个较低的峰值。我们还检测数据中的年度季节性,如左侧 ACF 图中滞后 12 处的主要峰值所示。我们将时间序列分解为趋势、季节性和残差,这些成分如图 7 中间的线图所示。右侧的 ACF 图显示残差序列不存在显着的自相关。
接下来,我们使用 ARIMA 模型对月平均销售额的残差序列进行建模。在滞后 12 处进行差分后,时间序列的长度为 36 个观测值。我们寻找具有 Auto ARIMA Learner 组件的最佳模型,其中 AR 和 MA 部分的最大阶数为 4,I 部分的最大阶数为 1。最佳性能模型基于 赤池信息标准 为 ARIMA (0, 1, 4),基于样本内预测得到的 MAPE 为 1.153。
最后,我们评估模型的样本外预测准确性。工作流程 预测和重建时间序列 图 8 中的(可在 Hub 上找到)展示了如何根据 2017 年至 2014 年的月度数据(2016 个观测值)以及使用动态部署的获胜 ARIMA (24) 模型来预测 0,1,4 年的每日销售额方法。之后,我们重建信号,在本例中,将趋势和年度季节性恢复为预测值(12 个月平均销售值)。我们比较实际值和预测值,得到 MAPE 为 0.336。
总结
时间序列,无论是显示一个接一个纳秒的微小物体行为的传感器数据、20 世纪的宏观经济数据,还是介于两者之间的数据,都具有适用于访问、操作和建模步骤的特定分析技术。
在本文中,我们向您介绍了时间序列分析技术的基础知识,可帮助您开始处理时间序列数据。
参考资料
[1] 钱伯斯、约翰·C.、萨丁德·K·穆利克和唐纳德·D·史密斯。 如何选择正确的预测技术。哈佛大学工商管理研究生院,1971 年。
[2] 罗伯·J·海德曼 (Hyndman) 和乔治·阿萨纳索普洛斯 (George Athanasopoulos)。 预测:原理与实践。 OTexts,2018。
资料来源:https://www.dataversity.net/building-a-time-series-analysis-application/
- 绝对
- 额外
- 分析
- 分析
- 应用领域
- 应用领域
- AR
- 刊文
- 汽车
- 基础
- 基准
- 最佳
- 饮料
- 身体
- 盒子
- 建立
- 建筑物
- 商业
- 清洁
- 柱
- 相当常见
- 元件
- 信心
- 国家
- 电流
- data
- 天
- 需求
- 研发支持
- 疾病
- 估计
- 活动
- 锻炼
- 勘探
- 数字
- 终于
- 姓氏:
- 适合
- 专注焦点
- 周五
- 未来
- 国内生产总值
- 其他咨询
- 乔治
- 非常好
- 毕业
- 处理
- 哈佛
- 哈佛大学
- 创新中心
- How To
- HTTPS
- 数百
- 鉴定
- 图片
- 併发感染
- 信息
- IT
- 七月
- 大
- 铅
- 学习用品
- 学习者
- 学习
- Level
- Line
- 长
- 机器学习
- 主要
- 市场
- 指标
- 模型
- 造型
- 周一
- 每月数据
- 个月
- 移动
- 网络
- 网络
- 神经
- 神经网络
- 神经网络
- 打开
- 秩序
- 订单
- 其他名称
- 模式
- 性能
- 规划行程
- 平台
- 预测
- 产品
- 热销产品
- 提升
- 记录
- 回归
- 关系
- 资源
- 成果
- 销售
- 鳞片
- 学校
- 选
- 感
- 系列
- 集
- 配送服务
- 简易
- 小
- 智能
- 快照
- So
- 开始
- 开始
- 统计
- 库存
- 股市
- 提交
- 夏季
- SUPPORT
- 画面
- 目标
- test
- 基础知识
- 未来
- 次
- 最佳
- 产品培训
- 转型
- 普遍
- 大学
- 折扣值
- 了解
- 周
- 每周
- 什么是
- 维基百科上的数据
- 中
- 工作
- 工作流程
- 锻炼
- 价值
- 年
- 年
- 零