0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一些时间序列算法探索

数据分析与开发 ? 来源:数据STUDIO ? 作者:云朵君 ? 2021-11-18 15:58 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

随着社会的进步,人们生活水平的提高,或是人人都有私家车,然而驱车在外,停车却成了一个头大的问题。而没车的我在维护一组智能停车计时器,它们提供了关于它们使用频率和使用时间的数据。而时刻都在思考,如何才能为大家提供更好的服务。

如果可以根据仪表的过去表现,根据供求规律来预测它的未来价值,那会怎样呢?

准确预测什么时间采取相应策略来实现目标,这是一个不小的挑战,但对于这个挑战,其实是可以通过时间序列预测来解决。当你们在高峰期苦苦寻找停车位时,又被告知这将收取你比平时更多的费用,你们肯定难以接受。但街道通畅无阻的话,车主停车方便,也能给我带来不少的收入,真是一举两得!

接下来我们来探索一些时间序列算法

一些定义时间序列预测法时间序列预测法是一种历史资料延伸预测,也称历史引伸预测法。是以数据数列所能反映的社会经济现象的发展过程和规律性,进行引伸外推,预测其发展趋势的方法。

需要明确一点的是,与回归分析预测模型不同,时间序列模型依赖于数值在时间上的先后顺序,同样大小的值改变顺序后输入模型产生的结果是不同的。

时间序列预测对商业有真正的价值,因为它直接应用于定价、库存和供应链问题。虽然深度学习技术已经开始用于获得更多的洞察力,以更好地预测未来,但时间序列预测仍然是一个主要由经典ML技术提供信息的领域。

当遇到时间序列这个词时,你需要了解它在不同语境中的用法。

时间序列在数学中,时间序列是按时间顺序索引(或列出或图表)的一系列数据点。最常见的是,时间序列是在连续的等间隔时间点上获得的序列。

时间序列的一个例子是道琼斯工业平均指数[1]的日收盘价。在信号处理、天气预报、地震预报和其他可以绘制事件和数据点的领域中,经常会遇到时间序列图和统计建模的使用。

时间序列分析时间序列分析,就是对上述时间序列数据的分析。时间序列数据可以采取不同的形式,包括中断时间序列,它检测时间序列在中断事件前后的演变模式。时间序列所需的分析类型取决于数据的性质。时间序列数据本身可以采用数字或字符序列的形式。

时间序列分析考虑了这样一个事实,即随着时间的推移获取的数据点可能具有应该考虑的内部结构(例如自相关、趋势或季节性变化)

要进行的分析使用多种方法,包括频域和时域、线性和非线性等等。可参见了解更多关于这类数据的时间序列分析的多种方法[2]。

时间序列分解时间序列由四个部分组成:

:季节性成分

:趋势性成分

:周期性成分

:残差,或不规则组件。

时间序列分量分解之间的关系:

加法分解:

, 在哪里 是当时的数据 吨。

乘法分解:

将乘法关系变成加法关系:

一个加模型是否季节性波动的幅度不随水平变化是适当的。如果季节性波动与序列的水平成正比,那么乘法模型是合适的。乘法分解在经济序列中更为普遍。

时间序列预测时间序列预测是使用一个模型来预测未来的价值,该模型基于以前收集的数据在过去发生的模式。虽然可以使用回归模型来探索时间序列数据,将时间指数作为图表上的 变量,但最好使用特殊类型的模型来分析此类数据。

时间序列数据是一组有序的观测数据,不像可以通过线性回归分析的数据。最常见的是ARIMA,这是Autoregressive Integrated Moving Average(自回归综合移动平均线)的首字母缩写。

ARIMA 模型[3] 将一系列的现值与过去的值和过去的预测误差联系起来。它们最适合于分析时域数据,其中数据是随时间排序的。

后面推文将介绍使用单变量时间序列[4]构建一个ARIMA模型,该模型关注一个随时间改变其值的变量。这类数据的一个例子是这个数据集[5],它记录了莫纳罗亚天文台每月的二氧化碳浓度:

CO2YearMonthYearMonth

330.621975.0419751

331.401975.1319752

331.871975.2119753

333.181975.2919754

333.921975.3819755

333.431975.4619756

331.851975.5419757

330.011975.6319758

328.511975.7119759

328.411975.79197510

329.251975.88197511

330.971975.96197512

时间序列数据特征在查看时间序列数据时,为了更好地理解其模式,需要拆解某些特征。如果你想要分析“信号”包含在时间序列数据中,那么就认为这些特征是相对于“信号”的“噪声”。此时需要通过使用一些统计技术来抵消这些特征以减少“噪音”。

