0


时间序列特征提取:18 种高效工具库及其应用分析

时间序列特征提取是数据科学工作流程中的关键环节,能够将原始时间序列数据转化为具有分析价值的特征表示。本文详细介绍 18 种专业的 Python 库,这些库可用于从时间序列数据中提取关键特征,支持数据科学家进行更深入的分析与建模。

时间序列特征提取的理论基础与价值

时间序列特征是对时间序列数据的统计量化表示,例如均值、方差、季节强度等指标。特征提取在时间序列分析中具有多重价值:

首先,特征提取提供了统一的数据表示方法。不同时间序列可能具有不同长度和采样频率,通过将其转换为固定维度的特征向量,可实现降维处理并使不同序列间的比较更加标准化和有意义。

其次,提取的特征具有较高的可解释性。通过诸如季节性强度、趋势变化率等指标,分析人员能够快速理解时间序列的基本结构和动态特性,而这些洞察往往难以直接从原始数据点中获取。

第三,精心设计的特征可显著提升模型性能。在聚类、分类或预测等多种机器学习任务中,良好的特征工程通常比复杂的模型架构更能提高最终效果。

鉴于时间序列特征提取的重要性,学术界和工业界开发了众多专业框架。下文将详细介绍 18 个基于 Python 的框架,这些框架涵盖了通用特征提取以及针对特定领域(如医疗健康、金融)和特定任务(如预测、异常检测)的专业化特征。

以下框架按功能特点进行介绍,而非按重要性排序。

1、 tsfeatures

tsfeatures 是时间序列特征提取领域的开创性框架,提供了丰富的特征集,包括基于自相关函数的特征、分解统计特征、熵测量以及平稳性检验等。

该框架最初设计用于预测模型选择,特别是在组合预测模型方面表现突出。基于 tsfeatures 开发的 FFORMA(特征型预测模型平均)方法在著名的 M4 预测竞赛中获得第二名的优异成绩,验证了其特征提取的有效性。

tsfeatures 最初在 R 语言环境中开发,后由 Nixtla 团队实现了同名的 Python 版本。Python 版本与 Nixtla 的时间序列分析生态系统实现了良好集成,提供了一致的用户体验。对于 R 用户,feasts 包提供了 tsfeatures 与 tsibble 和 tidyverse 的集成,并扩展了额外功能。

资源链接:https://github.com/Nixtla/tsfeatures

2、 tsfresh

tsfresh 是一个综合性的时间序列特征提取框架,其核心优势在于能自动计算数百种特征,并通过统计检验方法筛选出最相关且非冗余的特征子集。

该框架与 scikit-learn 生态系统完全兼容,可无缝集成到机器学习工作流中。此外,tsfresh 支持用户自定义特征,允许研究人员将领域知识融入特征工程流程中,从而提高模型的适应性和精确度。

资源链接:https://tsfresh.readthedocs.io/en/latest/index.html

3、 tsfel

tsfel(时间序列特征提取库)是另一个专业的时间序列特征提取 Python 库,提供了全面的特征提取功能。

tsfel 的特征体系分为四个主要类别:统计类特征(如熵测量、基于直方图的特征)、时域特征(如自相关系数)、频域特征(如功率谱密度)以及分形特征(如去趋势波动分析)。这种多维度的特征体系使其能够捕捉时间序列的不同方面。

tsfel 的一个显著优势是其考虑了计算资源约束的场景,特别适用于从嵌入式设备(如可穿戴设备)收集的数据分析。实证研究表明,tsfel 在人类活动识别、康复监测和异常检测等应用中表现出色。研究[1]进一步证实,相较于其他同类工具,tsfel 在计算效率方面具有明显优势。

资源链接:https://github.com/fraunhoferportugal/tsfel

4、 TODS

TODS(时间序列异常检测系统)是一个专为多元时间序列异常检测设计的自动化框架。

除了提供各种异常检测算法外,TODS 还包含了丰富的时间序列预处理和特征提取功能。其特征集涵盖了从基本统计量(如均值、方差)到高级时间序列滤波器(如 Baxter-King 滤波器、Hodrick-Prescott 滤波器)以及小波变换等技术,这些工具能有效识别时间序列中的异常模式。

资源链接:https://tods-doc.github.io/index.html

5、 librosa

librosa 是一个专门用于音乐和音频数据分析的 Python 库,其应用场景特别聚焦于音频信号处理。

从数据科学的角度看,音频信号本质上是一种特殊的时间序列,表示声压随时间的变化。下图展示了一个鼓点节奏逐渐加快的梅尔频谱图:

在音频分析中,特征提取是基础工作,librosa 提供了多种专业特征,包括:

  • 谱质心,用于量化声音的"亮度"
  • 梅尔频率倒谱系数 (MFCC),作为音色的低维表示
  • 色度特征,用于和声分析
  • 过零率,反映信号频率变化特性

这些特征在音频处理中各自捕获不同的声学属性。尽管 librosa 主要针对音频数据,其提供的特征提取方法同样可应用于其他领域的时间序列数据分析。

资源链接:https://librosa.org/doc/main/tutorial.html

6、 mlforecast

mlforecast 是 Nixtla 预测生态系统中的核心组件,提供了基于机器学习算法构建预测模型的完整框架。

该库的特点是提供了系统化的特征工程流程,尤其适用于时间序列预测任务。通过 mlforecast 的 lag_transform功能,用户可以进行基于窗口的特征提取操作,例如简便地构建移动平均特征,该特征能有效概括每个时间点前序列的平均水平,为预测提供重要信息。

资源链接:https://nixtlaverse.nixtla.io/mlforecast/docs/how-to-guides/lag_transforms_guide.html

7、 eeglib

eeglib 是一个专门用于脑电图(EEG)时间序列分析的 Python 库,通过特征提取技术解析神经电生理数据。

考虑到脑电信号的特殊性,eeglib 包含了一系列在其他通用库中不常见的特征提取方法,这些方法特别适用于神经信号分析:

  • Petrosian 和 Higuchi 分形维数,用于量化信号的复杂度
  • Hjorth 参数,描述信号的活动度、移动度和复杂度
  • 去趋势波动分析,测量长程相关性
  • Lempel-Ziv 复杂度,评估信号的随机性

这些特征在癫痫发作检测、睡眠阶段分类和脑机接口等神经科学应用中具有显著价值。

资源链接:https://eeglib.readthedocs.io/en/latest/index.html

8、 pywavelets

PyWavelets 是一个专业的小波变换库,提供了全面的小波分析工具,包括正向和逆向离散小波变换、连续小波变换等多种变换方法。

小波变换是一种先进的信号处理技术,能将时间序列分解为多尺度成分,揭示信号在不同频率和时间尺度上的特性。这种分解可用于提取高信息量的特征,支持下游分类或异常检测任务。研究文献[2]展示了一个实际应用案例,其中基于 Meyer 小波的离散小波分解被用于提取不同频带的相对能量,以预测医院 ICU 中的低血压事件发生。

资源链接:https://pywavelets.readthedocs.io/en/latest/index.html

9、 hctsa

hctsa(高度比较时间序列分析)是一个基于 Matlab 开发的综合时间序列特征提取工具,通过 PYOPY 包可在 Python 环境中使用。

hctsa 的特点是能生成数千种特征类型,包括基于经验模式分解、可见性图、信息论度量等高级特征。这种大规模的特征集虽然在实际应用中可能显得过于庞大,但对于数据科学家探索新颖特征和拓展特征工程思路具有重要参考价值。

资源链接:https://github.com/benfulcher/hctsa

10、 catch22

catch22(CAnonical 时间序列特征)是从 hctsa 中精选出的 22 个时间序列特征子集,这些特征专为时间序列分类任务优化选择。此精简子集在保持可比分类性能的同时,显著提高了计算效率。

catch22 同样基于 Matlab 开发,但已有 Python (pycatch22) 和 R (Rcatch22) 语言的实现,方便不同技术栈的用户使用。

资源链接:https://github.com/DynamicsAndNeuralSystems/catch22

11、 ta-lib

ta-lib 是一个专为金融时间序列技术分析设计的库,包含了数百种技术指标,例如广泛应用的移动平均收敛/发散 (MACD) 和相对强度指数 (RSI) 等。

虽然 ta-lib 主要面向金融领域,但其技术指标和特征提取方法同样适用于其他类型的时间序列分析。ta-lib 中的许多特征专门设计用于应对金融时间序列中常见的高噪声环境,这一特性使其在处理其他领域的噪声数据时也具有应用价值。

资源链接:https://ta-lib.org/functions/

12、 nolds

nolds(动态系统的非线性度量)是一个基于动态系统理论的库,提供了一系列从时间序列中提取非线性特征的工具。

非线性时间序列分析将序列视为复杂系统的表现,这种视角使得可以应用多种动态系统分析技术。nolds 提供的方法包括:

  • Lyapunov 指数,用于量化序列的混沌程度和可预测性
  • 相关维数,评估序列的复杂度和嵌入维度
  • Hurst 指数,测量序列的长期自相关性和持久性

