时间序列特征工程

article/2025/8/15 20:05:52

关注微信公众号“时序人”获取更好的阅读体验
在这里插入图片描述

时间序列知识整理系列

  1. 时间序列统计分析
  2. 时间序列聚类
  3. 时间序列预测
  4. 时间序列回归
  5. 时间序列特征工程
  6. 时间序列补缺
  7. 时间序列异常检测

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

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

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

时间序列预处理

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

1. 标准化

标准化是使时间序列中的数值符合平均值为0,标准差为1。具体来说,对于给定的时间序列 { x 1 , x 2 , . . . , x t , . . . , x T } \{x_1, x_2, ..., x_t, ..., x_T\} {x1,x2,...,xt,...,xT},有如下公式:

x t ^ = x t − a v g ( { x t } t T ) s t d ( { x t } t T ) \hat{x_t} = \frac{x_t - \sf{avg}(\{x_t\}_t^T)}{\sf{std}(\{x_t\}_t^T)} xt^=std({xt}tT)xtavg({xt}tT)

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

2 归一化

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

x t ^ = x t − min ⁡ ( { x t } t T ) max ⁡ ( { x t } t T ) − min ⁡ ( { x t } t T ) \hat{x_t} = \frac{x_t - \min(\{x_t\}_t^T)}{\max(\{x_t\}_t^T) - \min(\{x_t\}_t^T)} xt^=max({xt}tT)min({xt}tT)xtmin({xt}tT)

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

x t ^ = x t − a v g ( { x t } t T ) max ⁡ ( { x t } t T ) − min ⁡ ( { x t } t T ) \hat{x_t} = \frac{x_t - \sf{avg}(\{x_t\}_t^T)}{\max(\{x_t\}_t^T) - \min(\{x_t\}_t^T)} xt^=max({xt}tT)min({xt}tT)xtavg({xt}tT)

什么时候用归一化?什么时候用标准化?
  1. 如果对输出结果范围有要求,用归一化。
  2. 如果数据较为稳定,不存在极端的最大最小值,用归一化。
  3. 如果数据存在异常值和较多噪音,用标准化,可以间接通过中心化避免异常值和极端值的影响。

3 定量特征二值化

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

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

时间序列基础特征

1. 统计特征

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

  • 简单特征:均值、标准差、极值、分位数、尖峰个数、缺失个数、偏差等等;
  • 高级特征:自相关性、周期性、趋势(斜率)、频率、随机噪音等等。

2. 维度特征

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

  • 连续型特征:持续时间(比如:单页面浏览时长)、时间间隔(比如:上次购买、距离现在购买的时间)
  • 离散型特征
    • 小时级特征:哪个时间段(0-24)
    • 天级特征:一周中的星期几、工作日、周末、法定假日
    • 星期级特征:一个月中的第几个星期、一年中哪个星期
    • 月份级的特征:第几个月份

3. 窗口特征

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

时间序列转换特征

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

统计转换特征

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

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

Y = X ∗ β + ε , ε ∼ N ( 0 , σ 2 I ) Y = X * \beta + \varepsilon, \varepsilon \sim N(0, \sigma^2 I) Y=Xβ+ε,εN(0,σ2I)

  • 线性性: E ( Y ) E(Y) E(Y)是X中各变量的线性函数
  • 独立性: ε 1 , ε 2 , . . . , ε n \varepsilon_1, \varepsilon_2, ..., \varepsilon_n ε1,ε2,...,εn之间互相独立
  • 方差齐次性: D ( ε 1 ) = D ( ε 2 ) = . . . = D ( ε n ) = σ 2 D(\varepsilon_1) = D(\varepsilon_2) = ... = D(\varepsilon_n) = \sigma^2 D(ε1)=D(ε2)=...=D(εn)=σ2
  • 正态性: ε 1 , ε 2 , . . . , ε n \varepsilon_1, \varepsilon_2, ..., \varepsilon_n ε1,ε2,...,εn服从正态分布

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

  • 对数转换: y i = l n ( x i ) y_i = ln(x_i) yi=ln(xi)
  • 平方根转换: y i = ( x i ) y_i = \sqrt{(x_i)} yi=(xi)
  • 倒数转换: y i = 1 x i y_i = \frac{1}{x_i} yi=xi1
  • 平方根后取倒数: y i = 1 ( x i ) y_i = \frac{1}{\sqrt{(x_i)}} yi=(xi) 1
  • 平方根后再取反正弦: y i = a r c s i n ( ( x I ) ) y_i = arcsin(\sqrt{(x_I)}) yi=arcsin((xI) )
  • 幂转换: y i = x i λ − 1 x ^ λ + 1 y_i = \frac{x_{i}^{\lambda} - 1}{\hat{x}^{\lambda+1}} yi=x^λ+1xiλ1,其中 x ^ = ( ∏ i = 1 n x i ) 1 / n \hat{x} = (\prod_{i=1}^{n}x_i)^{1/n} x^=(i=1nxi)1/n,其中参数 λ ∈ [ − 1.5 , 1 ] \lambda \in [-1.5, 1] λ[1.5,1]