时间序列数据变动存在规律性与不规律性时间序列中的每个观察值大小,是影响变化的各种不同因素在同一时刻发生作用的综合结果。从这些影响因素发生作用的大小和方向变化的时间特性来看,这些因素造成的时间序列数据的变动分为四种类型。

趋势性

某个变量随着时间进展或自变量变化,呈现一种比较缓慢而长期的持续上升、下降、停留的同性质变动趋向,但变动幅度可能不相等。

季节性

某因素由于外部影响随着自然季节的交替出现高峰与低谷的规律。

随机性

个别为随机变动,整体呈统计规律。

综合性

实际变化情况是几种变动的叠加或组合。预测时设法过滤除去不规则变动,突出反映趋势性和周期性变动。

查看时间序列时首先要考虑的重要特征是否存在趋势,意味着平均而言,测量值会随着时间的推移而增加(或减少)?

是否存在季节性,这意味着与日历时间(例如季节、季度、月份、星期几等)相关的高点和低点有规律地重复模式?

有异常值吗?在回归中,离群值离你的线很远。对于时间序列数据,您的异常值与其他数据相距甚远。

是否存在与季节性因素无关的长期周期或时期?

随着时间的推移是否存在恒定的方差,或者方差是非常量的?

序列水平或方差是否有任何突然变化?

趋势性通常,时间序列中不具有周期性的系统变化称为趋势。趋势是序列随时间的持续增加或减少。从时间序列数据集中识别、建模甚至删除趋势信息可能会带来好处。

趋势类型有各种各样的趋势,通常分为:

确定性趋势:这些是持续增加或减少的趋势。

随机性趋势:这些趋势会不一致地增加和减少。

一般来说,确定性趋势更容易识别和删除。

根据观察范围来分类趋势:

全局趋势:这些趋势适用于整个时间序列。

本地趋势:这些趋势适用于时间序列的部分或子序列。

一般来说,全局趋势更容易识别和应对。

识别趋势可以绘制时间序列数据以查看趋势是否明显。

而在实践中,识别时间序列中的趋势可能是一个主观过程。因此从时间序列中提取或删除它可能同样具有主观性。

创建数据的线图并检查图中的明显趋势。

在图中添加线性和非线性趋势线,看看趋势是否明显。

删除趋势具有趋势的时间序列称为非平稳的。可以对识别的趋势进行建模。建模后,可以将其从时间序列数据集中删除。这称为去趋势时间序列。

如果数据集没有趋势或我们成功地移除了趋势,则称该数据集是趋势平稳的。

机器学习中使用时间序列趋势从机器学习的角度来看,数据的趋势代表着两个机会:

删除信息:删除扭曲输入和输出变量之间关系的系统信息。

添加信息:添加系统信息以改善输入和输出变量之间的关系。

具体来说,作为数据准备和清洗练习,可以从时间序列数据(以及未来的数据)中删除趋势。这在使用统计方法进行时间序列预测时很常见,但在使用机器学习模型时并不总是能改善结果。

季节性季节性被定义为周期性的波动,季节性变化或季节性是随着时间有规律地重复的循环。

许多时间序列显示季节性。例如,零售额往往在春季期间达到顶峰,然后在假期过后下降。因此,零售销售的时间序列通常会显示 1月至 3月的销售额增加,而 4 月和 5 月的销售额下降。季节性在经济时间序列中很常见,它在工程和科学数据中不太常见。

时间序列中的周期结构可能是季节性的,也可能不是。如果它始终以相同的频率重复,则是季节性的,否则就不是季节性的,称为循环。

季节性类型季节性有很多种。例如:时间、日、每周、每月、每年。因此,确定时间序列问题中是否存在季节性成分是主观的。

确定是否存在季节性因素的最简单方法是绘制和查看数据,可能以不同的比例并添加趋势线。

去除季节性一旦确定了季节性,就可以对其进行建模。季节性模型可以从时间序列中删除。此过程称为季节性调整[8]或去季节性[9]化。

去除了季节性成分的时间序列称为季节性平稳。具有明显季节性成分的时间序列被称为非平稳的。

在时间序列分析领域,有一些复杂的方法可以从时间序列中研究和提取季节性。

机器学习中作用了解时间序列中的季节性成分可以提高机器学习建模的性能。

这可以通过两种主要方式发生:

更清晰的信号:从时间序列中识别和去除季节性成分可以使输入和输出变量之间的关系更清晰。

更多信息:关于时间序列季节性分量的附加信息可以提供新信息以提高模型性能。

这两种方法都可能对项目有用。并在数据清洗和准备期间就需要建模季节性并将其从时间序列中删除。

在特征提取和特征工程期间,可能会提取季节性信息并将其作为输入特征。

其他离群值:离群值离标准数据方差很远。

