统计 | 深度学习 | 神经架构搜索
:dizzy: 易用、强大且统一的全流程自动化时间序列工具包。支持预测、分类、回归和异常检测。
我们正在招聘!
各位朋友,我们在北京为热衷于AutoML/NAS的专业人士和学生提供富有挑战性的机会。加入DataCanvas吧!请将您的简历发送至yangjian@zetyun.com。(申请截止日期:待定。)
概述
HyperTS是一个提供端到端时间序列(TS)分析工具包的Python库。它涵盖了TS的完整且灵活的AutoML工作流程,包括数据清洗、预处理、特征工程、模型选择、超参数优化、结果评估和可视化。
多模式驱动、轻重结合是HyperTS的突出特点。因此,统计模型(STATS)、深度学习(DL)和神经架构搜索(NAS)可以任意切换以获得强大的TS估计器。
作为一个易用且门槛较低的API,用户可以在简单运行实验后获得模型,然后执行.predict()
、.predict_proba()
、.evaluate()
、.plot()
进行各种时间序列分析。
安装
注意:
- HyperTS需要Prophet,在使用pip安装HyperTS之前,请先从conda安装Prophet。
- Tensorflow是HyperTS的可选依赖项,如果使用DL和NAS模式,请安装它。
HyperTS可在Pypi上获得,可以通过pip安装:
pip install hyperts
您也可以通过conda-forge频道从conda安装HyperTS:
conda install -c conda-forge hyperts
如果您想要最新版本,可以直接从github安装:
git clone git@github.com:DataCanvasIO/HyperTS.git
cd HyperTS
pip install -e .
pip install tensorflow #可选,推荐版本:>=2.0.0,<=2.10.0
更多安装提示,请参见安装。
教程
示例
时间序列预测
用户可以通过make_experiment()
快速创建并run()
一个实验,其中train_data
和task
是必需的输入参数。在以下预测示例中,我们将实验定义为多变量预测task
,并使用统计模型(stat mode
)。此外,必需参数timestamp
和covariates
(如果有)也应在实验中定义。
from hyperts import make_experiment
from hyperts.datasets import load_network_traffic
from sklearn.model_selection import train_test_split
data = load_network_traffic()
train_data, test_data = train_test_split(data, test_size=0.2, shuffle=False)
model = make_experiment(train_data.copy(),
task='multivariate-forecast',
mode='stats',
timestamp='TimeStamp',
covariates=['HourSin', 'WeekCos', 'CBWD']).run()
X_test, y_test = model.split_X_y(test_data.copy())
y_pred = model.predict(X_test)
scores = model.evaluate(y_test, y_pred)
model.plot(forecast=y_pred, actual=test_data)
时间序列分类(点击展开)
from hyperts import make_experiment
from hyperts.datasets import load_basic_motions
from sklearn.metrics import f1_score
from sklearn.model_selection import train_test_split
data = load_basic_motions()
train_data, test_data = train_test_split(data, test_size=0.2)
model = make_experiment(train_data.copy(),
task='classification',
mode='dl',
tf_gpu_usage_strategy=1,
reward_metric='accuracy',
max_trials=30,
early_stopping_rounds=10).run()
X_test, y_test = model.split_X_y(test_data.copy())
y_pred = model.predict(X_test)
y_proba = model.predict_proba(X_test)
scores = model.evaluate(y_test, y_pred, y_proba=y_proba, metrics=['accuracy', 'auc', f1_score])
print(scores)
时间序列异常检测(点击展开)
from hyperts import make_experiment
from hyperts.datasets import load_real_known_cause_dataset
from sklearn.model_selection import train_test_split
data = load_real_known_cause_dataset()
ground_truth = data.pop('anomaly')
detection_length = 15000
train_data, test_data = train_test_split(data, test_size=detection_length, shuffle=False)
X_test, _ = model.split_X_y(test_data.copy()) y_test = ground_truth.iloc[-detection_length:]
y_pred = model.predict(X_test) y_proba = model.predict_proba(X_test)
scores = model.evaluate(y_test, y_pred, y_proba=y_proba)
model.plot(y_pred, actual=test_data, history=train_data, interactive=False)
</details>
<details>
<summary>时间序列元特征提取(点击展开)</summary>
```python
from hyperts.toolbox import metafeatures_from_timeseries
from hyperts.datasets import load_random_univariate_forecast_dataset
data = load_random_univariate_forecast_dataset()
metafeatures = metafeatures_from_timeseries(x=data, timestamp='ds', scale_ts=True)
更详细的指南: 示例。
主要特性
HyperTS 支持以下特性:
多任务支持: 时间序列预测、分类、回归和异常检测。
多模式支持: 大量时间序列模型集合,包括统计模型(Prophet、ARIMA、VAR、iForest等)、深度学习模型(DeepAR、GRU、LSTNet、NBeats、VAE等)和神经架构搜索。
多变量支持: 从单变量到多变量时间序列。
协变量支持: 深度学习模型支持将协变量作为输入特征用于时间序列预测。
概率区间支持: 时间序列预测可视化可以显示置信区间。
多样化预处理: 异常值裁剪、缺失值填充、序列平滑、归一化等。
丰富的指标: 各种性能指标用于评估结果和指导模型优化,包括MSE、SMAPE、准确率、F1分数等。
强大的搜索策略: 采用网格搜索、蒙特卡洛树搜索、进化算法结合元学习器,实现强大有效的时间序列流水线。
集成: 精炼贪婪集成将最强大的模型粘合在一起。
交叉验证: 多种时间序列交叉验证策略确保泛化能力。
交流
HyperTS 相关项目
- Hypernets:一个通用的自动机器学习(AutoML)框架。
- HyperGBM:一个集成了各种GBM模型的全流程AutoML工具。
- HyperDT/DeepTables:用于表格数据的AutoDL工具。
- HyperKeras:基于Tensorflow和Keras的神经架构搜索和超参数优化AutoDL工具。
- HyperBoard:Hypernets的可视化工具。
- Cooka:轻量级交互式AutoML系统。
引用
如果您在研究中使用了HyperTS,请按以下方式引用我们:
Xiaojing Zhang,Haifeng Wu,Jian Yang. HyperTS: A Full-Pipeline Automated Time Series Analysis Toolkit. https://github.com/DataCanvasIO/HyperTS. 2022. Version 0.2.x.
BibTex格式:
@misc{hyperts,
author={Xiaojing Zhang,Haifeng Wu,Jian Yang.},
title={{HyperTS}: { A Full-Pipeline Automated Time Series Analysis Toolkit}},
howpublished={https://github.com/DataCanvasIO/HyperTS},
note={Version 0.2.x},
year={2022}
}
DataCanvas
HyperTS是由DataCanvas创建的开源项目。