高维空间转换特征

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

格拉姆角场(GAF)
该转化在笛卡尔坐标系下,将一维时间序列转化为极坐标系表示,再使用三角函数生成GAF矩阵。
计算过程:

  • 数值缩放:将笛卡尔坐标系下的时间序列缩放到[0,1]或[-1,1]区间
  • 极坐标转换:使用坐标变换公式,将笛卡尔坐标系序列转化为极坐标系时间序列
  • 角度和/差的三角函数变换:若使用两角和的cos函数则得到GASF,若使用两角差的cos函数则得到GADF
    在这里插入图片描述

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

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

在这里插入图片描述

马尔科夫随机场是随机场的特例,它假设随机场中某一个位置的赋值仅仅与和它相邻的位置的赋值有关,与其不相邻的位置的赋值无关。例如时序片段 X t X_t Xt X t − 1 X_{t-1} Xt1有关,与 X t − 2 X_{t-2} Xt2没有关系。

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

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

在这里插入图片描述

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

降维转换特征

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

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

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

在这里插入图片描述

基于神经网络的“特征工程”

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

在这里插入图片描述

分类特征

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

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

在这里插入图片描述

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

在这里插入图片描述


更多原创内容与系列分享,欢迎关注微信公众号“时序人”获取。
在这里插入图片描述


http://chatgpt.dhexx.cn/article/a6IwJMCy.shtml

相关文章

机器学习——特征工程——交互特征(多项式特征)

一、交互特征定义 两个特征的乘积可以组成一对简单的交互特征,这种相乘关系可以用逻辑操作符AND来类比,它可以表示出由一对条件形成的结果:“该购买行为来自于邮政编码为98121的地区”AND“用户年龄在18和35岁之间”。这种特征在基于决策树的…

特征工程到底是什么?

特征工程是一个过程,它首先在概念上,然后在程序上将一个原始样本转化为特征向量。它包括将一个特征概念化,然后编写程序代码,可能借助一些间接数据,将整个原始样本转化为一个特征。 4.1 为什么要进行特征工程 具体来…

什么是特征工程?如何进行特征工程?

1 特征工程是什么? 有这么一句话在业界广泛流传:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。那特征工程到底是什么呢?顾名思义,其本质是一项工程活动,目的是最大限度地从原始数据中…

特征工程

文章目录 一、特征工程概述二、特征选择1.什么是特征选择2.为什么要做特征选择3.特征选择的基本原则4.特征选择常用的四种方法4.1 方差选择法4.2 相关系数法4.3 递归特征消除法4.4 模型选择法 参考: 三、特征构造1.什么是好?2.常见做法3.两个变量组合而成…

机器学习——特征工程(3分钟的超详细介绍)

目录 1 什么是特征工程?2 数据预处理和特征处理2.1 数据预处理2.2 特征处理 3 特征降维3.0 什么是特征降维?3.1 特征选择3.2 线性降维3.2.1 主成分分析法(PCA)3.2.2 线性判别分析法(LDA) 1 什么是特征工程&…

机器学习之特征工程详解

特征工程是指使用专业的背景知识和技巧处理数据,使得特征能在机器学习算法上发生更好的作用的过程。更好的特征意味着更强的灵活性,只需简单模型就能得到更好的结果,因此,特征工程在机器学习中占有相当重要的地位,可以…

【特征工程】呕心之作——深度了解特征工程

