Facebook时序工具库 Kats 中文教程
1. Kats是什么?
Kats是Facebook在June 18th刚刚发布的一个专门为了时间序列服务的工具库。它作为一个Toolkit包,提供了四种简易且轻量化的API。
- 预测(封装了10+models,主要是传统的时间序列模型,这些模型有支持ensemble的API,结合时间序列特征的功能甚至可以做meta-learning)
- 检测(官方叫做detection,大致是对时间序列做类似于异常检测,change point detection之类的检测)
- 时间序列特征(API十分简单,可以得到65个时间序列相关的features)
- 模拟(simulator,可以按照某些时序特征比如seasonality去创造时间序列来方便实验)
项目路径:https://github.com/facebookresearch/Kats
2. 我将如何使用Kats
2.1 在Python中安装Kats
Kats 已经上架 PyPI, 你可以使用 pip
进行安装操作.
pip install --upgrade pip
pip install kats
如果你只需要Kats中的小部分功能,你可以安装mini版本的Kats通过:
MINIMAL=1 pip install kats
这将省略许多依赖组建(也就是test_requirements.txt
中的所有)
然而它也将失去许多功能,并且在import kats
的时候会引发warnings. 可以通过setup.py
查看更多详细说明及操作.
2.2 实例
这里我们将提供少数的实例来说明Kats能够提供的部分功能.
2.2.1 预测
使用Prophet
模型来预测air_passengers
数据集.
import pandas as pd
from kats.consts import TimeSeriesData
from kats.models.prophet import ProphetModel, ProphetParams
# take `air_passengers` data as an example
air_passengers_df = pd.read_csv(
"../kats/data/air_passengers.csv",
header=0,
names=["time", "passengers"],
)
# convert to TimeSeriesData object
air_passengers_ts = TimeSeriesData(air_passengers_df)
# create a model param instance
params = ProphetParams(seasonality_mode='multiplicative') # additive mode gives worse results
# create a prophet model instance
m = ProphetModel(air_passengers_ts, params)
# fit model simply by calling m.fit()
m.fit()
# make prediction for next 30 month
fcst = m.predict(steps=30, freq="MS")
2.2.2 推理预测
使用 CUSUM
检测算法模拟数据集.
# import packages
import numpy as np
from kats.consts import TimeSeriesData
from kats.detectors.cusum_detection import CUSUMDetector
# simulate time series with increase
np.random.seed(10)
df_increase = pd.DataFrame(
{
'time': pd.date_range('2019-01-01', '2019-03-01'),
'increase':np.concatenate([np.random.normal(1,0.2,30), np.random.normal(2,0.2,30)]),
}
)
# convert to TimeSeriesData object
timeseries = TimeSeriesData(df_increase)
# run detector and find change points
change_points = CUSUMDetector(timeseries).detector()
2.3 TSFeatures
通过给予的时间序列数据,提取有价值的特征
# Initiate feature extraction class
from kats.tsfeatures.tsfeatures import TsFeatures
# take `air_passengers` data as an example
air_passengers_df = pd.read_csv(
"../kats/data/air_passengers.csv",
header=0,
names=["time", "passengers"],
)
# convert to TimeSeriesData object
air_passengers_ts = TimeSeriesData(air_passengers_df)
# calculate the TsFeatures
features = TsFeatures().transform(air_passengers_ts)
3. 中文教程
项目路径:https://github.com/Fate-Tesstarosa/Kats_CN
跟官方教程文档保持一致,使用的是ipynb格式
4. 更新进度
因为是笔者一个人在做这个工作,随着Kats的功能更新,在后续的更新中难免会出现版本跟不上的问题,笔者这边会尽全力跟上官方的速度,也欢迎各位读者对翻译中出现的问题进行指正(手动respect)。
Version 0.1.0
- Initial release