时间序列数据广泛存在于我们的生活中。 随着时间的推移捕获的股票价格、房价、天气信息和销售数据只是其中的几个例子。 随着企业越来越多地寻找从时间序列数据中获得有意义洞察的新方法,可视化数据和应用所需转换的能力是基本步骤。 但是,与其他类型的表格数据相比,时间序列数据具有独特的特征和细微差别,需要特殊考虑。 例如,标准表格或横截面数据是在特定时间点收集的。 相比之下,时间序列数据会随着时间的推移重复捕获,每个连续的数据点都取决于其过去的值。
由于大多数时间序列分析依赖于通过一组连续的观察收集的信息,因此缺失数据和固有的稀疏性会降低预测的准确性并引入偏差。 此外,大多数时间序列分析方法依赖于数据点之间的相等间距,即周期性。 因此,修复数据间距不规则的能力是一个关键的先决条件。 最后,时间序列分析通常需要创建额外的特征来帮助解释输入数据和未来预测之间的内在关系。 所有这些因素都将时间序列项目与传统的机器学习 (ML) 场景区分开来,并需要一种独特的分析方法。
这篇文章介绍了如何使用 亚马逊SageMaker数据牧马人 应用时间序列转换并为时间序列用例准备数据集。
数据管理员的用例
Data Wrangler 为时间序列分析提供了一种无代码/低代码解决方案,具有更快地清理、转换和准备数据的功能。 它还使数据科学家能够根据其预测模型的输入格式要求准备时间序列数据。 以下是您可以使用这些功能的几种方法:
- 描述性分析– 通常,任何数据科学项目的第一步都是理解数据。 当我们绘制时间序列数据时,我们会对其模式进行高级概述,例如趋势、季节性、周期和随机变化。 它帮助我们决定正确的预测方法来准确地表示这些模式。 绘图还可以帮助识别异常值,防止不切实际和不准确的预测。 Data Wrangler 带有一个 季节性趋势分解可视化 用于表示时间序列的组成部分,以及 异常值检测可视化 来识别异常值。
- 解释性分析– 对于多变量时间序列,探索、识别和建模两个或多个时间序列之间关系的能力对于获得有意义的预测至关重要。 这 通过...分组 Data Wrangler 中的转换通过对指定单元格的数据进行分组来创建多个时间序列。 此外,Data Wrangler 时间序列转换(如果适用)允许指定其他 ID 列进行分组,从而实现复杂的时间序列分析。
- 数据准备和特征工程– 时间序列数据很少采用时间序列模型所期望的格式。 它通常需要数据准备才能将原始数据转换为特定于时间序列的特征。 您可能希望在分析之前验证时间序列数据是否有规律或等间距。 对于预测用例,您可能还需要结合其他时间序列特征,例如自相关和统计属性。 使用 Data Wrangler,您可以快速创建时间序列功能,例如多个滞后期的滞后列,将数据重新采样到多个时间粒度,并自动提取时间序列的统计属性,仅举几例。
解决方案概述
这篇文章详细阐述了数据科学家和分析师如何使用 Data Wrangler 来可视化和准备时间序列数据。 我们使用来自的比特币加密货币数据集 加密数据下载 用比特币交易细节来展示这些能力。 我们使用时间序列特征清理、验证和转换原始数据集,并使用转换后的数据集作为输入生成比特币数量价格预测。
比特币交易数据样本为 1 年 19 月 2021 日至 464,116 月 XNUMX 日,共有 XNUMX 个数据点。 数据集属性包括价格记录的时间戳、特定日期硬币的开盘价或第一个价格、当天的最高价格、最后的价格当天,以 BTC 和相应的美元货币兑换的当天加密货币价值的交易量。
先决条件
下载 Bitstamp_BTCUSD_2021_minute.csv
来自的文件 加密数据下载 并将其上传到 亚马逊简单存储服务(Amazon S3).
在 Data Wrangler 中导入比特币数据集
要启动 Data Wrangler 的摄取过程,请完成以下步骤:
- 点击 SageMaker 工作室 控制台,在 文件 菜单中选择 全新,然后选择 数据牧马人流程.
- 根据需要重命名流。
- 针对 导入日期,选择 Amazon S3.
- 上载
Bitstamp_BTCUSD_2021_minute.csv
您的 S3 存储桶中的文件。
您现在可以预览您的数据集。
- 在 更多信息 窗格中,选择 高级配置 并取消选择 启用采样.
这是一个相对较小的数据集,所以我们不需要采样。
- 进口.
您已成功创建流程图并准备添加转换步骤。
添加转换
要添加数据转换,请选择旁边的加号 资料类型 并选择 编辑数据类型.
确保 Data Wrangler 自动推断数据列的正确数据类型。
在我们的例子中,推断的数据类型是正确的。 但是,假设一种数据类型不正确。 您可以通过 UI 轻松修改它们,如下面的屏幕截图所示。
让我们开始分析并开始添加转换。
数据清理
我们首先执行几个数据清理转换。
下降柱
让我们从删除 unix
列,因为我们使用 date
列作为索引。
- 回到数据流.
- 选择旁边的加号 资料类型 并选择 添加变换.
- + 添加步骤 ,在 变换 窗格。
- 管理栏.
- 针对 改造,选择 下降柱.
- 针对 要删除的列,选择 UNIX.
- 预览.
- 地址 以保存该步骤。
手柄缺失
缺失数据是现实世界数据集中的一个众所周知的问题。 因此,最佳实践是验证是否存在任何缺失值或空值并适当处理它们。 我们的数据集不包含缺失值。 但如果有,我们将使用 手柄缺失 时间序列变换来修复它们。 处理缺失数据的常用策略包括删除缺失值的行或用合理的估计值填充缺失值。 由于时间序列数据依赖于跨时间的一系列数据点,因此填充缺失值是首选方法。 填充缺失值的过程称为 归责。 该 手柄缺失 时间序列变换允许您从多种插补策略中进行选择。
- + 添加步骤 ,在 变换 窗格。
- 选择 时间序列 转变。
- 针对 改造,选择 手柄缺失.
- 针对 时间序列输入类型,选择 沿柱.
- 针对 估算值的方法,选择 前向填充.
前向填充 方法用缺失值之前的非缺失值替换缺失值。
后向填充, 常数值, 最常见的值 和 插 是 Data Wrangler 中可用的其他插补策略。 插值技术依靠相邻值来填充缺失值。 时间序列数据通常表现出相邻值之间的相关性,使插值成为一种有效的填充策略。 有关可用于应用插值的函数的更多详细信息,请参阅 熊猫.DataFrame.interpolate.
验证时间戳
在时间序列分析中,时间戳列充当索引列,分析围绕它展开。 因此,必须确保时间戳列不包含无效或格式不正确的时间戳值。 因为我们使用的是 date
列作为时间戳列和索引,让我们确认其值的格式是否正确。
- + 添加步骤 ,在 变换 窗格。
- 选择 时间序列 转变。
- 针对 转变, 选择 验证时间戳.
验证时间戳 transform 允许您检查数据集中的时间戳列是否没有时间戳不正确或缺失值的值。
- 针对 时间戳列,选择 日期.
- 针对 策略 下拉,选择 表明.
表明 策略选项创建一个布尔列,指示时间戳列中的值是否是有效的日期/时间格式。 其他选项 策略 包括:
- 误差 – 如果时间戳列丢失或无效,则抛出错误
- 下降 – 如果时间戳列丢失或无效,则删除该行
- 预览.
一个名为的新布尔列 date_is_valid
被创建,与 true
指示正确格式和非空条目的值。 我们的数据集不包含无效的时间戳值 date
柱子。 但如果确实如此,您可以使用新的布尔列来识别和修复这些值。
- 地址 保存这一步。
时间序列可视化
在我们清理和验证数据集之后,我们可以更好地可视化数据以了解其不同的组成部分。
重采样
因为我们对每日预测感兴趣,所以让我们将数据的频率转换为每日。
重采样 转换将时间序列观察的频率更改为指定的粒度,并带有上采样和下采样选项。 应用上采样会增加观察的频率(例如从每天到每小时),而下采样会降低观察的频率(例如从每小时到每天)。
因为我们的数据集是细粒度的,所以让我们使用下采样选项。
- + 添加步骤.
- 选择 时间序列 转变。
- 针对 改造,选择 重采样.
- 针对 时间戳,选择 日期.
- 针对 频率单位,选择 日历日.
- 针对 频率数量,输入 1。
- 针对 聚合数值的方法,选择 意味着.
- 预览.
我们数据集的频率从每分钟变为每天。
- 地址 保存这一步。
季节性趋势分解
重新采样后,我们可以使用 季节性趋势分解 可视化。 这将原始时间序列分解为不同的趋势、季节性和残差分量,让我们很好地了解每种模式的行为方式。 我们还可以在对预测问题进行建模时使用这些信息。
Data Wrangler 使用 LOESS,这是一种强大且通用的统计方法,用于对趋势和季节性成分进行建模。 它的底层实现使用多项式回归来估计时间序列组件(季节性、趋势和残差)中存在的非线性关系。
- 回到数据流.
- 选择旁边的加号 步骤 on 数据流.
- 添加分析.
- 在 建立分析 窗格,对于 分析类型, 选择 时间序列.
- 针对 可视化,选择 季节性趋势分解.
- 针对 分析名称,输入名称。
- 针对 时间戳列,选择 日期.
- 针对 值列,选择 交易量美元.
- 预览.
该分析使我们能够可视化输入时间序列和分解的季节性、趋势和残差。
- 保存 以保存分析。
随着 季节性趋势分解可视化,我们可以生成四种模式,如上图所示:
- 原版 – 重新采样到每日粒度的原始时间序列。
- 趋势 – 2021 年总体呈负趋势模式的多项式趋势,表明
Volume USD
计算值。 - 季节 – 由不同的振荡模式表示的乘法季节性。 我们看到季节性变化减少,其特征是振荡幅度减小。
- 剩余的 – 剩余的残余或随机噪声。 剩余序列是去除趋势和季节性成分后的结果序列。 仔细观察,我们观察到 XNUMX 月和 XNUMX 月之间以及 XNUMX 月和 XNUMX 月之间的峰值,这表明使用历史数据对此类特定事件进行建模的空间。
这些可视化为数据科学家和分析师提供了有价值的线索来了解现有模式,并可以帮助您选择建模策略。 但是,使用通过描述性分析和领域专业知识收集的信息来验证 STL 分解的输出始终是一种很好的做法。
总而言之,我们观察到与原始系列可视化一致的下降趋势,这增加了我们将趋势可视化传达的信息纳入下游决策的信心。 相比之下,季节性可视化有助于通过应用差异等技术来告知季节性的存在以及移除它的必要性,它不能提供对存在的各种季节性模式的所需详细洞察力,因此需要更深入的分析。
特征工程
在我们了解数据集中存在的模式后,我们可以开始设计旨在提高预测模型准确性的新功能。
突出日期时间
让我们从更直接的日期/时间特征开始特征工程过程。 日期/时间特征是从 timestamp
列,并为数据科学家启动特征工程过程提供了最佳途径。 我们从 突出日期时间 时间序列转换,将月份、月份的某一天、一年中的某一天、一年中的一周和季度特征添加到我们的数据集中。 因为我们将日期/时间组件作为单独的功能提供,所以我们使 ML 算法能够检测信号和模式以提高预测准确性。
- + 添加步骤.
- 选择 时间序列 转变。
- 针对 转变, 选择 突出日期时间.
- 针对 输入栏,选择 日期.
- 针对 输出列,输入
date
(此步骤是可选的)。 - 针对 输出模式,选择 序数.
- 针对 输出格式,选择 列.
- 对于要提取的日期/时间特征,选择 月, 日, 一年中的一周, 一年中的一天及 季.
- 预览.
数据集现在包含名为 date_month
, date_day
, date_week_of_year
, date_day_of_year
及 date_quarter
. 从这些新特征中检索到的信息可以帮助数据科学家从数据中获得额外的见解,并了解输入特征和输出特征之间的关系。
- 地址 保存这一步。
分类编码
日期/时间特征不限于整数值。 您还可以选择将某些提取的日期/时间特征视为分类变量,并将它们表示为 one-hot 编码特征,每列包含二进制值。 新创建的 date_quarter
column 包含 0-3 之间的值,并且可以使用四个二进制列进行 one-hot 编码。 让我们创建四个新的二进制特征,每个特征代表一年中的相应季度。
- + 添加步骤.
- 选择 分类编码 转变。
- 针对 改造,选择 一键编码.
- 针对 输入栏,选择 日期季度.
- 针对 输出样式,选择 列.
- 预览.
- 地址 添加步骤。
滞后功能
接下来,让我们为目标列创建滞后特征 Volume USD
. 时间序列分析中的滞后特征是先前时间戳的值,被认为有助于推断未来值。 它们还有助于识别自相关(也称为 序列相关) 通过量化观测值与先前时间步的观测值的关系来形成残差序列中的模式。 自相关类似于常规相关,但在系列中的值与其过去值之间。 它构成了 ARIMA 系列中自回归预测模型的基础。
使用数据管理员 滞后功能 变换,您可以轻松地创建相隔 n 个周期的滞后特征。 此外,我们经常希望在不同的滞后处创建多个滞后特征,并让模型决定最有意义的特征。 对于这样的场景, 滞后特征 transform 有助于在指定的窗口大小上创建多个滞后列。
- 回到数据流.
- 选择旁边的加号 步骤 on 数据流.
- + 添加步骤.
- 时间序列 转变。
- 针对 改造,选择 滞后特征.
- 针对 为该列生成滞后特征,选择 交易量美元.
- 针对 时间戳列,选择 日期.
- 针对 团队,输入
7
. - 因为我们有兴趣观察前七个滞后值,所以让我们选择 包括整个滞后窗口.
- 要为每个滞后值创建一个新列,请选择 展平输出.
- 预览.
添加了七个新列,后缀为 lag_number
目标列的关键字 Volume USD
.
- 地址 以保存该步骤。
卷帘窗特点
我们还可以计算一系列值的有意义的统计摘要,并将它们作为输入特征。 让我们提取常见的统计时间序列特征。
Data Wrangler 使用开源实现自动时间序列特征提取功能 新鲜 包裹。 通过时间序列特征提取转换,您可以自动化特征提取过程。 这消除了手动实现信号处理库所花费的时间和精力。 对于这篇文章,我们使用 卷帘窗特点 转换。 此方法计算由窗口大小定义的一组观察值的统计属性。
- + 添加步骤.
- 选择 时间序列 转变。
- 针对 改造,选择 卷帘窗特点.
- 针对 为该列生成滚动窗口特征,选择 交易量美元.
- 针对 时间戳列,选择 日期.
- 针对 窗户尺寸,输入
7
.
指定窗口大小 7
通过组合当前时间戳的值和前七个时间戳的值来计算特征。
- 选择 展平 为每个计算的特征创建一个新列。
- 选择您的策略为 最小子集.
该策略提取了八个在下游分析中有用的特征。 其他策略包括 高效子集, 自定义子集及 所有功能. 有关可提取功能的完整列表,请参阅 提取特征概述.
- 预览.
我们可以看到八个新列,指定窗口大小为 7
以他们的名义,附加到我们的数据集中。
- 地址 以保存该步骤。
导出数据集
我们已经转换了时间序列数据集,并准备使用转换后的数据集作为预测算法的输入。 最后一步是将转换后的数据集导出到 Amazon S3。 在 Data Wrangler 中,您可以选择 导出步骤 使用 Amazon SageMaker 处理代码自动生成 Jupyter 笔记本,用于处理转换后的数据集并将其导出到 S3 存储桶。 然而,由于我们的数据集包含超过 300 条记录,让我们利用 出口数据 在选项 添加变换 视图以将转换后的数据集从 Data Wrangler 直接导出到 Amazon S3。
- 出口数据.
- 针对 S3位置,选择 浏览器 并选择您的 S3 存储桶。
- 出口数据.
现在我们已经成功转换了比特币数据集,我们可以使用 亚马逊预报 生成比特币预测。
清理
如果您已完成此用例,请清理您创建的资源以避免产生额外费用。 对于 Data Wrangler,您可以在完成后关闭底层实例。 参考 关闭数据管理员 有关详细信息的文档。 或者,您可以继续 部分2 使用此数据集进行预测。
总结
这篇文章演示了如何利用 Data Wrangler 使用其内置的时间序列功能来简化和加速时间序列分析。 我们探索了数据科学家如何轻松、交互地清理、格式化、验证时间序列数据并将其转换为所需的格式,以进行有意义的分析。 我们还探讨了如何通过使用 Data Wrangler 添加一组全面的统计功能来丰富您的时间序列分析。 要了解有关 Data Wrangler 中时间序列转换的更多信息,请参阅 转换资料.
关于作者
立体盆 是 AWS 的解决方案架构师,专注于 AI/ML。 他热衷于帮助客户使用人工智能和机器学习进行创新并实现其业务目标。 在业余时间,Roop 喜欢阅读和远足。
- "
- 100
- 116
- 2021
- 7
- 9
- 关于
- 加快
- 横过
- 额外
- 优点
- 算法
- 算法
- 所有类型
- Amazon
- 分析
- 相应
- 应用
- 的途径
- 四月
- 围绕
- 人造的
- 人工智能
- 人工智能和机器学习
- 可使用
- AWS
- 基础
- 最佳
- 比特币
- 比特币交易
- 边界
- BTC
- 内建的
- 商业
- 企业
- 能力
- 例
- 收费
- 清洁
- 码
- 柱
- 相当常见
- 相比
- 复杂
- 元件
- 信心
- 安慰
- 包含
- 继续
- 可以
- cryptocurrency
- 货币
- 电流
- 合作伙伴
- data
- 数据科学
- 数据集
- 天
- 更深
- 需求
- 检测
- DID
- 不同
- 不会
- 域
- 向下
- 容易
- 有效
- 使
- 工程师
- 工程师
- 必要
- 估计
- 事件
- 例子
- 预期
- 专门知识
- 提取物
- 因素
- 快
- 专栏
- 特征
- 终于
- 姓氏:
- 固定
- 流
- 以下
- 格式
- 形式
- ,
- 未来
- 生成
- 给予
- 非常好
- 团队
- 处理
- 帮助
- 有帮助
- 帮助
- 别墅
- 创新中心
- How To
- HTTPS
- 鉴定
- 其他
- 包括
- 增加
- 指数
- 信息
- 可行的洞见
- 房源搜索
- IT
- 一月
- 已知
- 学习用品
- 学习
- Level
- 有限
- 清单
- 寻找
- 机
- 机器学习
- 制作
- 三月
- ML
- 模型
- 模型
- 最先进的
- 新功能
- 噪声
- 笔记本
- 打开
- 开放源码
- 开放
- 附加选项
- 附加选项
- 其他名称
- 除此以外
- 模式
- 期
- 政策
- 预测
- 预测
- 当下
- 预防
- 预览
- 车资
- 市场问题
- 过程
- 项目
- 项目
- 提供
- 提供
- 季
- 很快
- 范围
- 原
- 阅读
- 合理
- 记录
- 记录
- 减少
- 定期
- 关系
- 关系
- 要求
- 岗位要求
- 资源
- 检讨
- 销售
- 科学
- 科学家
- 科学家
- 系列
- 服务
- 集
- 关闭
- 类似
- 简易
- 尺寸
- 小
- So
- 解决方案
- 规范
- 开始
- 统计
- 库存
- 存储
- 策略
- 策略
- 顺利
- 目标
- 技术
- 通过
- 次
- 交易
- 传统
- 改造
- 转型
- ui
- 理解
- 独特
- us
- USD
- 使用
- 平时
- 利用
- 折扣值
- 查看
- 可视化
- 体积
- 周
- 话
- 年