长期循环:独立于季节性因素,数据可能显示一个长期周期,比如持续超过一年的经济衰退。

恒定方差:随着时间的推移,一些数据显示出不断的波动,比如每天和晚上的能源使用量。

突变:数据可能显示出突变,可能需要进一步分析。例如,由于COVID而突然关闭的企业导致了数据的变化。

以下是时间序列样本图[11],显示了玩家在过去几年里每天花费在游戏中的货币。你能在这个数据中识别出上面列出的任何特征吗?

时间序列预测方法基本规则通过人工经验,挖掘时序数据的演化特征,找到时序变化的周期,从而预估时间序列的未来走势。具体的观察一个时间序列,当序列存在周期性时,提取时间序列的周期性特征进行预测。

传统参数法传统的参数预测方法可以分为两种,

一种拟合标准时间序列的餐顺方法,包括移动平均,指数平均等;

另一种是考虑多因素组合的参数方法,即 AR, MA, ARMA, ARIMA等模型。这类方法比较适用于小规模,单变量的预测。

时间序列分解一个时间序列往往是一下几类变化形式的叠加或耦合

长期趋势 (Secular trend, T)

长期趋势指现象在较长时期内持续发展变化的一种趋向或状态。

季节变动 (Seasonal Variation, S)

季节波动是由于季节的变化引起的现象发展水平的规则变动

循环波动 (Cyclical Variation, C)

循环波动指以若干年为期限,不具严格规则的周期性连续变动

不规则波动 (Irregular Variation, I)

不规则波动指由于众多偶然因素对时间序列造成的影响

机器学习主要是构建样本数据集,采用“时间特征”到“样本值”的方式,通过有监督学习,学习特征与标签之前的关联关系,从而实现时间序列预测。

单步预测在时间序列预测中使用滞后的观测值 ,作为输入变量来预测当前的时间的观测值

多步预测使用过去的观测序列 来预测未来的观测序列

多变量预测每个时间有多个观测值:

通过不同的测量手段得到了多种观测值,并且希望预测其中的一个或几个值。

深度学习对于时间序列的分析,有许多方法可以进行处理,包括:循环神经网络-LSTM模型 / 卷积神经网络 / 基于注意力机制的模型(seq2seq)/。..

循环神经网络循环神经网络(RNN)框架及其变种(LSTM/GRU/。..)是为处理序列型而生的模型,天生的循环自回归的结构是对时间序列的很好的表示

时间卷积网络时间卷积网络(TCN)是一种特殊的卷积神经网络,针对一维空间做卷积,迭代多层捕捉长期关系。具体的,对于上一层t时刻的值,只依赖于下一层t时刻及其之前的值。

一个时间序列数据--电力使用数据开始创建一个时间序列模型,根据过去的使用情况来预测未来的电力使用量。

本例中的数据来自GEFCom2014预测竞赛。由2012 - 2014年3年的小时电负荷和温度值组成。

import os

import matplotlib.pyplot as plt

import pandas as pd

%matplotlib inline

data_dir = ‘。/data’

energy = pd.read_csv(‘。/energy.csv’)

energy.head()

可以看到有两列表示date和load

load

2012-01-01 00002698.0

2012-01-01 01002558.0

2012-01-01 02002444.0

2012-01-01 03002402.0

2012-01-01 04002403.0

可视化energy.plot(y=‘load’, subplots=True, figsize=(15, 8), fontsize=12)

plt.xlabel(‘timestamp’, fontsize=12)

plt.ylabel(‘load’, fontsize=12)

plt.show()

现在,绘制2014年7月的第一周,将其作为energy的输入,在[from date]: [to date] 模式中:

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模型来创建一些预测。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据
    +关注

    关注

    8

    文章

    7269

    浏览量

    92457
  • 时序设计
    +关注

    关注

    0

    文章

    21

    浏览量

    44052

原文标题:一文解读时间序列基本概念

