技能aeon
A

aeon

该技能应用于时间序列机器学习任务,包括分类、回归、聚类、预测、异常检测、分割和相似性搜索。在处理时间数据、序列模式或需要超出标准机器学习方法的专用算法的时间索引观测时应使用。尤其适合使用与 scikit-learn 兼容的 API 进行单变量和多变量时间序列分析。

Aeon - 时间序列机器学习 Python 工具箱

技能概述

Aeon 是一个与 scikit-learn 兼容的 Python 时间序列机器学习工具箱,提供分类、回归、聚类、预测、异常检测、分割、相似性搜索等完整算法库,使用统一的估计器 API 简化时序数据建模。

适用场景

1. 时序数据分类与预测

当需要从时间序列数据中识别类别模式或预测未来值时,Aeon 提供从快速原型到高精度的多种算法选择。无论是传感器数据分类、股票趋势预测,还是用户行为模式识别,都可以使用 MiniRocket、HIVECOTEV2 等算法快速构建模型。

2. 异常检测与模式发现

在工业设备监控、金融欺诈检测、IT 系统监控等场景中,Aeon 的异常检测模块能识别时间序列中的异常模式和离群点。同时,相似性搜索功能可以发现重复出现的 motifs(模式)和罕见的 discords(异常子序列)。

3. 时序特征工程与聚类分析

需要将时间序列转换为特征向量供传统机器学习使用时,可以使用 ROCKET 或 Catch22 进行特征提取。对于无标签的时序数据,TimeSeriesKMeans 等聚类算法能按相似性对序列进行分组。

核心功能

1. 时间序列分类

提供从轻量级到高精度的完整分类算法谱系。快速原型可选用 MiniRocketClassifier(速度与性能平衡),追求最高精度可使用 HIVECOTEV2 或 InceptionTimeClassifier,需要模型可解释性时可选择 ShapeletTransformClassifier。所有分类器都支持单变量和多变量时间序列。

2. 时间序列预测

支持多步时间序列预测,包括基础方法(NaiveForecaster)、统计模型(ARIMA、AutoETS)和深度学习架构(TCNForecaster)。注意:预测模块在 aeon 1.x 中仍为实验性质,接口可能在次要版本间变化。

3. 距离度量与相似性分析

提供专为时间序列设计的距离度量,包括弹性度量(DTW、WDTW、MSM 等)和锁步度量(欧氏、曼哈顿距离)。这些距离度量可与 KNN 分类器配合使用,也可用于相似性搜索和聚类分析。DTW 及其变体特别适用于处理时间对齐问题的序列。

常见问题

aeon 和 sktime 有什么区别?

Aeon 是从 sktime 项目演变而来的独立工具箱。主要区别在于:aeon 使用 1.x 版本号体系,重构了预测和变换模块的 API。如果你的代码基于 sktime 或 aeon 0.x,导入路径可能需要更新(如预测模块现在使用 from aeon.forecasting 而非旧路径)。建议在项目中固定 aeon 版本(如 aeon>=1.4,<2)以确保稳定性。

时间序列分类应该选择哪个算法?

算法选择取决于数据规模、精度要求和计算资源:

  • 快速原型:MiniRocketClassifier - 训练快、性能好
  • 最高精度:HIVECOTEV2(传统方法)、InceptionTimeClassifier(深度学习)
  • 小样本数据:KNeighborsTimeSeriesClassifier + DTW 距离
  • 需要可解释性:ShapeletTransformClassifier、Catch22Classifier
  • 特征工程:先使用 RocketTransformer 提取特征,再用传统 ML 分类器

如何处理时间序列中的缺失值?

Aeon 提供了 SimpleImputer 用于处理缺失值。建议在分析前先进行数据预处理:

from aeon.transformations.collection import SimpleImputer
imputer = SimpleImputer(strategy='mean')
X_train = imputer.fit_transform(X_train)

大多数算法还会受益于 Z-normalization(标准化),可以使用 Normalizer 进行归一化处理。数据格式方面,集合数据使用 (n_cases, n_channels, n_timepoints) 形状,单序列使用 (n_channels, n_timepoints) 形状。

时间序列预测支持多步预测吗?

是的,支持多步预测。使用时需在构造函数中设置 prediction_horizon 参数,然后调用 predict 或 iterative_forecast 方法。注意预测模块属于实验性功能,建议生产环境优先使用稳定的分类、回归、聚类、距离和变换模块。如需深度学习预测器,需要安装 aeon[all_extras] 额外依赖。

小样本时间序列数据适合用什么算法?

对于小样本数据,推荐使用基于距离的方法:KNeighborsTimeSeriesClassifier 配合 DTW 或 WDTW 距离度量。避免使用深度学习方法(如 InceptionTimeClassifier),因为它们需要大量数据才能训练有效。另一个选择是使用特征提取(如 Catch22)将时序转换为特征,再用传统 ML 算法分类,这样在小样本上表现更稳定。