精华内容
下载资源
问答
  • 时间序列数据简介
    千次阅读
    2021-08-11 19:14:18

    前言

    由于研究方向是时间序列预测,对时间序列数据也颇感兴趣,特此简单记录学习过程。

    参考文章:

    1. 时间序列数据分析101 - (1) 一份全面详尽的时间序列入门教程

    1. 引言

    1.1 时间序列

    • 定义:按照一定的时间间隔排列的一组数据,其时间间隔可以是任意的时间单位,如小时、日、周月等。
      比如,每天某产品的用户数量,每个月的销售额,这些数据形成了以一定时间间隔的数据。
    • 时间序列分析:指从按时间排序的数据点中抽取有价值的总结和统计信息的行为。
      时间序列分析既包含了对过去数据的诊断,也包括对未来数据的预测

    时间序列可以分为平稳序列和非平稳序列两大类

    • 平稳序列
      序列中的各观察值基本上在某个固定的水平上波动,虽然在不同的时间段波动的程度不同,但并不存在某种规律,波动可以看成是随机的
    • 非平稳序列
      包含趋势、季节性或周期性的序列,它可能只含有其中一种成分,也可能含有几种成分。

    1.2 应用场景

    • 医学
    • 天气
    • 经济学
    • 天文学
    • 海洋学

    落地场景:预测、异常检测和动态时间规整等

    1.3 研究方法的递进

    • 统计学方法 :
    • 传统时序方法:AR、ARMA、ARIMA
    • 机器学习模型:ANN、XGBoost、RF
    • 深度学习模型:LSTM、Transformer、Bert

    时间序列分析的主要任务之一是要建立时间序列适合的模型,通过建立模型来描述现象、事物随时间推移的变化规律性;并常常借助于模型进行预测。

    2. 时间序列数据

    2.1 数据的获取

    • 开源数据仓库

    开源时间序列数据集

      - 音乐库数据
      - 服务监控数据集
      - 国家经济数据
      - 政府开放数据
      - 数据竞赛网站
    
    • 从非显式数据中构造时间特征,创造时间序列数据

    2.2 数据时间轴的确定

    有时候在数据存储时并没有一列显式存在的时间列,这时候就需要我们去人为寻找和构造。

    • 以事件记录的时间构造时间列
    • 以另一个和时间相关的元素构造时间列,例如在一个数据集中行驶距离和时间是正相关的,此时就可以以距离来构造时间列
    • 以物理轨迹的顺序作为时间列,例如在医学,天气等领域有些数据是以图片的形式存储的,此时可以从图像中提取时间列

    2.3 时间序列遇到问题

    • 时间值是在哪个过程产生的,以及何时产生的。通常事件发生的时间和事件被记录的时间往往是不一致的。
    • 处理历史遗留数据,并没有清洗记录的文档说明,也无法找到处理数据流的人来确认时间戳产生的方式。
    • 时间分辨率,这对于后续特征构造和模型有效性都有很大的影响。
    • 数据缺失值处理以及可靠性
    更多相关内容
  • 时间序列界的“Imagnet”,发文章必跑数据集。大约有128个数据集,如ECG5000,GunPoint,coffee等数据集 相比于2015版有了大量更新,2018年秋季:该数据资源的早期工作由NSF职业奖0237918资助,并通过NSF IIS-...
  • 时间序列数据的预处理

    千次阅读 2022-02-11 10:46:39
    时间序列数据随处可见,要进行时间序列分析,我们必须先对数据进行预处理。 时间序列预处理技术对数据建模的准确性有重大影响。 在本文中,我们将主要讨论以下几点: 时间序列数据的定义及其重要性。 时间序列数据...

    时间序列数据随处可见,要进行时间序列分析,我们必须先对数据进行预处理。 时间序列预处理技术对数据建模的准确性有重大影响。

    在本文中,我们将主要讨论以下几点:

    • 时间序列数据的定义及其重要性。
    • 时间序列数据的预处理步骤。
    • 构建时间序列数据,查找缺失值,对特征进行去噪,并查找数据集中存在的异常值。

    首先,让我们先了解时间序列的定义:

    时间序列是在特定时间间隔内记录的一系列均匀分布的观测值。

    时间序列的一个例子是黄金价格。在这种情况下,我们的观察是在固定时间间隔后一段时间内收集的黄金价格。时间单位可以是分钟、小时、天、年等。但是任何两个连续样本之间的时间差是相同的。

    在本文中,我们将看到在深入研究数据建模部分之前应执行的常见时间序列预处理步骤和与时间序列数据相关的常见问题。

    时间序列数据预处理

    时间序列数据包含大量信息,但通常是不可见的。 与时间序列相关的常见问题是无序时间戳、缺失值(或时间戳)、异常值和数据中的噪声。 在所有提到的问题中,处理缺失值是最困难的一个,因为传统的插补(一种通过替换缺失值来保留大部分信息来处理缺失数据的技术)方法在处理时间序列数据时不适用。 为了分析这个预处理的实时分析,我们将使用 Kaggle 的 Air Passenger 数据集。

    时间序列数据通常以非结构化格式存在,即时间戳可能混合在一起并且没有正确排序。 另外在大多数情况下,日期时间列具有默认的字符串数据类型,在对其应用任何操作之前,必须先将数据时间列转换为日期时间数据类型。 让我们将其实现到我们的数据集中:

    import pandas as pd
    
    passenger = pd.read_csv('AirPassengers.csv')
    passenger['Date'] = pd.to_datetime(passenger['Date']) 
    passenger.sort_values(by=['Date'], inplace=True, ascending=True)
    
    

    时间序列中的缺失值

    处理时间序列数据中的缺失值是一项具有挑战性的任务。 传统的插补技术不适用于时间序列数据,因为接收值的顺序很重要。 为了解决这个问题,我们有以下插值方法:

    插值是一种常用的时间序列缺失值插补技术。 它有助于使用周围的两个已知数据点估计丢失的数据点。 这种方法简单且最直观。 处理时序数据时可以使用以下的方法:

    • 基于时间的插值
    • 样条插值
    • 线性插值

    让我们看看我们的数据在插补之前的样子:

    from matplotlib.pyplot import figure
    import matplotlib.pyplot as plt
    
    figure(figsize=(12, 5), dpi=80, linewidth=10)
    plt.plot(passenger['Date'], passenger['Passengers'])
    plt.title('Air Passengers Raw Data with Missing Values')
    plt.xlabel('Years', fontsize=14)
    plt.ylabel('Number of Passengers', fontsize=14)
    plt.show()
    

    让我们看看以上三个方法的结果:

    passenger[‘Linear’] = passenger[‘Passengers’].interpolate(method=’linear’)
    passenger[‘Spline order 3’] = passenger[‘Passengers’].interpolate(method=’spline’, order=3)
    passenger[‘Time’] = passenger[‘Passengers’].interpolate(method=’time’)
    
    methods = ['Linear', 'Spline order 3', 'Time']
    
    from matplotlib.pyplot import figure
    import matplotlib.pyplot as plt
    for method in methods:
        figure(figsize=(12, 4), dpi=80, linewidth=10)
        plt.plot(passenger["Date"], passenger[method])
        plt.title('Air Passengers Imputation using: ' + types)
        plt.xlabel("Years", fontsize=14)
        plt.ylabel("Number of Passengers", fontsize=14)
        plt.show()
    

    所有的方法都给出了还不错的结果。当缺失值窗口(缺失数据的宽度)很小时,这些方法更有意义。但是如果丢失了几个连续的值,这些方法就更难估计它们。

    时间序列去噪

    时间序列中的噪声元素可能会导致严重问题,所以一般情况下在构建任何模型之前都会有去除噪声的操作。 最小化噪声的过程称为去噪。 以下是一些通常用于从时间序列中去除噪声的方法:

    滚动平均值

    滚动平均值是先前观察窗口的平均值,其中窗口是来自时间序列数据的一系列值。 为每个有序窗口计算平均值。 这可以极大地帮助最小化时间序列数据中的噪声。

    让我们在谷歌股票价格上应用滚动平均值:

    rolling_google = google_stock_price['Open'].rolling(20).mean()
    plt.plot(google_stock_price['Date'], google_stock_price['Open'])
    plt.plot(google_stock_price['Date'], rolling_google)
    plt.xlabel('Date')
    plt.ylabel('Stock Price')
    plt.legend(['Open','Rolling Mean'])
    plt.show()
    

    傅里叶变换

    傅里叶变换可以通过将时间序列数据转换到频域来帮助去除噪声,我们可以过滤掉噪声频率。然后应用傅里叶反变换得到滤波后的时间序列。我们用傅里叶变换来计算谷歌股票价格。

    denoised_google_stock_price = fft_denoiser(value, 0.001, True)
    plt.plot(time, google_stock['Open'][0:300])
    plt.plot(time, denoised_google_stock_price)
    plt.xlabel('Date', fontsize = 13)
    plt.ylabel('Stock Price', fontsize = 13)
    plt.legend([‘Open’,’Denoised: 0.001'])
    plt.show()
    

    时间序列中的离群值检测

    时间序列中的离群值是指趋势线的突然高峰或下降。 导致离群值可能有多种因素。 让我们看一下检测离群值的可用方法:

    基于滚动统计的方法

    这种方法最直观,适用于几乎所有类型的时间序列。 在这种方法中,上限和下限是根据特定的统计量度创建的,例如均值和标准差、Z 和 T 分数以及分布的百分位数。 例如,我们可以将上限和下限定义为:

    取整个序列的均值和标准差是不可取的,因为在这种情况下,边界将是静态的。边界应该在滚动窗口的基础上创建,就像考虑一组连续的观察来创建边界,然后转移到另一个窗口。该方法是一种高效、简单的离群点检测方法。

    孤立森林

    顾名思义,孤立森林是一种基于决策树的异常检测机器学习算法。 它通过使用决策树的分区隔离给定特征集上的数据点来工作。 换句话说,它从数据集中取出一个样本,并在该样本上构建树,直到每个点都被隔离。 为了隔离数据点,通过选择该特征的最大值和最小值之间的分割来随机进行分区,直到每个点都被隔离。 特征的随机分区将为异常数据点在树中创建更短的路径,从而将它们与其余数据区分开来。

    K-means 聚类

    K-means 聚类是一种无监督机器学习算法,经常用于检测时间序列数据中的异常值。 该算法查看数据集中的数据点,并将相似的数据点分组为 K 个聚类。 通过测量数据点到其最近质心的距离来区分异常。 如果距离大于某个阈值,则将该数据点标记为异常。 K-Means 算法使用欧几里得距离进行比较。

    可能的面试问题

    如果一个人在简历中写了一个关于时间序列的项目,那么面试官可以从这个主题中提出这些可能的问题:

    • 预处理时间序列数据的方法有哪些,与标准插补方法有何不同?
    • 时间序列窗口是什么意思?
    • 你听说过孤立森林吗? 如果是,那么你能解释一下它是如何工作的吗?
    • 什么是傅立叶变换,我们为什么需要它?
    • 填充时间序列数据中缺失值的不同方法是什么?

    总结

    在本文中,我们研究了一些常见的时间序列数据预处理技术。 我们从排序时间序列观察开始; 然后研究了各种缺失值插补技术。 因为我们处理的是一组有序的观察结果,所以时间序列插补与传统插补技术不同。此外,还将一些噪声去除技术应用于谷歌股票价格数据集,最后讨论了一些时间序列的异常值检测方法。 使用所有这些提到的预处理步骤可确保高质量数据,为构建复杂模型做好准备。

    https://www.overfit.cn/post/9274a9c482b0431a802f5318c15cd76d

    作者:Shashank Gupta

    展开全文
  • 【时间序列】时间序列数据的缺失填补方法总结

    万次阅读 多人点赞 2021-05-21 00:16:01
    在前几次分享中我们知道,很多时序算法都依赖完整的时序数据进行建模,许多业务也需要数据保持完整性,以更好地进行可视化与分析。然而在真实场景中,由于采集能力或网络传输的原因,时序数据常常会有缺...

    在前几次分享中我们知道,很多时序算法都依赖完整的时序数据进行建模,许多业务也需要数据保持完整性,以更好地进行可视化与分析。然而在真实场景中,由于采集能力或网络传输的原因,时序数据常常会有缺失、断点的情况。如何处理这些有缺失的时间序列呢?

    图 | 两种不同类型的时序数据缺失

    有关时间序列的补缺工作大体上分为:删除填充这两类。删除所考虑的不是进行填补,而是将缺失值作为特征之一输入到时序模型,例如异常检测,行为分析等;而填充是找到时序变化的规律,将值补充进去,分为统计方式填充机器学习填充两种方式。

    本文就上面时序补缺的两大类方向整理相关工作,供大家阅读。

    01

    缺失数据删除

    最直接的缺失数据处理的方式,就是直接忽略这些缺失值,简称为直接删除法,该方法常用在离散型的时间序列处理中,比如用户购物行为序列,事件序列等,这类序列数据没有固定的采集间隔,一般会把数据点之间的间隔时间作为特征进行分析。

    图 | 融入时间间隔信息的LSTM: TLSTM[1] (KDD 2017)

    比如上图所展示了TLSTM模型,来自KDD 2017年的工作,其将数据之间的间隔作为特征进行输入。TLSTM中专门设计了一种新的门结构对这种间隔信息进行加权聚合。

    当然,该类方法可能会舍弃数据中的一些重要信息,在监控/IoT/风控等这种稳定性要求高的业务中,不能适用,因为每个数据点所代表的信息都很重要。

    02

    缺失数据填补

    将缺失的数据删除一般只适用于少部分对数据完整度要求不高的场景,大部分场景(例如监控、安全等)需要我们尽可能将缺失的数据填充。数据填充需要我们找到时间序列一定的变化规律,从而将值补充进去。这里与时间序列的预测有一点相似,不同的是,时间序列预测中我们看不到所要预测点后面的数据,而时序补缺中,我们可以分析缺失点前后的数据,从而更精准的对缺失数据进行填充。

    数据填充基本分为统计方式填充机器学习填充两种方式。

    统计方式填充

    a

    基于统计学的填充方法是时间序列补缺中常用的方法,其计算复杂度低,易操作,在许多精度要求不高的业务场景中比较适用。

    就近填充

    就近填充包括:前推法LOCF,用缺失之前的最后一次观测值填补;与后推法NOCB, 使用缺失值后面的观测值进行填补。这个方法是时序当中最基本的方法。

    特征值填充

    特征值填充包括:均值、中值、常用值等。这类方法计算快,进行简单的统计即可实现数据的填补。其一般直接忽略数据的时序信息假定时序数据里面基本没有很强趋势性。

    线性插值

    这个方法历史悠久。其假定时序之间变动有很强的趋势,通过拟合数据的趋势变化,进而进行填补。早期天文学缺失数据都用这个方法。线性插补的方法包括一元线性回归,多元线性回归,岭回归等,有关方法可以参考之前的文章:《TS技术课堂 | 时间序列回归》

    季节性+线性插值

    经济数据或者季节波动数据,常常不符合简单的线性变化强假设。对这样的数据进行补缺,一般的线性插值法效果比较差。这里需要模型同时捕捉时序数据的季节性和总体趋势性,进而对数据的演变模式更好的拟合,实现缺失值数据的补充。

    除了这些统计方法, 一般来说每个领域里面缺失值的填补还要借鉴专业知识来判断。比如以国家军费缺失数据为例,如果你知道因为战乱带来的缺失。那么战时数据比和平年代数据就更合适,很简单就近填补。

    机器学习填充

    b

    随着计算能力的大幅提升,现今许多的场景下的时间序列补缺都采用了机器学习的方式,常见的方法包括基于最近邻方法(KNN),循环神经网络(RNN),随机森林和矩阵分解的缺失值填充算法。

    有监督数据填充

    这类的方法的本质是以缺失点附近的数据作为特征,预测缺失点的数据,通过海量的历史数据中挖掘相似的变化模型,从而进行更精准的数据填充。包括:

    • KNN:找到缺失点附近数据最相似的若干个历史数据点,对缺失值进行填补

    • RNN:通过循环神经网络拟合时序数据的变化趋势,对缺失数据进行填补。这里一般多使用双向RNN

    • 随机森林:这里以缺失点附近的数据作为特征,缺失数据作为要预测的值,在海量数据中训练一个高拟合随机树,对缺失点进行预测。

    • 时序生成:近些年随着生成对抗网络(GAN)的兴起,许多方法开始尝试做时间序列的生成,通过生成模型捕捉时间序列的分布特征,对时序数据进行再生成,进而填补数据。

    多值插补

    多值插补是近些年兴起的时序数据补缺方法,其主要应用于包括时空数据在内的多维时间序列问题。其补全数据不仅只关注自身的时序演变,同时关注相邻时序,特别是有影响关系的时序指标之间的影响。例如在交通中,某一路段的交通量与其上游、下游路段的交通量直接相关。这类方法依赖于缺失数据不同属性间关系,寻找最类似样本,对于突发情况下的数据丢失,异常数据点(离群点)的补全有更好的适应性。

    • 矩阵分解:不同的时间序列之间往往相互关联,通过矩阵分解等方法学习时序矩阵的整体特征,对时间特性矩阵进行低秩逼近,从而修补缺失数据。该类方法计算复杂度低 , 可以处理较大规模的数据。

    图 | 时序正则化矩阵分解: TRMF[2](NeurIPS 2016)

    • 组合分析:不同学科的数据补缺可能都有默认或者建议的方法,比如社会学或者人口学对于无应答的问卷数据,就是假定用类似用户数据进行填补。很多的场景下的数据填补需要给出填补数据的合理性。面对这样的情况,矩阵分解这类方法难以给出直观的解释。因此,近年来一些方法考虑分析多源时序数据实体之间的外在属性,构建可解释的关联关系,组合多源时序及其关系进行数据的填补。

    图 | 基于社群关系的电力系统时间序列补缺[3](WWW 2019)

    上图所示的WWW 2019的工作,其基于用户的邻里关系,关联不同用户的用电数据,对缺失的数据进行填补。

    03

    开源工具

    开源社区有许多优秀的项目可以帮助我们对缺失数据进行补全。这里简单为大家列举若干热门的项目:

    • https://sklearn.org/modules/generated/sklearn.preprocessing.Imputer.html

    Sklearn实现了多种基于统计方法的缺失数据补全算法

    • https://github.com/amices/mice

    该仓库实现了基于链式方程法的多维时序补缺算法

    • https://github.com/stekhoven/missForest

    该仓库实现了基于随机森林的一种非参数混合类型补缺算法

    • https://github.com/cran/softImpute

    该仓库实现了通过迭代软阈值SVD的完成矩阵进行补缺的算法

    • https://github.com/zjunet/STI

    该仓库实现了基于社群关系进行多源时间序列补缺的算法

    • https://github.com/xinychen/transdim

    该仓库实现了当前主流的基于矩阵分解的时间序列缺失值填充算法和预测算法

    • ...

    04

    总结

    时间序列数据的补缺有很多不同的方法。在进行补缺之前,第一步需要我们对缺失的性质做出判断:如果是Missing at Random还是Missing Not at Random,一般前者删除,后者填充。但是填充不一定能带来更好结果,要先自己根据缺失比例和原因进行判断。

    再者,如果你对数据生成机制很熟悉的情况下,可能一些简单方法就可以实现很好的数据补缺。对于本身纯粹依赖算法,不能给出解释机制的时间序列补缺是不能完全信服的,因为缺失本身表明这些样本信息不足。这里常常需要增加专业知识的判断,因为专业知识判断就相当于额外增补信息。

    参考

    [1] Inci M. Baytas, Cao Xiao, Xi Zhang, Fei Wang, Anil K. Jain, and Jiayu Zhou. Patient Subtyping via Time-Aware LSTM Networks. KDD 2017.

    [2] Yu, H. F., Rao, N., & Dhillon, I. S.Temporal regularized matrix factorization for high-dimensional time series prediction. NeurIPS 2016.

    [3] Zongtao, L; Yang, Y; Wei, H; Zhongyi, T; Ning, L and Fei, W. How Do Your Neighbors Disclose Your Information: Social-Aware Time Series Imputation. WWW 2019

    END

    公众号:AI蜗牛车

    保持谦逊、保持自律、保持进步

    个人微信

    备注:昵称+学校/公司+方向

    如果没有备注不拉群!

    拉你进AI蜗牛车交流群

    展开全文
  • 时间序列数据的多元回归No matter what kind of data science project one is assigned to, making sense of the dataset and cleaning it always critical for success. The first step is to understand the data ...

    时间序列数据的多元回归

    No matter what kind of data science project one is assigned to, making sense of the dataset and cleaning it always critical for success. The first step is to understand the data using exploratory data analysis (EDA)as it helps us create the logical approach for solving the business problem. It also allows us to identify the issues like outliers existing in our dataset.

    无论分配给什么样的数据科学项目,理解数据集并清理它对于成功都是至关重要的。 第一步是使用探索性数据分析(EDA)来理解数据,因为它有助于我们创建解决业务问题的逻辑方法。 它还使我们能够识别数据集中存在的异常值之类的问题。

    It is necessary to clean up these issues before starting any analysis because if our data is spewing garbage, so will our analysis. Moreover, the insights from such an analysis won’t tie up with the theoretical or business knowledge of our clients and they may lose confidence in our work.Even if the clients end up making a decision based on such an analysis but the end result will turn out to be wrong and we will be in a lot of trouble! Thus, how well we clean and understand the data has a tremendous impact on the quality of the results.

    在开始任何分析之前,有必要清理这些问题,因为如果我们的数据冒出垃圾,我们的分析也将如此。 此外,这种分析的见解不会与客户的理论或业务知识相结合,他们可能会对我们的工作失去信心,即使客户最终根据这样的分析做出决定,但最终结果也会原来是错的,我们会遇到很多麻烦! 因此,我们清理和理解数据的质量对结果的质量有很大的影响。

    Things get slightly more complicated when we deal with datasets having hidden properties like time series datasets. Time series datasets is a special type of data which is ordered chronologically and needs special attention for handling it’s intrinsic elements like trend and seasonality.

    当我们处理具有隐藏属性(例如时间序列数据集)的数据集时,事情会变得稍微复杂一些。 时间序列数据集是一种特殊的数据类型,按时间顺序排序,在处理其诸如趋势和季节性之类的内在要素时需要特别注意。

    For these reasons, We will be focusing on a step-by-step guideline that walks through the EDA and data cleaning process one can follow while working with multivariate time series data.

    由于这些原因,我们将重点关注逐步指南,该指南逐步介绍了在处理多元时间序列数据时可以遵循的EDA和数据清理过程。

    指数: (Index:)

    • Understanding time series data — The Theory

      了解时间序列数据-理论
    • EDA (inspection, data profiling, visualizations)

      EDA(检查,数据分析,可视化)
    • Data Cleaning (missing data, outlier detection and treatment)

      数据清理(丢失数据,异常检测和处理)
    • Final words

      最后的话

    了解时间序列数据-理论 (Understanding time series data — The Theory)

    One of the best freely available sources to learn about time series analysis is the book ‘Forecasting Principles and Practices’ by Rob J Hyndman and George Athanasopoulos. Both of them are professors at Monash University, Australia and Rob was Editor-in-Chief of the International Journal of Forecasting and a Director of the International Institute of Forecasters from 2005 to 2018. I am going to summarize some of the basic elements of a time series dataset here and for further details, please refer to the mentioned book.

    Rob J Hyndman和George Athanasopoulos所著的“ 预测原理和实践 ”一书是学习时间序列分析的最佳免费资源之一。 他们都是澳大利亚莫纳什大学(Monash University)的教授,罗布(Rob)是2005年至2018年《 国际 预测》杂志的主编和国际预测协会的主任。我将总结一下时间序列数据集,有关更多详细信息,请参阅上述书籍。

    时间序列数据的元素 (Elements of Time Series Data)

    A time series data can be considered a list of numbers, along with information about when those numbers were recorded.Most commonly, a time series is a sequence taken at successive equally spaced points in time.Time series data is composed of four elements:

    时间序列数据可以看作是一个数字列表以及有关记录这些数字的时间的信息。最常见的是,时间序列是在连续的等间隔时间点上获取的序列。时间序列数据由四个元素组成:

    Image for post

    Decomposition techniques help us extract trend, seasonality and error/irregular components of a time series dataset. There are multiple decomposition techniques but we will be focusing on the additive method in this blog in the EDA section.

    分解技术可帮助我们提取时间序列数据集的趋势,季节性和误差/不规则分量。 有多种分解技术,但在本博客的EDA部分中,我们将重点介绍加法。

    平稳性 (Stationarity)

    In the most intuitive sense, a stationary time series is one whose properties do not depend on the time at which the series is observed. Thus, time series with trends, or with seasonality, are not stationary — the trend and seasonality will affect the value of the time series at different times.

    从最直观的意义上说,固定时间序列是一个其属性不依赖于观察该时间的时间的序列。 因此,具有趋势或季节性的时间序列不是固定的-趋势和季节性将影响不同时间的时间序列的值。

    Image for post

    Why is this property important? Stationary processes are easier to model as the way they change is predictable and stable. For most models involving time series, we will find ourselves determining if the data was generated by a stationary process, and if not, then we possibly need to transform it so it has the properties generated by such a process.

    为什么这个属性很重要? 平稳过程更容易模型,因为他们改变的方式是可以预见的,稳定的。 对于大多数涉及时间序列的模型,我们将发现自己确定数据是否是由固定过程生成的,如果不是,则可能需要对其进行转换,使其具有由该过程生成的属性。

    ACF和PACF (ACF and PACF)

    Autocorrelation (ACF) and partial autocorrelation (PACF) plots are heavily used to determine stationarity and time series model parameters.These plots graphically summarize the strength of a relationship with an observation in a time series with observations at prior time steps.

    自相关(ACF)和局部自相关(PACF)图被大量用于确定平稳性和时间序列模型参数,这些图以图形方式总结了时间序列中与观测值的关系强度以及先前时间步长的观测值。

    For ACF plots, we calculate the correlation for time series observations with observations with previous time steps, called lags. The PACF plot is a summary of the relationship between an observation in a time series with observations at prior time steps with the relationships of intervening observations removed. Such time plots for a stationary process will have start having statistically insignificant values within the first few lags.

    对于ACF图,我们计算时间序列观测值与具有先前时间步长的观测值(称为滞后)的相关性。 PACF图是时间序列中的观测值与先前时间步长的观测值之间的关系的摘要,其中删除了中间观测值的关系。 固定过程的此类时间图将在头几个滞后内开始具有统计上无关紧要的值。

    EDA(检查,数据分析,可视化) (EDA (inspection, data profiling, visualizations))

    To share my understanding of the common concepts and techniques on EDA, we will work on the multivariate time series dataset on Hong Kong flat prices along with various macro economics variables. It is a daily dataset starting from 2nd January 2003 and goes on till 26th November 2019. The dataset is available in Kaggle.

    为了分享我对EDA的通用概念和技术的理解,我们将研究香港统一价格的多元时间序列数据集以及各种宏观经济变量。 它是一个每日数据集,从2003年1月2日开始,一直持续到2019年11月26日。该数据集可在Kaggle中获得

    To begin with, we imported necessary python libraries (for this example pandas, numpy,matplotlib etc) and loaded the data set.

    首先,我们导入了必要的python库(例如pandas,numpy,matplotlib等)并加载了数据集。

    查看数据并检查字段类型 (Looking at the data and checking field types)

    Image for post
    • To take a closer look at the data, used “ .head()”function of pandas library which returns first five observations of the data. Similarly “.tail()” returns last five observations of the data set.

      为了更仔细地查看数据,使用了熊猫库的“ .head()”函数,该函数返回数据的前五个观察值。 同样,“。tail()”返回数据集的最后五个观察值。
    • We found out the total number of rows and columns in the data set and data type of each column using “.info” function.Dataset comprises of 4233 observations and 14 columns. All the columns have the correct data format (Date is in datetime format and the rest are float). None of the columns have any null values

      我们使用“ .info”函数找出数据集中的行和列总数以及每一列的数据类型。数据集包含4233个观察值和14列。 所有列均具有正确的数据格式(日期为日期时间格式,其余为浮点型)。 所有列均无空值

    获取摘要统计 (Get summary statistics)

    Image for post
    • Here as you can notice mean value is more than median value of most columns which is represented by 50%(50th percentile) in index column.

      在这里您可以注意到,平均值大于大多数列的中位数,这由索引列中的50%(第50个百分位数)表示。
    • There is notably a big difference between 75th percentile and max values of certain fields like “First hand sales quantity”,”First hand sales amount”,”Total completions” etc.

      第75个百分位数与某些字段(例如“第一手销售数量”,“第一手销售数量”,“完成总数”等)的最大值之间存在很大差异。
    • Thus observations 1 and 2 suggests that there are extreme values-Outliers in our data set. We get the same conclusion once we look at the histograms of all the numeric fields.

      因此,观察值1和2表明在我们的数据集中存在极值-离群值。 查看所有数字字段的直方图,我们将得出相同的结论。
    Image for post

    检查目标变量的时间序列属性 (Checking time series properties of target variable)

    Image for post
    • Target variable/Dependent variable (‘Private Domestic (Price Index)’)has a rising trend

      目标变量/因变量(“国内私有(价格指数)”)呈上升趋势
    • There is a seasonal dip in most years.

      大多数年份都有季节性下降。
    • The variation in 2020 are extreme compared to overall trend

      与整体趋势相比,2020年的变化是极端的
    • The target variable is not stationary

      目标变量不是固定的
    Image for post
    • We have used the additive model for decomposition which assumes that the time series data is structured in the following manner:

      我们已使用加法模型进行分解,该模型假定时间序列数据的结构如下:

      Time Series Data = Trend + Seasonal + Random

      时间序列数据=趋势+季节性+随机

    • We can observe that the seasonal pattern is a regularly repeating pattern and that the trend is upward sloping but it is not a smooth line.

      我们可以观察到,季节性模式是有规律的重复模式,并且趋势呈向上倾斜,但不是一条平滑线。
    Image for post
    Image for post
    • The dataset is highly non-stationary as can be seen from the ACF and PACF plots.

      从ACF和PACF图可以看出,该数据集非常不稳定。

    数据清理(丢失数据,异常值检测和处理) (Data Cleaning (missing data , outliers detection and treatment))

    Data cleaning is the process of identifying and correcting inaccurate records from a dataset along with recognising unreliable or irrelevant parts of the data. We will be focusing on handling missing data and outliers in this blog.

    数据清理是从数据集中识别和纠正不正确记录的过程,同时还要识别数据中不可靠或不相关的部分。 在此博客中,我们将专注于处理丢失的数据和异常值。

    缺失数据 (Missing Data)

    Image for post
    • Our raw data starts from “2003–01–02” and ends at “2019–11–26”. There are 6173 days between “2003–01–02” and “2019–11–26” but the original data only had 4233 record. So a few dates are missing.

      我们的原始数据从“ 2003-01-02”开始,到“ 2019-11-26”结束。 从“ 2003-01-02”到“ 2019-11-26”之间有6173天,但是原始数据只有4233条记录。 因此缺少一些日期。
    • We create a new dataset with all the 6173 dates and join the original dataset with this new dataset. This leads to null values for all the record not available in the original dataset.

      我们使用所有6173个日期创建一个新数据集,并将原始数据集与此新数据集连接。 这将导致原始数据集中不可用的所有记录的空值。
    Image for post
    • We use linear interpolation to fill in the null values

      我们使用线性插值来填充空值

    离群值检测 (Outlier detection)

    Wikipedia definition,

    维基百科的定义,

    In statistics, an outlier is an observation point that is distant from other observations.

    在统计中, 离群 点是与其他观测值相距较远的观测点。

    To ease the discovery of outliers, we have plenty of methods in statistics, but we will only be discussing few basic techniques (interquartile range, standard deviation) here. In a separate blog, I will be focusing on the advanced methods.

    为了简化离群值的发现,我们在统计数据中提供了很多方法,但是在这里我们将只讨论一些基本技术(四分位间距,标准差)。 在另一个博客中,我将重点介绍高级方法。

    Image for post
    • The Interquartile range (IQR) is calculated as the difference between the 75th and the 25th percentiles of the data.The IQR can be used to identify outliers by defining limits on the sample values that are a factor k of the IQR below the 25th percentile or above the 75th percentile. The common value for the factor k is the value 1.5 (which we have used here). A factor k of 3 or more can be used to identify values that are extreme outliers or “far outs”.

      四分位间距(IQR)由数据的第75个百分位数和第25个百分位数之间的差计算得出.IQR可以通过定义样本值的限制来识别异常值,这些样本值是IQR的第25个百分位数以下的因数k或高于第75个百分点。 因子k的公共值为1.5(我们在这里使用)。 3或更大的系数k可用于识别极端离群值或“ 远距 ”值。

    • For the initial values, fields like ‘Total Completion’ have a lot of outliers.

      对于初始值,“总计完成”之类的字段有很多异常值。
    • If we know that the distribution of values in the sample is Gaussian or Gaussian-like, we can use the standard deviation of the sample as a cut-off for identifying outliers.Three standard deviations from the mean is a common cut-off in practice for identifying outliers in a Gaussian or Gaussian-like distribution. For smaller samples of data, perhaps a value of 2 standard deviations (95%) can be used, and for larger samples, perhaps a value of 4 standard deviations (99.9%) can be used.

      如果我们知道样本中值的分布是高斯或类高斯分布,则可以使用样本的标准偏差作为识别异常值的分界点。与平均值的三个标准差是实践中的常见分界点用于识别高斯或高斯分布中的离群值。 对于较小的数据样本,也许可以使用2个标准偏差(95%)的值,对于较大的样本,也许可以使用4个标准偏差(99.9%)的值。

    离群值处理 (Outlier treatment)

    Image for post
    • All the identified outliers are replaced by nulls first.

      首先将所有标识的异常值替换为零。
    • Then the nulls are filled by linear interpolation. In a separate blog, a more robust approach to replace outliers will be discussed.

      然后,通过线性插值填充零点。 在单独的博客中,将讨论一种更健壮的方法来替换异常值。

    最后的话 (Final Words)

    I hope this blog helps the readers make sense of their datasets as well handle some of the issues with messy data. Apart from the that, the readers should now be able to understand the basic elements of a time series dataset as well. But it is important to understand that each dataset comes has its own unique challenges and will need a customized approach to make the data usable.

    我希望这个博客可以帮助读者理解他们的数据集,并解决一些数据混乱的问题。 除此之外,读者现在还应该能够理解时间序列数据集的基本元素。 但重要的是要了解,每个数据集都有其独特的挑战,并且需要一种定制的方法来使数据可用。

    These are some of the questions one should always ask while working with a new dataset:

    这些是在使用新数据集时应始终提出的一些问题:

    How the data is collected, and under what conditions?

    如何收集数据,在什么条件下收集数据?

    What does the data represent?

    数据代表什么?

    What are the issues in the dataset? Are there any outliers?

    数据集中有什么问题? 有离群值吗?

    What methods should be used to clean the data and why?

    应该使用什么方法清除数据,为什么?

    This is a first blog in a series focused on creating a robust forecasting engine based on a multivariate time series data. The next blog will focus on feature engineering and selection. Stay tuned!

    这是该系列中的第一个博客,致力于基于多元时间序列数据创建强大的预测引擎。 下一个博客将重点介绍功能设计和选择。 敬请关注!

    翻译自: https://medium.com/@indraneeldb1993ds/cleaning-and-understanding-multivariate-time-series-data-6554eefbda9c

    时间序列数据的多元回归

    展开全文
  • 14 Redis 保存时间序列数据

    万次阅读 2021-12-06 19:48:54
    14 Redis 保存时间序列数据前言一、时间序列数据的读写特点二、基于 Hash 和 Sorted Set 保存时间序列数据三、基于 RedisTimeSeries 模块保存时间序列数据总结 前言 需求:周期性地统计近万台设备的实时状态,包括...
  • 时间序列是按照一定的时间间隔排列的一组数据,其时间间隔可以是任意的时间单位,如小时、日、周月等。比如,每天某产品的用户数量,每个月的销售额,这些数据形成了以一定时间间隔的数据。 通过对这些时间序列的...
  • 面板数据(PanelData)是将截面数据和时间序列数据综合起来的一种数据类型,该数据具有横截面和时间序列两个维度,当这类数据按两个维度进行排列时,数据都排在一个平面上,与排在一条线上的一维数据有着明显的不同,...
  • 前言数据是驱动科技发展的源泉,平时我们科研中也经常需要在各种开源数据上验证自己模型的效果。那时间序列目前可以使用的开源数据集有哪些呢?本期为大家做一次较为全面的整理汇总。UCR Time ...
  • 使用 TimeGAN 建模和生成时间序列数据

    万次阅读 热门讨论 2021-09-09 09:20:12
    在本文中,我们将研究时间序列数据并探索一种生成合成时间序列数据的方法。 时间序列数据 — 简要概述 时间序列数据与常规表格数据有什么不同呢? 时间序列数据集有一个额外的维度——时间。 我们可以将其视为 3D ...
  • 时间序列数据在许多不同的行业中都非常重要。它在研究、金融行业、制药、社交媒体、网络服务等领域尤为重要。对时间序列数据的分析也变得越来越重要。在分析中有什么比一些好的可视化效果更好呢?没有一些视觉效果,...
  • 导读:序列数据指的是一种按照先后顺序排列的离散数据,这类数据虽然不如图像数据那么直观,但其实在实际生活中非常常见。比如我们平时浏览网站的行为其实就是序列数据,我们会不断地在各种不同的网页链...
  • 开源时间序列数据

    千次阅读 2021-01-21 09:22:19
    数据是驱动科技发展的源泉,我们平常科研中也常常需要在各种开源数据上验证自己模型的效果。时间序列目前可以使用的开源数据集有哪些呢?本期为大家做一次梳理。
  • R语言处理时间序列数据

    千次阅读 2020-07-20 11:54:25
    R语言处理时间序列数据
  • 时间序列数据的特征提取

    千次阅读 2020-04-03 15:56:17
    当你想对时间序列数据做分类时,有两种选择,一个是用时间序列特定的方法,比如说说LSTM模型。另外一种方法就是来从时间序列中提取特征从而将这些特征用在有监督的模型上。在这篇文章中,我们来看下如何使用tsfresh...
  • 什么是时间序列数据

    万次阅读 2018-10-24 16:47:00
     什么是时间序列(Time Series,以下简称时序)数据?从定义上来说,就是一串按时间维度索引的数据。用描述性的语言来解释什么是时序数据,简单的说,就是这类数据描述了某个被测量的主体在一个时间范围内的每个...
  • 使用GAN生成序列数据

    千次阅读 2020-07-05 22:17:17
    点击上方“机器学习与生成对抗网络”,关注"星标"获取有趣、好玩的前沿干货!戳我,查看GAN的系列专辑~!下文转自专知内容不代表公众号立场 【导读】序列数据十分常见...
  • 横截面数据、时间序列数据、面板数据

    万次阅读 多人点赞 2018-03-20 15:12:40
    面板数据(Panel Data)是将“截面数据”和“时间序列数据”综合起来的一种数据类型。具有“横截面”和“时间序列”两个维度,当这类数据按两个维度进行排列时,数据都排在一个平面上,与排在一条线上的一维数据有着...
  • 时间序列数据挖掘

    千次阅读 2018-11-14 12:40:44
    时间序列是一种重要的高维数据类型,它是由客观对象的某个物理量在不同时间点的采样值按照...利用时间序列数据挖掘,可以获得数据中蕴含的与时间相关的有用信息,实现知识的提取[1]。时间序列数据本身所具备的高维...
  • 时间序列数据的采样和画图

    万次阅读 2020-08-14 20:09:11
    时间序列数据的采样和画图时间序列数据的采样和画图引入相关库时间序列数据的采样时间序列数据的画图 时间序列数据的采样和画图 引入相关库 import numpy as np import pandas as pd from pandas import Series,...
  • ​ 时间序列数据有许多定义,它们以不同的方式表示相同的含义。一个简单的定义是时间序列数据包括附加到顺序时间点的数据点。 ​ 时间序列数据的来源是周期性的测量或观测。许多行业都存在时间序列数据。举几个...
  • python时间序列数据预测教程之 arima

    千次阅读 热门讨论 2020-04-14 23:27:01
    目前关于时间序列数据分析预测大致有三种主流方法: 1、ARIMA系列方法 2、facebook开源的Prophet模型 3、LSTM时间序列预测 本系列将用python进行实现并做出总结。 首先,本文项目中所用数据为近一段时间内,间隔30...
  • 时间序列预测 | Python实现Transformer时间序列数据预测 目录时间序列预测 | Python实现Transformer时间序列数据预测基本介绍Transformer设计Transformer预测参考资料 基本介绍 Transformer模型最初由Google团队于...
  • 序列数据类型

    千次阅读 2018-06-11 11:29:45
    简介◆ 序列是一维元素向量,元素类型可以不同◆ 类似数学上的序列◆ 元素间由序号引导,通过下标访问序列的特定元素◆ 主要类型包括:字符串类型、元祖类型、列表类型通用的操作符◆ s + t 连接两个序列s和t◆ s*n...
  • 时间序列数据的处理

    万次阅读 2018-05-30 16:11:15
    摘要: 随着云计算和IoT的发展,时间序列数据的数据量急剧膨胀,高效的分析时间序列数据,使之产生业务价值成为一个热门话题。阿里巴巴数据库事业部的HiTSDB团队为您分享时间序列数据的计算分析的一般方法以及优化...
  • 基于ARIMA实现时间序列数据预测 流程 1.导入数据 2.模型训练 3.模型保存 4.模型预测 5.模型评估 不提供数据,需要自己导入实际需要的数据集,本文图片仅展示ARIMA的预测效果。 数据样式为一维数组如[1 2 3 4 5],...
  • 一图看懂横截面数据、时间序列数据以及面板数据区别:
  • 在现实世界中时间序列数据并不总是完全干净的。有些时间点可能会因缺失值产生数据的空白间隙。机器学习模型是不可能处理这些缺失数据的,所以在我们要在数据分析和清理过程中进行缺失值的填充。本文介绍了如何使用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,588,293
精华内容 635,317
关键字:

序列数据

友情链接: 1.rar