大家好,欢迎来到IT知识分享网。
创建指示器和傅里叶特性来捕获周期性变化。
1、什么是季节性?
我们说一个时间序列表现出季节性,是指该序列的均值存在规律的、周期性的变化。季节性变化通常遵循时钟和日历 – 每天、每周或每年的重复都很常见。季节性通常由自然世界在日和年的周期或者围绕日期和时间的社会行为规范所驱动。
四个时间序列的季节模式。
我们将学习两种模型季节性的特征。第一种,指标,最适合观察次数较少的季节,比如每日观察的每周季节。第二种,傅里叶特征,最适合观察次数较多的季节,比如每日观察的每年季节。
2、季节性图和季节性指标
就像我们使用移动平均图来发现序列的趋势一样,我们可以使用季节性图来发现季节性模式。
季节性图显示的是时间序列的片段,这些片段是根据某个共同的周期绘制的,这个周期就是你想要观察的”季节”。图中显示的是维基百科上三角函数文章的每日浏览量的季节性图:文章的每日浏览量绘制在一个共同的每周周期上。
这个系列有明显的每周季节性模式,工作日较高,周末则下降。
2.1季节性指标
季节性指标是二元特征,代表了时间序列水平的季节性差异。如果你把一个季节性周期当作一个分类特征并应用独热编码,那么你得到的就是季节性指标。
通过对一周中的每一天进行独热编码,我们得到了每周的季节性指标。为三角函数系列创建每周指标,然后我们将得到六个新的”虚拟”特征。(线性回归在你丢弃其中一个指标时效果最好;我们在下面的框架中选择了星期一。)
Date | Tuesday | Wednesday | Thursday | Friday | Saturday | Sunday |
---|---|---|---|---|---|---|
2016-01-04 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
2016-01-05 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
2016-01-06 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 |
2016-01-07 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 |
2016-01-08 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 |
2016-01-09 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 |
2016-01-10 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 |
2016-01-11 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
… | … | … | … | … | … | … |
这些指标起到了开/关的作用。在任何时候,这些指标中最多只有一个可以取值为1
(开)。线性回归学习了Mon
的基线值2379
,然后根据哪个指标在那一天是开的来调整;其余的都是0
,并消失。
3、傅里叶特征和周期图
我们现在要讨论的这种特征更适合于观察次数较多的长季节,这种情况下使用指标将不切实际。傅里叶特征试图用少量的特征捕捉季节性曲线的整体形状,而不是为每个日期创建一个特征。
让我们看一下三角函数的年度季节的图。注意各种频率的重复:一年中有三次的长上下运动,一年中有52次的短周运动,也许还有其他的。
Wiki Trigonometry系列的年度季节性
我们试图用傅里叶特征来捕捉季节内的这些频率。我们的想法是在我们的训练数据中包含与我们试图建模的季节具有相同频率的周期曲线。我们使用的曲线是正弦和余弦函数的曲线。
傅里叶特征是正弦和余弦曲线的对,每个潜在频率的季节开始时都有一对。建模年度季节性的傅里叶对将具有频率:每年一次,每年两次,每年三次,等等。
年度季节性的前两个傅里叶对。顶部:每年一次的频率。底部:每年两次的频率。
如果我们将这些正弦/余弦曲线的一组添加到我们的训练数据中,线性回归算法将找出适合目标序列的季节性组件的权重。图中说明了线性回归如何使用四个傅里叶对来模拟Wiki Trigonometry系列的年度季节性。
顶部:四个傅里叶对的曲线,正弦和余弦的和与回归系数。每条曲线模拟了一个不同的频率。
底部:这些曲线的和近似于季节性模式。
注意,我们只需要八个特征(四对正弦/余弦对)就能得到年度季节性的良好估计。与季节性指标方法相比,后者将需要数百个特征(每年的每一天一个)。通过使用傅里叶特征仅建模季节性的”主效应”,你通常需要在训练数据中添加的特征数量要少得多,这意味着减少了计算时间和过拟合的风险。
3.1使用周期图选择傅里叶特征
我们实际上应该在特征集中包含多少对傅里叶对呢?我们可以用周期图来回答这个问题。周期图告诉你时间序列中频率的强度。具体来说,图的y轴的值是(a 2 + b 2) / 2
,其中a
和b
是该频率的正弦和余弦的系数(如上面的傅里叶组件图所示)。
Wiki Trigonometry系列的周期图
从左到右,周期图在季度之后下降,一年四次。这就是为什么我们选择了四对傅里叶对来建模年度季节。我们忽略了每周频率,因为它更适合用指标来建模。
3.2计算傅里叶特征(可选)
知道如何计算傅里叶特征并不是使用它们的必要条件,但如果看到细节会使事情变得更清晰,下面隐藏的单元格说明了如何从时间序列的索引中派生出一组傅里叶特征。(然而,我们将使用statsmodels
的库函数进行我们的应用。)
In [1]:
import numpy as np def fourier_features(index, freq, order): time = np.arange(len(index), dtype=np.float32) k = 2 * np.pi * (1 / freq) * time features = {
} for i in range(1, order + 1
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/137567.html