这些非线性特征能捕捉传统线性分析方法难以识别的时间序列模式。

资源链接:https://pypi.org/project/nolds/

13、 scipy

scipy 作为科学计算的基础库,其中包含许多可用于时间序列特征提取的功能模块。除了基本统计函数外,scipy 的信号处理模块提供了丰富的分析工具:

  • 频谱分析功能,通过周期图或频谱图提取频域特征
  • 多种滤波器实现,包括带通、低通或高通滤波器
  • 精确的峰值检测算法,对于基于事件的时间序列分析尤为重要

scipy 的主要优势在于其计算效率(核心组件用 C/C++ 实现)和稳定性。作为一个自 2000 年代初就存在的成熟库,scipy 与其他科学计算生态系统的集成度极高。

资源链接:https://docs.scipy.org/doc/scipy/index.html

14、 statsmodels

statsmodels 虽主要定位于计量经济学和统计建模,但其中的多个模块可有效用于时间序列特征提取。

statsmodels 的时间序列分析(tsa)模块包含了多种高级技术,如季节性分解、平稳性检验、季节性测试和时间序列建模方法。这些功能可用于提取描述时间序列关键属性的特征。值得注意的是,前文提到的一些特征提取框架(如 tsfeatures、tsfel)在内部实现中也使用了 statsmodels 提供的计算功能。

与 scipy 类似,statsmodels 也是一个历经验证的成熟库,其实现稳定可靠,适合用于生产环境。

资源链接:https://www.statsmodels.org/stable/index.html

15、 Featuretools

Featuretools 是一个针对时间数据库和关系数据库的自动化特征工程框架,其核心技术"深度特征合成"能够从输入数据库构建综合特征矩阵。

在时间序列分析方面,Featuretools 包含了多种基于事件的特征提取方法:

  • 时间间隔特征,如自上次特定值或统计量(最大值、最小值等)出现以来的时间
  • 基于计数的指标,如大于特定阈值的连续值数量
  • 时间相关特征,如与节假日的距离(天数)

这类特征在对时间序列中的事件或特殊日期进行建模时(如零售销售分析、用户行为建模)具有重要价值。

资源链接:https://featuretools.alteryx.com/en/stable/index.html

16、 FATS

FATS(时间序列特征分析)是一个专为天文光变曲线数据设计的特征提取框架,针对天体物理学研究中的时间序列分析进行了优化。

虽然 FATS 中的大多数特征最初设计用于区分不同类别的光变曲线,但这些特征同样适用于其他时间序列数据的分析。天文光变曲线数据通常具有不规则采样和多重周期性等特点,因此 FATS 提供的特征集对于具有类似特性的时间序列数据分析具有参考价值。

资源链接:https://isadoranun.github.io/tsfeat/

17、 Cesium

Cesium 是一个集成了时间序列特征提取和建模功能的 Python 库,专注于天文数据分析但具有广泛适用性。

Cesium 提取的特征包括基于 Lomb-Scargle 模型的统计量和节奏度量等。后者能估计下一次观测出现在特定时间范围内(如接下来 10 分钟内)的概率分布,这类特征对于客户到达预测、事件触发建模等应用场景具有重要意义。

资源链接:https://cesium-ml.org/docs/index.html

18、 Kats

Kats 是 Facebook Research 开发的时间序列分析库,其特征提取模块是该库的核心组件之一。

虽然 Kats 的基础特征集与其他特征提取库有相当程度的重叠,但它特别强调了适用于异常检测和短期预测的专门特征。这些包括多种变化点检测方法产生的估计结果,如 CUSUM(累积和控制图)等技术,这些特征能有效识别时间序列中的结构性变化。

资源链接:https://github.com/facebookresearch/Kats

总结

本文综述了 18 个时间序列特征提取库,这些库针对不同领域(如音频分析、医疗健康、金融)和不同任务(如预测、分类、异常检测)提供了专业化的特征提取功能。这些库的多样性反映了时间序列数据的复杂性,以及分析此类数据所需的多元化方法论。

尽管这些框架之间存在功能重叠,但它们也在各自专注的领域提供了独特价值。在实际应用中,数据科学家可以根据具体需求组合使用这些工具。例如,可以使用 tsfel 获取全面的基础特征集,同时结合 nolds 提供的非线性度量来捕捉更复杂的时间序列模式。

作者:Vitor Cerqueira

“时间序列特征提取:18 种高效工具库及其应用分析”的评论:

还没有评论