【博客地址】:https://blog.csdn.net/sunyaowu315 【博客大纲地址】:https://blog.csdn.net/sunyaowu315/article/details/82905347 对数据分析、机器学习、数据科学、金融风控等感兴趣的小伙伴,需要数据集、代码、行业报告等各类学习资料&am…

python右键idel消失问题

由于先安装的是的python2.7,后来改用python3.4出现了idel不见的问题: cmd:regedit SystemFileAssociations 新建项: ‘.py’右侧键值不管,‘shell’,edit的键值均为‘Edit with IDLE’即可 将’command‘的键值设置…

分析及解决:虚拟机无法连接虚拟设备idel 0:1 问题

虚拟机无法连接虚拟设备 问题背景解决过程一次性永久解决方式 问题背景 在学习大数据集群开发的时候,按照要求需要配置多个使用Ubuntu操作系统的虚拟机组合集群:master,slave1,slave2。但在我按照要求配置好三个虚拟机后&#xf…

python的使用方法图解_python开发之IDEL(Python GUI)的使用方法图文详解

本文讲述了python开发之IDEL(Python GUI)的使用方法。分享给大家供大家参考,具体如下: 在安装完Python后,我们希望能够运用python GUI来运行一些我们编写的程序,那么Python GUI怎样用呢? 看完这篇blog,也…

python、idel、pycharm的安装使用

python的安装 Python 3的安装 idle的使用 Python安装的过程中默认自动安装了idle,idl是python自带的集成开发环境。 交互环境 如何启动idle 第一种,开始菜单所有应用点击idle 第二种,在搜索栏当中直接输入idle 集成开发环境PyCham…

在anaconda设置Python的IDEL编辑器

在电脑中安装了anaconda(如果没有,可参考博客),anaconda会自动安装Python,可是想要用Python的IDEL编辑器还不知道怎么弄。百度了下终于查找到了具体的设置方法。主要分为两步。 1、修改注册表中信息,将.py…

idel部署的问题

war和war exploded的区别 转载地址:https://blog.csdn.net/xlgen157387/article/details/56498938 在使用IDEA开发项目的时候,部署Tomcat的时候通常会出现下边的情况: 是选择war还是war exploded 这里首先看一下他们两个的区别:…

python开发_tkinter_窗口控件_自己制作的Python IDEL_博主推荐

在了解python中的tkinter模块的时候,你需要了解一些tkinter的相关知识 下面是python的API文档中的一个简单例子: 1 import tkinter as tk2 3 class Application(tk.Frame):4 def __init__(self, masterNone):5 tk.Frame.__init__(self, mast…

解决idel连接mysql数据库报错问题

使用idel来连接mysql数据库时出现: Server returns invalid timezone. Need to set ‘serverTimezone’ property报错信息。 查询相关资料后发现,我们本地使用的idel连接mysql时,使用的时区有问题而导致的报错。 解决方式: 修…

VUE与IDEL解决跨域问题

前言 跨域是浏览器对ajax请求的限制 跨域:指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对js施加的安全限制。(ajax可以) 同源策略:是指协议,域名,端囗都要相同…

Python在IDLE中实现清屏和更改IDEL的shell的背景颜色

文章目录 更改IDEL的shell背景颜色在IDEL中实现清屏 今天才开始打算自学Python,刚装好的Python,使用IDEL的时候,发现白色的背景是在很闪眼睛,属实顶不住,然后就去问度娘,找到了以下的更改IDEL中的背景颜色&…

python的idel下添加清屏功能

第一步:下载文件ClearWindow.py (该文件可以在文章末尾网盘下载)第二步:找到目录 E:\python\Lib\idlelib (这个目录为python安装路径,比如我的安装路径为e:\python)第三步:将下载好的…

python 中设置IDEL快捷键清屏

1.通过下面这个链接下载到自己电脑的本地https://bugs.python.org/file14303/ClearWindow.py 将这个文本的后缀改为ClearWindow.py拷贝ClearWindow.py文件,放在Python安装目录Python XXX\Lib\idlelib下面(XXX为你的python版本)。记事本打开Py…

idel打开Run Dashboard

前言 在我用RabbitMQ整合SpringCloud的时候,要看运行效果时。发现没有了Run Dashboard。 这时候才想起之前弹过提示,也由于奈何是个英语傻瓜,就没注意,看着提示打眼就关了。害 如下提示弹框 打开直接选择第一个显示Run Dashboar…