文章出处:【微信号:DBDevs,微信公众号:数据分析与开发】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    DFT算法与FFT算法的优劣分析

    算法之间有什么不同,采用相关算法的依据。下面就来介绍下两种算法的不同以及适用的一些场合。 DFT算法
    的头像 发表于 08-04 09:30 ?255次阅读

    不用UI也能开发NXP Time Series Studio(TSS)应用吗?起看下TSS命令行形式介绍

    基于AI的时间序列开发任务。实现从数据到模型的端到端流程,简化用户开发流程,以及针对于AI应用的开发难度。 TSS提供了一些基于时间序列的参
    的头像 发表于 07-10 14:41 ?1663次阅读
    不用UI也能开发NXP Time Series Studio(TSS)应用吗?<b class='flag-5'>一</b>起看下TSS命令行形式介绍

    Debian和Ubuntu哪个好一些

    兼容性对比Debian和Ubuntu哪个好一些,并为您揭示如何通过RAKsmart服务器释放Linux系统的最大潜能。
    的头像 发表于 05-07 10:58 ?455次阅读

    树莓派在自动化控制项目中的一些潜在应用

    自动化控制项目中的一些潜在应用。之前,我们已经为Arduino平台探讨了相同的话题。我们确定Arduino是个出色的教育工具,但由于一些限制,它无法在工业环境中完全
    的头像 发表于 03-25 09:45 ?287次阅读
    树莓派在自动化控制项目中的<b class='flag-5'>一些</b>潜在应用

    使用BP神经网络进行时间序列预测

    使用BP(Backpropagation)神经网络进行时间序列预测是种常见且有效的方法。以下是个基于BP神经网络进行时间
    的头像 发表于 02-12 16:44 ?917次阅读

    AN29-关于DC-DC转换器的一些想法

    电子发烧友网站提供《AN29-关于DC-DC转换器的一些想法.pdf》资料免费下载
    发表于 01-08 13:57 ?0次下载
    AN29-关于DC-DC转换器的<b class='flag-5'>一些</b>想法

    滤波器的一些常识

    通过数字信号处理器(DSP)或嵌入式系统中的软件算法实现。模拟滤波器处理连续时间的信号,通常使用电路元件实现。滤波器的频率响应是指它对不同频率信号的响应情况。根据频
    的头像 发表于 12-18 17:05 ?1044次阅读
    滤波器的<b class='flag-5'>一些</b>常识

    一些常见的动态电路

    无论是模电还是数电,理论知识相对来说还是比较枯燥,各种电路原理理解清楚不算容易,换种生动形象的方式或许会增加一些趣味性,也更容易理解这些知识。下面整理了一些常见的电路,以动态图形的方式展示。 整流
    的头像 发表于 11-16 09:26 ?1253次阅读
    <b class='flag-5'>一些</b>常见的动态电路

    时空引导下的时间序列自监督学习框架

    【导读】最近,香港科技大学、上海AI Lab等多个组织联合发布了时间序列无监督预训练的文章,相比原来的TS2Vec等时间序列表示学习工作
    的头像 发表于 11-15 11:41 ?847次阅读
    时空引导下的<b class='flag-5'>时间</b><b class='flag-5'>序列</b>自监督学习框架

    如何使用RNN进行时间序列预测

    种强大的替代方案,能够学习数据中的复杂模式,并进行准确的预测。 RNN的基本原理 RNN是种具有循环结构的神经网络,它能够处理序列数据。在RNN中,每个输入序列的元素都会通过
    的头像 发表于 11-15 09:45 ?1045次阅读

    LSTM神经网络在时间序列预测中的应用

    时间序列预测是数据分析中的个重要领域,它涉及到基于历史数据预测未来值。随着深度学习技术的发展,长短期记忆(LSTM)神经网络因其在处理序列数据方面的优势而受到广泛关注。 LSTM神经
    的头像 发表于 11-13 09:54 ?2247次阅读

    分享一些常见的电路

    理解模电和数电的电路原理对于初学者来说可能比较困难,但通过一些生动的教学方法和资源,可以有效地提高学习兴趣和理解能力。 下面整理了一些常见的电路,以动态图形的方式展示。 整流电路 单相桥式整流
    的头像 发表于 11-13 09:28 ?899次阅读
    分享<b class='flag-5'>一些</b>常见的电路

    时间复杂度为 O(n^2) 的排序算法

    作者:京东保险 王奕龙 对于小规模数据,我们可以选用时间复杂度为 O(n2) 的排序算法。因为时间复杂度并不代表实际代码的执行时间,它省去了低阶、系数和常数,仅代表的增长趋势,所以在小
    的头像 发表于 10-19 16:31 ?1834次阅读
    <b class='flag-5'>时间</b>复杂度为 O(n^2) 的排序<b class='flag-5'>算法</b>

    LED驱动器应用的一些指南和技巧

    电子发烧友网站提供《LED驱动器应用的一些指南和技巧.pdf》资料免费下载
    发表于 09-25 11:35 ?0次下载
    LED驱动器应用的<b class='flag-5'>一些</b>指南和技巧

    浅谈Vivado编译时间

    随着FPGA规模的增大,设计复杂度的增加,Vivado编译时间成为个不可回避的话题。尤其是一些基于SSI芯片的设计,如VU9P/VU13P/VU19P等,布局布线时间更是显著增加。当
    的头像 发表于 09-18 10:43 ?2390次阅读
    浅谈Vivado编译<b class='flag-5'>时间</b>