作者:杰少

时间序列王器-Kats

简介

时间序列分析建模是数据科学和机器学习的一个重要的领域,在电子商务、金融、供应链管理、医学、气象、能源、天文等诸多领域有着广泛的应用。而对于时间序列的分析以及建模目前也有非常多的技术,但相对散乱,本次FaceBook开源了Kats,它是第一个开发标准并连接时间序列分析各个领域的综合Python库,用户可以在这里探索其时间序列数据的基本特征,预测未来值,监视异常,并将其合并到ML模型和pipeline中

在上个月,FaceBook开园了一款新的分析时间序列数据的library--Kats,Kats是以款:

  • 轻量级的、易于使用的、通用的时间序列分析框架;

包括

  • 预测、异常检测、多元分析和特征提取/嵌入。

据我们所知,Kats是第一个用于一般时间序列分析的综合Python库,它提供了经典和高级的时间序列数据建模技术。

Kats

1. Kats的优势

Kats是一个分析时间序列数据的工具箱,特点是:

  • 轻量级;

  • 易于使用;

  • 通用;

可以用来执行时间序列分析。

2. Kats的功能

Kats的核心四大功能包括:

  • 模型预测:Kats提供了一套完整的预测工具,包括10+个单独的预测模型、ensembling、自监督学习(meta-learning)模型、backtesting、超参数调整和经验预测区间。

  • 检测:Kats支持检测时间序列数据的各种模式的功能,包括季节性、异常值、变化点和缓慢的趋势变化检测。

  • 特征提取与嵌入:Kats中的时间序列特征(TSFeature)提取模块可以产生65个具有明确统计定义的特征,这些特征可以应用于大多数机器学习(ML)模型,如分类和回归。

  • 使用的功能:Kats还提供了一组有用的实用程序,例如时间序列模拟器。

代 码

01

预测案例

# !pip install kats
import pandas as pdfrom kats.consts import TimeSeriesData
from kats.models.prophet import ProphetModel, ProphetParams# take `air_passengers` data as an example
air_passengers_df = pd.read_csv("./data/air_passengers.csv",header=0,names=["time", "passengers"],
)
air_passengers_df.head()
time passengers
0 1949-01-01 112
1 1949-02-01 118
2 1949-03-01 132
3 1949-04-01 129
4 1949-05-01 121
# 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")
INFO:fbprophet:Disabling weekly seasonality. Run prophet with weekly_seasonality=True to override this.
INFO:fbprophet:Disabling daily seasonality. Run prophet with daily_seasonality=True to override this.
fcst.tail()
time fcst fcst_lower fcst_upper
25 1963-02-01 504.226854 488.814245 518.102516
26 1963-03-01 585.357522 569.323618 600.734632
27 1963-04-01 563.669453 548.299180 578.251332
28 1963-05-01 586.795969 571.121988 602.562586
29 1963-06-01 668.096474 650.864940 685.632700

02

时间序列检测案例

  • 异常改变点的检测

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()
df_increase.groupby('time')['increase'].first().plot()
change_points
[(TimeSeriesChangePoint(start_time: 2019-01-30 00:00:00, end_time: 2019-01-30 00:00:00, confidence: 1.0),<kats.detectors.cusum_detection.CUSUMMetadata at 0x7fa9449fe910>)]

03

时间序列特征

# Initiate feature extraction class
from kats.tsfeatures.tsfeatures import TsFeatures
# take `air_passengers` data as an example
air_passengers_df = pd.read_csv("./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)
 
features
{'length': 144,'mean': 280.2986111111111,'var': 14291.97333140432,'entropy': 0.4287365561752448,'lumpiness': 3041164.5629058965,'stability': 12303.627266589507,'flat_spots': 2,'hurst': -0.08023291030513455,'std1st_der': 27.206287853461966,'crossing_points': 7,'binarize_mean': 0.4444444444444444,'unitroot_kpss': 0.12847508180149445,'heterogeneity': 126.06450625819339,'histogram_mode': 155.8,'linearity': 0.853638165603188,'trend_strength': 0.9383301875692747,'seasonality_strength': 0.3299338017939569,'spikiness': 111.69732482853489,'peak': 6,'trough': 3,'level_shift_idx': 118,'level_shift_size': 15.599999999999966,'y_acf1': 0.9480473407524915,'y_acf5': 3.392072131604336,'diff1y_acf1': 0.30285525815216935,'diff1y_acf5': 0.2594591065999471,'diff2y_acf1': -0.19100586757092733,'diff2y_acf5': 0.13420736423784568,'y_pacf5': 1.0032882494015292,'diff1y_pacf5': 0.21941234780081417,'diff2y_pacf5': 0.2610103428699484,'seas_acf1': 0.6629043863684492,'seas_pacf1': 0.1561695525558896,'firstmin_ac': 8,'firstzero_ac': 52,'holt_alpha': 0.995070674288148,'holt_beta': 0.0042131109997650676,'hw_alpha': 0.9999999850988388,'hw_beta': 6.860710750514223e-16,'hw_gamma': 1.3205838720422503e-08}

参考文献

  1. https://engineering.fb.com/2021/06/21/open-source/kats/

  2. https://github.com/facebookresearch/Kats

  3. Kats - Time Series Forecasting By Facebook


往期精彩回顾适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑《统计学习方法》的代码复现专辑
AI基础下载机器学习的数学基础专辑温州大学《机器学习课程》视频
本站qq群851320808,加入微信群请扫码:

【机器学习】FaceBook开源全网第一个时序王器--Kats。相关推荐

  1. 【时间序列】FaceBook开源全网第一个时序王器--Kats。

    kaggle竞赛宝典干货 作者:杰少 时间序列王器-Kats 简介 时间序列分析建模是数据科学和机器学习的一个重要的领域,在电子商务.金融.供应链管理.医学.气象.能源.天文等诸多领域有着广泛的应用. ...

  2. 再次出发!FaceBook 开源“一站式服务“时序利器 Kats !

    欢迎关注 ,专注Python.数据分析.数据挖掘.好玩工具! 我相信很多人都听过或者用过 FaceBook 的 Prophet 来解决时间序列问题,前几天我分享了这样一篇文章:太棒了!FaceBook ...

  3. 【时间序列】再次出发!FaceBook 开源一站式服务时序利器 Kats !

    时间序列分析是数据科学中一个非常重要的领域,它主要包含统计分析.检测变化点.异常检测和预测未来趋势.然而,这些时间序列技术通常由不同的库实现.有没有一种方法可以让你在一个库中获得所有这些技术? 答案是 ...

  4. Facebook开源高效图像Transformer,速度、准确率与泛化性能媲美SOTA CNN

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 转自 | 机器之心 将自然语言处理领域主流模型 Transform ...

  5. Facebook开源AI硬件 联手NVIDIA开发人工智能

    Facebook人工智能研究小组(FAIR)计划增加GPU硬件的投资达两倍之多,旨在将机器学习技术扩展到旗下更多的产品里. Facebook的内部设计项目享誉业内,无论是简单地改善新闻推送(News ...

  6. Facebook开源内存数据库Beringei,追求极致压缩率

    2017年2月3日,Facebook宣布将开源他们的高性能时序数据存储引擎Beringer.Beringei是用来解决其内部监控数据存储和查询需求的数据库,其特点是读写速度快,属于内存数据库的一种.本 ...

  7. Github 本周最有趣的 10 款「机器学习」开源项目 | PaperDaily #32

    在碎片化阅读充斥眼球的时代,越来越少的人会去关注每篇论文背后的探索和思考. 在这个栏目里,你会快速 get 每篇精选论文的亮点和痛点,时刻紧跟 AI 前沿成果. 点击本文底部的「阅读原文」即刻加入社区 ...

  8. SLS机器学习介绍(02):时序聚类建模

    文章系列链接 SLS机器学习介绍(01):时序统计建模 SLS机器学习介绍(02):时序聚类建模 SLS机器学习介绍(03):时序异常检测建模 SLS机器学习介绍(04):规则模式挖掘 前言 第一篇文 ...

  9. 别熬夜加班了,Facebook 开源了一款代码推荐神器!| 程序员硬核评测

    近日,科技巨头 Facebook 开源了一款代码到代码的搜索和推荐神器--Aroma,开发者基于此可以轻松找到常见的编码模式而无需手动浏览多个代码片段. 作者 | Celeste Barnaby.Sa ...

最新文章

  1. java写类似百度统计_资讯 | 与百度统计功能类似的产品—360分析系统
  2. 友元实例:友元类及友元函数
  3. 回溯法(深度优先搜索)
  4. 求解LambdaMART的疑惑?
  5. springboot 压测 50并发 线程等待_Spring Boot中三款内嵌容器的使用
  6. 棋盘里的数学(qduoj 记忆化搜索)
  7. 你了解SVN, CVS等版本控制器吗?
  8. 那个盗窃比尔·盖茨、马斯克、巴菲特推特账号,发布诈骗广告的少年被捕了!年仅17岁...
  9. 【java】swing窗口中的JOptionPane类及字符串转其他数据类型的应用
  10. [导入]关于:web.config 的配置说明
  11. 形式语言与自动机 下推自动机
  12. java面试①整体流程
  13. 谷歌生物医学专用翻译_实用技能 | 知云文献翻译
  14. python是一门_人人用Python 篇一:Python是一门人人可掌握的手艺
  15. 实践:加快gradle的构建速度
  16. 考研数学笔记1-常数项级数的审敛法思路
  17. 有卡却显示无服务器,为什么卡一直显示无服务
  18. 正确使用自旋锁、互斥锁
  19. 【网络安全系列】之新型勒索病毒WannaRen疑在国内大规模传播,威力不亚于新冠
  20. 复旦毕业生兼职送外卖,去你的“精神内耗”

热门文章

  1. hdu 5093 二分匹配
  2. 对SqlCommandBuilder类理解
  3. 关于MGS4和XSI
  4. html5相关笔记(一)
  5. 线段树 区间更新模板
  6. 使用Disruptor实现生产者和消费者模型
  7. 牛客网Java刷题知识点之字节缓冲区练习之从A处复制文本文件到B处(BufferedReader、BufferedWriter)、复制文本文件的原理图解...
  8. 20144306《网络对抗》Web基础
  9. XidianOJ 1037 倍流畅序列
  10. sql 2012中获取表的信息,包含字段的描述