Facebook时序工具库 Kats 中文教程(个人首发)

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格式
Facebook时序工具库 Kats 中文教程(个人首发)

4. 更新进度

因为是笔者一个人在做这个工作,随着Kats的功能更新,在后续的更新中难免会出现版本跟不上的问题,笔者这边会尽全力跟上官方的速度,也欢迎各位读者对翻译中出现的问题进行指正(手动respect)。

Version 0.1.0

  • Initial release
上一篇:Java学习笔记 -IO流3:File


下一篇:LE控制器(LE Controller):链路层规范