来源:kaggle竞赛宝典

在时间序列问题中,周期特征是异常重要的,例如:

  • 地铁流量预测中的周期性,每周一到周五的早上地铁流量就特别大,但是到了周末人就比较少;

  • 股票涨跌的预测问题中,在节假日之前,例如国庆等,白酒等的股价就会有提升;

  • 在降雨量的预测中,每年的某些时节,降雨量就会大幅提升;

  • 在电量预估问题中,因为夏天温度较高的原因,每年的夏天用电量会大幅提升;

  • ......

上面这些在某些固定时间点周而复始的出现某种现象的,我们一般称之为周期性,那么在时间序列问题中,我们如何捕捉这些周期性呢?

此处我们介绍两种常见的周期性特征。

  1. 周期性indicators:适合于观测较少的情况,比如每周观测一次的周期;

  2. 傅里叶特征:适合于存在许多观测的周期,比如每年每日观测周期;

时间周期特征

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

适用问题

如果可视化分析中发现数据存在周期性的话,就可以使用上面的两种策略进行周期性特征的抽取。

参考文献

  1. Seasonality

两种常见的周期性特征,时序必知强特相关推荐

  1. 一文带你掌握OBS的两种常见的鉴权方式

    OBS提供了REST(Representational State Transfer)风格API,支持您通过HTTP/HTTPS请求调用.在调用OBS的API前,需要了解OBS的鉴权认证方式.本文就将 ...

  2. 有两种常见的情况充斥着SEO优化市场,让排名得不到稳定

    成都SEO:随着这一段百度大调整的到来,新一轮的排名下降越演越烈,本来昨天还在前两页,但说不今天就已经是百里之外了.成都SEO经过研究得知,其实掉到100以外为严重降权,掉到3-40名为有一些失误导致 ...

  3. android内存池,两种常见的内存管理方法:堆和内存池

    描述 本文导读 在程序运行过程中,可能产生一些数据,例如,串口接收的数据,ADC采集的数据.若需将数据存储在内存中,以便进一步运算.处理,则应为其分配合适的内存空间,数据处理完毕后,再释放相应的内存空 ...

  4. 使用定制的NSDictionary的方法,对NSArray进行排序(附:数组排序两种常见方法)

    NSArray中存放的是NSDictionary,可以使用策略的方法对NSDictionary进行定制,增加比较的方法.然后调用NSArray的sortUsingSelector方法对数组进行排序,这 ...

  5. 移动Web开发图片自适应两种常见情况解决方案

    本文主要说的是Web中图片根据手机屏幕大小自适应居中显示,图片自适应两种常见情况解决方案.开始吧 在做配合手机客户端的Web wap页面时,发现文章对图片显示的需求有两种特别重要的情况,一是对于图集, ...

  6. diy 扫地机器人 滚刷_无滚刷PK有滚刷:关于保洁机器人两种常见清扫结构的分析...

    目前市面上销售的保洁机器人从底部清扫结构上来看,主要分为两种结构类型:一类是以iRobot Roomba为代表的有滚刷三段式清扫结构,另一类则是以V-BOT为代表无滚刷双重清扫结构,今天爸爸乐轻松网主 ...

  7. 常系数非齐次线性微分方程(两种常见形式)

    二阶常系数非齐次线性微分方程的一般形式是 y′′+py′+qy=f(x)(1)y''+py'+qy=f(x) \tag{1} y′′+py′+qy=f(x)(1) 其中p,q是常数. 一般而言,二阶常 ...

  8. 无线AP中小型、大型两种常见组网方式

    无线AP(Access Point)网络覆盖是现代无线网络中的重要组成部分.它提供了无线信号的传输和接收功能,使用户能够在无线网络中进行通信和访问互联网.针对不同的需求和场景,存在两种常见的无线AP网 ...

  9. 两种常见电商sku的设计

    在电商系统中,商品sku和sku模型至关重要,是整个电商系统的重要组成部分之一,下面通过一些简单的知识整理和分析,讲解一下sku属性管理和常见的建模方式. 一.sku的定义及概念的统一 1.什么是sk ...

最新文章

  1. lamp配置python_LAMP自动化安装脚本
  2. 添加触发器后自增ID会变
  3. 腾讯优图提出LCVR-MQVI算法,勇夺NTIRE 2021双赛道冠亚军
  4. FPGA时钟资源使用
  5. 为什么电脑安装不了python_windows电脑安装python教程
  6. 三菱伺服电机选型技巧
  7. 傅里叶变换性质证明卷积_傅里叶变换2.系统属性和卷积公式的推导
  8. azkaban短信报警功能和项目依赖功能实现
  9. java语言【#106. 求绝对值】(已通过)
  10. 【ironic】ironic介绍与原理
  11. 数据流代替工作流解决方案
  12. 搞清Δ,梯度, 方向导数,散度,拉普拉斯算子
  13. 简化行政地图边界 简化地图边界的方法 GeoPandas
  14. 三维电子沙盘数字沙盘可视化大数据人工智能教程MR VR AR M3D GIS第56课
  15. 用Visual C# 2005创建快捷方式
  16. 20亿美元宝马激光雷达订单?Innoviz上市披露哪些风险
  17. Fragment overlap problem
  18. 袋鼠妈妈和植物主义哪个适合孕妇用?主要看这几点
  19. Telink “undefined reference to“ 问题解决方法
  20. Android 直播 弹幕

热门文章

  1. 使用idea解决包依赖冲突的问题SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory
  2. PS调整边缘工具详解
  3. CentOS7.2安装配置scylladb
  4. python从入门到实践十二章
  5. 在python中读取文件时如何去除行末的换行符以及在Windows与Linux中的区别
  6. AIDE手机编程初级教程(零基础向) 3.2.1 设计欢迎页(主体)
  7. 自制计算机(1):机械计算机原理
  8. 婚礼筹备之WBS工作分解结构(转)
  9. 关于中文字体的设置说明(font:12px/1.5 tahoma,arial,\5b8b\4f53)
  10. 《中国企业家》杂志:柳传志走访旧金山