干货 :时间序列特征工程

前几次的分享,我们了解了时间序列分析的基础方法以及预测方法。在使用这些方法之前,一般需要我们对原始时序做一定的处理,抽取若干特征;再者,为了更充分了解时间序列,我们也需要挖掘时间序列的特征以获得可解释的信息。那么,我们如何进行时间序列的特征工程呢?

时间序列的特征工程大体上分为:基础特征、转换特征、分类特征这三大类,涉及统计分析、机器学习、深度学习等多个领域。这里要注意的是,特征工程技巧是一方面,更重要的是看实际问题背景,不同问题有不同问题适合的方法,甚至需要为其量身打造提取特征的方法,关键在于先自己尝试去分析这个问题,将想到的特征用算法实现并有效,那这也是一次成功的特征工程。

干货 :时间序列特征工程_第1张图片

图 | 时间序列基础特征构造

那么,了解并掌握基本的时序特征分析方法,将对我们分析时间序列有很大的帮助。我们可以从哪些方面来分析时序的特征呢?本文就这个话题整理有关领域的工作,供大家阅读。

01

时间序列预处理

在正式讲时间序列特征工程之前,我们先聊一聊时间序列的预处理。一般来说,真实世界的时间序列常常取值范围多样,长短不一,形态各异。如果要做统一的分析,需要我们进行初步的处理,将时间序列整合到统一的范畴下,进行分析。这里基本的方法有:标准化、归一化、定量特征二值化

/标准化

标准化是使时间序列中的数值符合平均值为0,标准差为1。具体来说,对于给定的时间序列,有如下公式:

 

标准化的目标是将原始数据分布转换为标准正态分布,它和整体样本分布有关,每个样本点都能对标准化产生影响。这里,如果只考虑将均值缩放到0,不考虑标准差的话,为数据中心化处理。

/归一化

归一化是把数据变成区间 [0, 1] 或  [-1, 1] 其之间的小数,其主要是为了数据处理方便而提出来的。把数据映射到[0, 1]范围之内进行处理,可以更加便捷快速。具体公式如下:

归一化是将样本的特征值转换到同一范围(量纲)下,把数据映射到 [0,1] 或者 [-1, 1] 区间内,它仅由变量的极值所决定。这里也可以将源数据减去均值,进行平均归一化:

什么时候用归一化?什么时候用标准化?

  1. 如果对输出结果范围有要求,用归一化。

  2. 如果数据较为稳定,不存在极端的最大最小值,用归一化。

  3. 如果数据存在异常值和较多噪音,用标准化,可以间接通过中心化避免异常值和极端值的影响。

/定量特征二值化

如果不需要数据的连续信息,只需要对定量的特征进行“好与坏”的划分,我们可以使用定量特征二值化来剔除冗余信息。举个例子,银行对5名客户的征信进行打分,分别为50,60,70,80,90。现在,我们不在乎一个人的征信多少分,只在乎他的征信好与坏(如大于90为好,低于90就不好);再比如学生成绩,大于60及格,小于60就不及格。这种“好与坏”、“及格与不及格”的关系可以转化为0-1变量,这就是二值化。变化方式如下所示:

自然的,我们也可以设计更多的规则,进行多值化的处理。

02

时间序列基础特征

/统计特征

对时间序列进行统计分析是最容易想到的特征提取方法,这里包括的特征有:

  • 简单特征:均值、标准差、极值、分位数、尖峰个数、缺失个数、偏差等等;

  • 高级特征:自相关性、周期性、趋势(斜率)、频率、随机噪音等等。

/维度特征

维度特征是提取时间序列在时间维度上的信息,包括:

  • 连续型特征:持续时间(比如:单页面浏览时长)、时间间隔(比如:上次购买、距离现在购买的时间)

  • 离散型特征

    • 小时级特征:哪个时间段(0-24)

    • 天级特征:一周中的星期几、工作日、周末、法定假日

    • 星期级特征:一个月中的第几个星期、一年中哪个星期

    • 月份级的特征:第几个月份

    • ...

/窗口特征

将时间序列在时间轴上划分窗口是一个常用且有效的方法,包括滑动窗口(根据指定的单位长度来框住时间序列,每次滑动一个单位),与滚动窗口(根据指定的单位长度来框住时间序列,每次滑动窗口长度的多个单位)。窗口分析对平滑噪声或粗糙的数据非常有用,比如移动平均法等,这种方式结合基础的统计方法,即按照时间的顺序对每一个时间段的数据进行统计,从而可以得到每个时间段内目标所体现的特征,进而从连续的时间片段中,通过对同一特征在不同时间维度下的分析,得到数据整体的变化趋势。

