项目总结 | 对【时间】构建的特征工程

站长亦新
站长亦新
站长亦新
81
文章
0
评论
2020年7月14日02:45:55 评论 192 1516字阅读5分3秒

写文章的目的在于之前面试的时候,提到某一个时间序列项目的特征工程处理。我说的大多数都是一些数据清洗、数据去除异常点、针对数据特性做出的特别的特征工程的操作,然后面试官给我的建议是下一次面试多说一下常规的特征工程处理,因为这样面试官才会跟你有共鸣,能更好的理解你说的特征工程是什么。

本文主要讲述一些比较有意思的特征工程。但是这个有意思就是不那么普通,但是也不那么特殊,让人看了耳目一新的那种感觉。

有趣的特征工程

【节假日消耗的能源更多?】
不管是什么任务中,预测家庭能源消耗、预测消费情况等等,节假日都是一个需要注意的特征,因为放假了就会消耗更多的能源,产生更多的消费购物

不过需要注意的是:欧美国家的一些节假日和中国不一样,所以需要看一下欧美的法定节假日日期以及周末的放假日期。

【分离时间戳产生更多特征?】
一般时间戳timestamp可能是这样的格式:13:21 20/3/1997,这样的话,可以把这个timestamp分离成5个特征:hour,minute,day,month,year。

进一步的,可以对小时数据进行数据探索分析,看看是否存在白天黑夜的不同导致的对预测结果的影响?对day和month进行分析,看看是否存在节假日对预测结果的影响。

【日期数据的循环性】
通常对于上面的hour特征是[0,23]的,但是其实0点和23点并不像数字本身看起来差别那么巨大,所以可以使用cos或者sin来将时间变成一个循环。相似的是星期一与星期日的差别。

【其他的tricks】
1. 人造节日是否考虑进去?中国的6.18,5.20,11.11,12.12等
2. 季节导致的偏移是否存在?可能同样的情况春天发生和秋天发生并不相同?

常规的特征工程

滑动窗口法。寻找100个时间相邻的样本的某一个特征的某一个统计特性,比如:
- 均值mean()
- 中位数median()
- 最大值max()
- 最小值min()
- 标准差std()
- 四分位点quantile(q=0.25)/quantile(q=0.75)
- 数据的偏度df.skew()
- 数据的峰度df.kurt()
- 数据的绝对离差df.max(),数据与其均值的差的绝对值的平均值
- 绝对值的最大值
- 绝对值的最小值
- 梯度的绝对值
- 最大值与最小值的差值
- 最大值与最小值的倍数
- 使用时间序列的shift偏移

周期性的特征工程

部分时间特征是具有周期性的。可能是一个月是一个周期,也可能一个季度,一年等等。为了寻找这个周期性,可以使用自相关系数来寻找。简单的说,就是通过平移特征工程,然后绘制自相关系数随着平移距离的函数图像。

有了这个周期性之后,就可以构建更多的特征。比方说同比(去年同月)或者环比(相邻月份)。环比和同比一般都是比率,我们可以再构建这个环比的梯度,类似二阶差分。

卡尔曼滤波器

在百度搜索“时间序列 滤波”等关键词的时候,会发现有下面的内容:
项目总结 | 对【时间】构建的特征工程
项目总结 | 对【时间】构建的特征工程
项目总结 | 对【时间】构建的特征工程
使用kalman滤波器好像可以作为时间序列的一种特征工程。

其实是这样的,在处理一些微观数据的时候,有的时候观测仪器会存在测量误差,这个时候我们可以使用卡尔曼滤波器来进行一定的矫正。

对于每一个时间点的数据,获取的方法有两个:
- 第一个就是观测,但是测量的结果不一定准确,可能受限于测量仪器的精度?
- 第二个就是用这个时间点之前的所有数据,预测这个时间点的数据,当然,这个预测值也是不准的。
- 可否利用这两种方法,相互促进,预测的值更准,或者说让观测到的值更接近本质?Kalman Filter卡尔曼滤波器就这样做的。

这里不加赘述了,更多内容可以看这篇文章,通俗讲解了卡尔曼滤波器以及python实现方法,方便下次直接拿轮子来用:
kalman filter-卡尔曼滤波器与python实现

weinxin
我的微信
微信扫一扫
站长亦新
  • 本文由 发表于 2020年7月14日02:45:55
  • 转载请务必保留本文链接:http://helloworld2020.net/603/
工程能力大UP | 《炼丹大法》 公告

工程能力大UP | 《炼丹大法》

xavier、He和随机初始化都要尝试。使用一般的随机均值初始化CNN的参数,acc只能到70%,仅仅改成xavier,acc可以到98%。另外一次,使用xavier初始化效果不好,使用随机初始化效果...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: