【时间序列】FaceBook开源全网第一个时序王器--Kats。
kaggle竞赛宝典干货
作者:杰少
时间序列王器-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}
参考文献
https://engineering.fb.com/2021/06/21/open-source/kats/
https://github.com/facebookresearch/Kats
Kats - Time Series Forecasting By Facebook
公众号:AI蜗牛车保持谦逊、保持自律、保持进步个人微信
备注:昵称+学校/公司+方向
如果没有备注不拉群!
拉你进AI蜗牛车交流群
【时间序列】FaceBook开源全网第一个时序王器--Kats。相关推荐
- 【机器学习】FaceBook开源全网第一个时序王器--Kats。
作者:杰少 时间序列王器-Kats 简介 时间序列分析建模是数据科学和机器学习的一个重要的领域,在电子商务.金融.供应链管理.医学.气象.能源.天文等诸多领域有着广泛的应用.而对于时间序列的分析以及建 ...
- 再次出发!FaceBook 开源“一站式服务“时序利器 Kats !
欢迎关注 ,专注Python.数据分析.数据挖掘.好玩工具! 我相信很多人都听过或者用过 FaceBook 的 Prophet 来解决时间序列问题,前几天我分享了这样一篇文章:太棒了!FaceBook ...
- 【时间序列】再次出发!FaceBook 开源一站式服务时序利器 Kats !
时间序列分析是数据科学中一个非常重要的领域,它主要包含统计分析.检测变化点.异常检测和预测未来趋势.然而,这些时间序列技术通常由不同的库实现.有没有一种方法可以让你在一个库中获得所有这些技术? 答案是 ...
- facebook开源的prophet时间序列预测工具---识别多种周期性、趋势性(线性,logistic)、节假日效应,以及部分异常值
facebook开源的prophet时间序列预测工具---识别多种周期性.趋势性(线性,logistic).节假日效应,以及部分异常值 参考文章: (1)facebook开源的prophet时间序列预 ...
- 时序预测 | python实现仿生算法优化LSTM时间序列预测(全网最全仿生算法)
** 时序预测 | python实现仿生算法优化LSTM时间序列预测(全网最全仿生算法) ** 多变量/单变量预测程序 多变量/单变量预测程序 多变量/单变量预测程序 A ABC-LSTM--人工蜂群 ...
- Facebook开源内存数据库Beringei,追求极致压缩率
2017年2月3日,Facebook宣布将开源他们的高性能时序数据存储引擎Beringer.Beringei是用来解决其内部监控数据存储和查询需求的数据库,其特点是读写速度快,属于内存数据库的一种.本 ...
- Facebook开源高效图像Transformer,速度、准确率与泛化性能媲美SOTA CNN
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 转自 | 机器之心 将自然语言处理领域主流模型 Transform ...
- facebook 开源_Facebook开源主管开放
facebook 开源 以下是詹姆斯·皮尔斯 ( James Pearce )的部分抄录 OSCON会话在Facebook上重新启动开源 . 数百年来,开放已胜过封闭-共享已胜过保密. 以一种谦逊的方 ...
- Facebook开源最大规模并行语料,45亿语料,覆盖576种语言对
2020-02-07 16:33 导语:或成为NMT评估标准 雷锋网AI科技评论按:当前自然语言处理中的大多数方法都是数据驱动的,大多数多语言模型(特别是神经机器翻译系统)都需要并行语料库进行训练.大 ...
最新文章
- 2020 年,AI 芯片内存哪家强?
- 【C/C++】 读、写二进制文件经典实例
- SoringMVC-常用注解标签详解(摘抄)
- Anaconda 下libsvm的安装
- python剑指offer面试题_剑指Offer(Python语言)面试题38
- asp.net asp:TextBox控件绑定值后,获取不到新值问题解决方法
- 有量子计算机的山西高能小说,五本大神级高能热血小说,没看过也必定听说过 ,加入书架告别书荒!...
- 2019 最烂密码排行榜大曝光!网友:已中招!
- 两个网口芯片接一个变压器_关于以太网网络变压器的几个问题
- 在Mac OS X上利用Spotlight搜索代码
- Ubuntu E: Sub-process /usr/bin/dpkg returned an error code (1)
- PDF背景怎么添加,如何修改PDF背景
- android java反编译
- Android计算器 (课程设计项目)
- ubuntuQQ、微信安装
- CAD彩色线条直接打印成黑白PDF的办法
- paypal android 教程,android端集成paypal
- 【论文笔记1】von Mises-Fisher Mixture Model-based Deep learning: Application to Face Verification
- php框架列举,列举PHP的Yii 2框架的开发优势
- nexus安装详细过程(附安装包和下载地址)与nexus简介
热门文章
- redis持久化到mysql的方案_redis实现持久化存储的两种方案
- 单例模式的7种写法及其应用场景你都熟悉了吗,快来看看吧
- 自动内存管理(gc),新的思路
- 微信小程序口红项目新手练习Day3
- android手机两年变卡,安卓手机为什么用到两到三年以后就会开始变卡?
- php抽奖原型,迷你PHP漂流瓶原型
- MyBatis查询结果resultType
- 用户登录的详细流程(三)Shiro框架
- java护肤品购物系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
- 12八大排序算法的稳定性以及时间空间复杂度总结