干货 :时间序列特征工程_第2张图片

图 | 时间序列滑动窗口

03

时间序列转换特征

我们对时序数据进行分析的时候,常常会发现数据中存在一些问题,使得不能满足一些分析方法的要求(比如:正态分布、平稳性等),其常常需要我们使用一些变换方法对数据进行转换;另一方面,人工的特征分析方法局限于人的观察经验,许多高维且隐秘的特征单单靠人力难以发现。因此,许多工作尝试对时序数据进行转换,从而捕捉更多的特征。

/统计转换特征

1964年提出的Box-Cox变换可以使得线性回归模型满足线性性独立性方差齐次性正态性的同时又不丢失信息,其变换的目标有两个:一个是变换后,可以一定程度上减小不可观测的误差和预测变量的相关性。主要操作是使得变换后的因变量与回归自变量具有线性相依关系,误差也服从正态分布,误差各分量是等方差且相互独立。第二个是用这个变换来使得因变量获得一些性质,比如在时间序列分析中的平稳性,或者使得因变量分布为正态分布。

在做线性回归的过程中,一般线性模型假定的前提是

  • 线性性:E(Y)是X中各变量的线性函数

  • 独立性:之间互相独立

  • 方差齐次性:

  • 正态性:服从正态分布

通过各种数据转函数将非正态分布的数据转换为正态分布,例如原始值为,转换后为,常用的几种转换方式为:

  • 对数转换:

  • 平方根转换:

  • 倒数转换:

  • 平方根后取倒数:

  • 平方根后再取反正弦:

  • 幂转换:,其中,其中参数

    /高维空间转换特征

    高维空间转换特征直白点说就是把一维的时序转化到高维。这个高维可能是二维(例如图片),或者更高维(例如相空间重构)。这种转换可以使得时序的信息被放大,从而暴露更多的隐藏信息。同时,这种方法增加了数据分析的计算量,一般不适用于大规模的时序分析。

    01 格拉姆角场(GAF)

    该转化在笛卡尔坐标系下,将一维时间序列转化为极坐标系表示,再使用三角函数生成GAF矩阵。

    计算过程:

    干货 :时间序列特征工程_第3张图片

    02 马尔科夫随机场(MRF)

    MRF的基本思想是将时间序列的值状态化,然后计算时序的转化概率,其构建的是一个概率图(Graph),一种无向图的生成模型,主要用于定义概率分布函数。

    这里用到了时序窗口分析方法先构建随机场。随机场是由若干个位置组成的整体,当给每一个位置中按照某种分布随机赋予一个值之后,其全体就叫做随机场。举个例子,假如时序划分片段,所有的片段聚成若干的状态,将时序映射回这些状态上,我们便得到了一个随机场。有关这个例子可以参考文章《AAAI 2020 | 时序转化为图用于可解释可推理的异常检测》

    干货 :时间序列特征工程_第4张图片

    马尔科夫随机场是随机场的特例,它假设随机场中某一个位置的赋值仅仅与和它相邻的位置的赋值有关,与其不相邻的位置的赋值无关。例如时序片段与有关,与没有关系。

    构建马尔科夫随机场,可以更清晰的展现时序分布的转化过程,捕捉更精确的分布变化信息。

    03 时频分析

    时频分析是一类标准方法,常用在通信领域信号分析中,包括傅里叶变换,短时傅里叶变换,小波变换等,逐步拟合更泛化的时间序列。

    干货 :时间序列特征工程_第5张图片

    傅里叶变换是一种线性的积分变换,常在将信号在时域(或空域)和频域之间变换时使用。其主要处理平稳的时间序列。当时序数据非平稳时,一般的傅里叶变换便不再适用,这里便有了短时傅里叶变换方法,其主要通过窗口分析,把整个时域过程分解成无数个等长的小过程,每个小过程近似平稳,再傅里叶变换,就知道在哪个时间点上出现了什么频率。然而,我们无法保证所有等长的窗口都是平稳的,手动调整窗口的宽窄成本大,耗费人力。小波分解尝试解决这个问题,其直接把傅里叶变换的基换了——将无限长的三角函数基换成了有限长的会衰减的小波基。这样不仅能够获取频率,还可以定位到时间。

    /降维转换特征

    与高维空间转换特征相反,提取时间序列的降维特征常出现在多维时间序列分析方面,其主要是更快捕捉复杂时间序列中的主要特征,提高分析效率与速度,包括主成分分析(PCA),tSNE,张量分解等等,可以帮助我们从相关因素的角度来理解时间序列。

    主成分分析是一种分析、简化数据集的技术。其通过保留低阶主成分,忽略高阶主成分做到的。这样低阶成分往往能够保留住数据的最重要方面。但这也不是一定的,要视具体应用而定。更多可以参考《主成分分析》

    张量分解从本质上来说是矩阵分解的高阶泛化,常出现在推荐系统中。在实际应用中,特征张量往往是一个稀疏矩阵,即很多位置上的元素是空缺的,或者说根本不存在。举个例子,如果有10000个用户,同时存在10000部电影,我们以此构造一个用户评分行为序列的张量,这里不经想问:难道每个用户都要把每部电影都看一遍才知道用户的偏好吗?其实不是,我们只需要知道每个用户仅有的一些评分就可以利用矩阵分解来估计用户的偏好,并最终推荐用户可能喜欢的电影。

    干货 :时间序列特征工程_第6张图片

    /基于神经网络的特征工程

    还有一种转换特征便是通过神经网络的方式自抽取特征表达。这种方式通常特征的解释性差,但效果好。一般来说,训练好的网络中间层输出可以被当做特征,例如自编码器模型 “Encoder-Decoder”,如果输入输出是时间序列的话,Encoder的输出可以当做一个输入被“压缩”的向量,那么当网络效果得还不错的时候,可以简单看做这个向量具备了这个时序的特征。

    干货 :时间序列特征工程_第7张图片

    • 数值缩放:将笛卡尔坐标系下的时间序列缩放到[0,1]或[-1,1]区间

    • 极坐标转换:使用坐标变换公式,将笛卡尔坐标系序列转化为极坐标系时间序列

    • 角度和/差的三角函数变换:若使用两角和的cos函数则得到GASF,若使用两角差的cos函数则得到GADF

04

时间序列分类特征

分类特征一般结合具体的任务,比如时序预测,时序分类等,常常有标签(Label)信息来引导,其分析的特征也为具体的任务所服务,是一类常用的特征分析方法,一般通过机器学习中的有监督方式进行抽取。

/字典特征(BoP)

字典方法旨在将时间序列通过变换,找到划分的阈值,进而将每个时序实值划分开,对应到某个字母表中。其通过滑动窗提取不同“单词”的出现频率,作为分类依据。这种方法的优势在于速度很快,而且抗噪效果好,缺点在于会损失很多有效的时序信息,只能进行粗粒度的时序分类分析。

干货 :时间序列特征工程_第8张图片

/形态特征(Shapelet)

形态方法旨在捕捉时间序列分类任务中作为分类依据的有代表性的子序列形状。2012年提出的Shapelet方法就是搜索这些候选的子序列形状以找到分类的依据,因为在真实世界中的时间序列往往存在有特征明显的形状,例如心电图数据一次正常心跳简化一下就是前后两个小的峰中间加一个高峰,那么如果其中缺了一块形状的话,可能就是作为鉴别异常心跳的依据。

干货 :时间序列特征工程_第9张图片

05

写在最后

本次为大家整理总结了时间序列的特征工程方法。相信各位读者通过这篇文章能初步了解时间序列的特征分析方法。应用这些方法你可以尝试驾驭不同场景下的时序分析,做到“心中有数,胸有成竹”。

我们目前所接触到的时间序列都是完整的,但在真实场景中,由于采集能力或网络传输的原因,常常会有数据缺失,断点的情况。我们如何处理这些质量欠佳的时间序列呢?下一次分享将为大家解答。欢迎大家持续关注并转载我们的系列文章。

文 | Vachel  编辑 | Sucie

转自:时序人 微信公众号

END

版权声明:本号内容部分来自互联网,转载请注明原文链接和作者,如有侵权或出处有误请和我们联系。


合作请加QQ:365242293  

数据分析(ID : ecshujufenxi )互联网科技与数据圈自己的微信,也是WeMedia自媒体联盟成员之一,WeMedia联盟覆盖5000万人群。

你可能感兴趣的:(python,机器学习,人工智能,数据分析,深度学习)