两种常见的周期性特征,时序必知强特
来源:kaggle竞赛宝典
在时间序列问题中,周期特征是异常重要的,例如:
地铁流量预测中的周期性,每周一到周五的早上地铁流量就特别大,但是到了周末人就比较少;
股票涨跌的预测问题中,在节假日之前,例如国庆等,白酒等的股价就会有提升;
在降雨量的预测中,每年的某些时节,降雨量就会大幅提升;
在电量预估问题中,因为夏天温度较高的原因,每年的夏天用电量会大幅提升;
......
上面这些在某些固定时间点周而复始的出现某种现象的,我们一般称之为周期性,那么在时间序列问题中,我们如何捕捉这些周期性呢?
此处我们介绍两种常见的周期性特征。
周期性indicators:适合于观测较少的情况,比如每周观测一次的周期;
傅里叶特征:适合于存在许多观测的周期,比如每年每日观测周期;
时间周期特征
01
周期性indicators
周期性indicators一般就是表示时间序列周期性的一些二元特征。例如每周一我们的数据呈现出某种周期性,我们会加入是否为周一来表示该信息,例如下表所示。
02
傅里叶特征
周期性indicators一般是我们有一些先验知识,但是还有一类数据,它的周期可能是每隔20天一次的周期,我们可以很容易的从图像中观测到,但是往往没法使用周期性indicators来捕捉此类信息。
此时我们可以使用傅里叶特征尝试捕捉此类到信息。
傅立叶特征就是一对正弦和余弦曲线,从最长的周期开始,每个潜在频率对应一对。傅里叶对建模年度周期性的频率:每年一次、每年两次、每年三次,依此类推。
如果我们把这些sine和cosine的曲线加入到我们的训练集合中,往往可以取得不错的帮助,尤其是对于线性类的模型。
代码
代码摘自:https://www.kaggle.com/ryanholbrook/seasonality
01
自己定义
import numpy as npdef fourier_features(index, freq, order):time = np.arange(len(index), dtype=np.float32)k = 2 * np.pi * (1 / freq) * timefeatures = {}for i in range(1, order + 1):features.update({f"sin_{freq}_{i}": np.sin(i * k),f"cos_{freq}_{i}": np.cos(i * k),})return pd.DataFrame(features, index=index)# Compute Fourier features to the 4th order (8 new features) for a
# series y with daily observations and annual seasonality:
#
# fourier_features(y, freq=365.25, order=4)
02
使用statsmodels工具包
from statsmodels.tsa.deterministic import CalendarFourier, DeterministicProcessfourier = CalendarFourier(freq="A", order=10) # 10 sin/cos pairs for "A"nnual seasonalitydp = DeterministicProcess(index=tunnel.index,constant=True, # dummy feature for bias (y-intercept)order=1, # trend (order 1 means linear)seasonal=True, # weekly seasonality (indicators)additional_terms=[fourier], # annual seasonality (fourier)drop=True, # drop terms to avoid collinearity
)X = dp.in_sample() # create features for dates in tunnel.index
适用问题
如果可视化分析中发现数据存在周期性的话,就可以使用上面的两种策略进行周期性特征的抽取。
参考文献
Seasonality
两种常见的周期性特征,时序必知强特相关推荐
- 一文带你掌握OBS的两种常见的鉴权方式
OBS提供了REST(Representational State Transfer)风格API,支持您通过HTTP/HTTPS请求调用.在调用OBS的API前,需要了解OBS的鉴权认证方式.本文就将 ...
- 有两种常见的情况充斥着SEO优化市场,让排名得不到稳定
成都SEO:随着这一段百度大调整的到来,新一轮的排名下降越演越烈,本来昨天还在前两页,但说不今天就已经是百里之外了.成都SEO经过研究得知,其实掉到100以外为严重降权,掉到3-40名为有一些失误导致 ...
- android内存池,两种常见的内存管理方法:堆和内存池
描述 本文导读 在程序运行过程中,可能产生一些数据,例如,串口接收的数据,ADC采集的数据.若需将数据存储在内存中,以便进一步运算.处理,则应为其分配合适的内存空间,数据处理完毕后,再释放相应的内存空 ...
- 使用定制的NSDictionary的方法,对NSArray进行排序(附:数组排序两种常见方法)
NSArray中存放的是NSDictionary,可以使用策略的方法对NSDictionary进行定制,增加比较的方法.然后调用NSArray的sortUsingSelector方法对数组进行排序,这 ...
- 移动Web开发图片自适应两种常见情况解决方案
本文主要说的是Web中图片根据手机屏幕大小自适应居中显示,图片自适应两种常见情况解决方案.开始吧 在做配合手机客户端的Web wap页面时,发现文章对图片显示的需求有两种特别重要的情况,一是对于图集, ...
- diy 扫地机器人 滚刷_无滚刷PK有滚刷:关于保洁机器人两种常见清扫结构的分析...
目前市面上销售的保洁机器人从底部清扫结构上来看,主要分为两种结构类型:一类是以iRobot Roomba为代表的有滚刷三段式清扫结构,另一类则是以V-BOT为代表无滚刷双重清扫结构,今天爸爸乐轻松网主 ...
- 常系数非齐次线性微分方程(两种常见形式)
二阶常系数非齐次线性微分方程的一般形式是 y′′+py′+qy=f(x)(1)y''+py'+qy=f(x) \tag{1} y′′+py′+qy=f(x)(1) 其中p,q是常数. 一般而言,二阶常 ...
- 无线AP中小型、大型两种常见组网方式
无线AP(Access Point)网络覆盖是现代无线网络中的重要组成部分.它提供了无线信号的传输和接收功能,使用户能够在无线网络中进行通信和访问互联网.针对不同的需求和场景,存在两种常见的无线AP网 ...
- 两种常见电商sku的设计
在电商系统中,商品sku和sku模型至关重要,是整个电商系统的重要组成部分之一,下面通过一些简单的知识整理和分析,讲解一下sku属性管理和常见的建模方式. 一.sku的定义及概念的统一 1.什么是sk ...
最新文章
- lamp配置python_LAMP自动化安装脚本
- 添加触发器后自增ID会变
- 腾讯优图提出LCVR-MQVI算法,勇夺NTIRE 2021双赛道冠亚军
- FPGA时钟资源使用
- 为什么电脑安装不了python_windows电脑安装python教程
- 三菱伺服电机选型技巧
- 傅里叶变换性质证明卷积_傅里叶变换2.系统属性和卷积公式的推导
- azkaban短信报警功能和项目依赖功能实现
- java语言【#106. 求绝对值】(已通过)
- 【ironic】ironic介绍与原理
- 数据流代替工作流解决方案
- 搞清Δ,梯度, 方向导数,散度,拉普拉斯算子
- 简化行政地图边界 简化地图边界的方法 GeoPandas
- 三维电子沙盘数字沙盘可视化大数据人工智能教程MR VR AR M3D GIS第56课
- 用Visual C# 2005创建快捷方式
- 20亿美元宝马激光雷达订单?Innoviz上市披露哪些风险
- Fragment overlap problem
- 袋鼠妈妈和植物主义哪个适合孕妇用?主要看这几点
- Telink “undefined reference to“ 问题解决方法
- Android 直播 弹幕
热门文章
- 使用idea解决包依赖冲突的问题SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory
- PS调整边缘工具详解
- CentOS7.2安装配置scylladb
- python从入门到实践十二章
- 在python中读取文件时如何去除行末的换行符以及在Windows与Linux中的区别
- AIDE手机编程初级教程(零基础向) 3.2.1 设计欢迎页(主体)
- 自制计算机(1):机械计算机原理
- 婚礼筹备之WBS工作分解结构(转)
- 关于中文字体的设置说明(font:12px/1.5 tahoma,arial,\5b8b\4f53)
- 《中国企业家》杂志:柳传志走访旧金山