首页 > 编程知识 正文

二次指数平滑法预测例题,时间序列指数平滑预测法

时间:2023-05-03 16:10:29 阅读:170390 作者:128

所有的移动平均法都有很多问题。

计算太难了。 每一点的计算都会让你头疼。 另外,也无法根据以前的计算结果推测加权移动平均值。

移动平均值不适用于现有数据集边缘的数据,因为窗口宽度有限。 这是个大问题。 因为数据集边缘的波动形态一般是我们最感兴趣的部分。

同样,移动平均法也不能应用于现有数据集的范围之外。 结果,对预测没有帮助。

幸运的是,有一种简单的计算方法可以避免所有这些问题。 被称为指数平滑法

smoothing (或Holt-Winters法)。 指数平滑法有几种不同的形式。 一次指数平滑法倾向于无季节性序列,而二次指数平滑法倾向于

没有季节性的序列。 术语“Holt-Winters法”可特别指三次指数平滑法。

所有指数平滑方法都会更新上一个时间步骤的计算结果,并使用当前时间步骤数据中包含的新信息。 它们通过“混合”新信息和旧信息来实现,相关的新信息和旧信息的权重由可调的混合参数控制。 每种方法的不同之处在于它们跟踪的量的个数和对应的拌和参数的个数。

一次指数平滑法的递归关系特别简单:

这里,为在时间步骤I处的平滑值,其中为在此时间步骤处的实际(未平滑)数据。 原始数据和上次时间步骤的平滑值如何

是混合的。 拌和参数是0和1之间的任意值,控制新旧信息的平衡。 如果接近1,则只保留当前数据点。 也就是说,序列完全不平滑。 时光流逝

接近0时,只剩下先前的平滑值。 也就是说,整个曲线变平。

为什么这个方法被称为“指数”平滑法? 要找到答案,展开递归关系式就知道了。

由此可知,在指数平滑法中,以前的所有观测值都影响了现在的平滑值,但它们与参数一起发挥作用

的乘方变大逐渐变小。 它们相对较早的观测值所起的作用相对较小,这是指数波动形态所表现出的特性。 从某种意义上说,指数平滑法就像拥有无限记一样

记忆权重呈指数减少的移动平均法。 (同时也要注意所有权值之和

等于一。 因为,q1的时候,几何学的序列。 请参阅附录b中有关几何序列的信息。 )

因为通过一次指数平滑得到的计算结果可以在数据集的范围外扩展,所以也可以用它进行预测。 预测也很简单:

这里是最后计算的值。 也就是说,基于一次指数平滑法的预测总是一条直线。

刚才提到的一次指数平滑法适用于没有整体倾向的时间序列。 处理总体趋势序列时,平滑值往往比原始数据慢,但的值接近1时除外,这样会导致不够平滑。

二次指数平滑法保留了趋势的详细信息,修正了这个缺点。 也就是说,保持并更新两个量的状态:平滑的信号和平滑的倾向。 有两个等式和两个混合参数。

我们先来看看第二个等式。 这个等式显示了平滑后的趋势。 当前趋势的未平滑“值”是当前平滑值与上次平滑值之差。 换句话说,目前的趋势表明了前面的情况

在时间步骤中平滑的信号变化了多少? 要平滑趋势,请用一次指数平滑法处理趋势,并使用混炼参数。 为了得到平滑化信号,像上次一样混合1次,但需要同时考虑上次的平滑化信号和趋势。 第一方程式的最后一项假定可估计当前平滑信号的——是单一的

在时间步骤上,我们保持着前面的趋势。

要使用此计算结果进行预测,请取最后一个平滑值,并在每次增加时间步长时,向平滑值添加一次最后的平滑倾向。

最后,为了说明季节性,在三次指数平滑法中增加第三个量。 必须区分累积式和累积式的季节性、累积式对应的等式。

累计公式:

其中,pi是指“周期性”的部分,是该周期的长度。 前面的等式也包括预测的等式。

的指数平滑方法都是基于递推关系的。 这意味着设定初始值后再使用。 选择什么样的初始值并不特别重要。 指数衰减定律表明,所有指数平滑方法的“记忆”能力都很短,只需几个步骤,初始值的影响就会很小。 一些合理的初始值:

然后呢

三次指数平滑要求初始化完整的“季节”值,但可以简单地将其设置为完全1 (对于累计公式)或完全0 (对于累计公式)。 只有序列长度较短时,才需要仔细考虑初始值的选择。

最后一个问题是如何选择混炼参数。

我的提案是试行错误。 先试试0.2和0.4之间的几个值,看看能得到什么结果。 或者

(实际数据和平滑算法的结果之间的)误差定

义一个标准,再使用一个数值优化过程来将误差最小化。就我的经验而言,一般没有必要弄得这么麻烦,原因至少有两个:数值优化是一个不能保证收敛的迭代过

程,最终你可能还需要花非常多时间将算法设计成收敛的。此外,任何这样的数值优化都受限于你选对误差进行最小化的表达式。问题是使误差最小化的参数值可能

并不能满足在解决方案中你想要看到的其他特性(也就是近似值的较精确性和结果曲线的平滑程度之间的平衡),那么,到最后你才会发现,手动的计算方法往往更

好。不过,如果你要预测很多序列,花些精力构建一个能自动决定最优参数值的系统也是值得的,但要实现这个系统恐怕也并不容易。

最后,我想用一个例子来展示我们想从指数平滑法得到的结果。下图是一个经典的数据集,它显示的是每个月国际航班的旅客数量(单位:千人)

。该图显示了实际数据和三次指数近似值。1949—1957年用来“训练”生成它的算法,而1958—1960年都是预测数值。注意,这里的预测值与实际

数据相当接近——特别是它强烈的季节形态——持续了一段如此长的预测时段(整整三年!)。对于像这样简单的方法来说,是很不错的。

时间序列挖掘-预测算法-三次指数平滑法(Holt-Winters)

在时间序列中,我们需要基于该时间序列当前已有的数据来预测其在之后的走势,三次指数平滑(Triple/Three Order Exponential Smoothing,Holt-Winters)算法可以很好的进行时间序列的预测。

时间序列数据一般有以下几种特点:1.趋势(Trend)  2. 季节性(Seasonality)。

趋势描述的是时间序列的整体走势,比如总体上升或者总体下降。下图所示的时间序列是总体上升的:

季节性描述的是数据的周期性波动,比如以年或者周为周期,如下图:

三次指数平滑算法可以对同时含有趋势和季节性的时间序列进行预测,该算法是基于一次指数平滑和二次指数平滑算法的。

一次指数平滑算法基于以下的递推关系:

si=αxi+(1-α)si-1

其中α是平滑参数,si是之前i个数据的平滑值,取值为[0,1],α越接近1,平滑后的值越接近当前时间的数据值,数据越不平滑,α越接近0,平滑后的值越接近前i个数据的平滑值,数据越平滑,α的值通常可以多尝试几次以达到较佳效果。

一次指数平滑算法进行预测的公式为:xi+h=si,其中i为当前最后的一个数据记录的坐标,亦即预测的时间序列为一条直线,不能反映时间序列的趋势和季节性。

二次指数平滑保留了趋势的信息,使得预测的时间序列可以包含之前数据的趋势。二次指数平滑通过添加一个新的变量t来表示平滑后的趋势:

si=αxi+(1-α)(si-1+ti-1)

ti=ß(si-si-1)+(1-ß)ti-1

二次指数平滑的预测公式为  xi+h=si+hti二次指数平滑的预测结果是一条斜的直线。

三次指数平滑在二次指数平滑的基础上保留了季节性的信息,使得其可以预测带有季节性的时间序列。三次指数平滑添加了一个新的参数p来表示平滑后的趋势。

三次指数平滑有累加和累乘两种方法,下面是累加的三次指数平滑

si=α(xi-pi-k)+(1-α)(si-1+ti-1)

ti=ß(si-si-1)+(1-ß)ti-1

pi=γ(xi-si)+(1-γ)pi-k  其中k为周期

累加三次指数平滑的预测公式为: xi+h=si+hti+pi-k+(h mod k)  注意:数据之魅P88此处有错误,根据Wikipedia修正。

下式为累乘的三次指数平滑:

si=αxi/pi-k+(1-α)(si-1+ti-1)

ti=ß(si-si-1)+(1-ß)ti-1

pi=γxi/si+(1-γ)pi-k  其中k为周期

累乘三次指数平滑的预测公式为: xi+h=(si+hti)pi-k+(h mod k)   注意:数据之魅P88此处有错误,根据Wikipedia修正。

α,ß,γ的值都位于[0,1]之间,可以多试验几次以达到较佳效果。

s,t,p初始值的选取对于算法整体的影响不是特别大,通常的取值为s0=x0,t0=x1-x0,累加时p=0,累乘时p=1.

我们使用DataMarket的International Airline Passengers数据来测试累加和累乘三次指数平滑算法的性能,该数据记录的是每月的国际航线乘客数:

下图为使用累加三次指数平滑进行预测的效果:其中红色为源时间序列,蓝色为预测的时间序列,α,ß,γ的取值为0.45,0.2,0.95:

下图为累乘三次指数平滑进行预测的效果,α,ß,γ的取值为0.4,0.05,0.9:

可以看到三次指数平滑算法可以很好的保存时间序列数据的趋势和季节性信息,在International Airline Passengers数据集上累乘平滑指数算法的效果更好。

参考文献:

[1]. 数据之魅:基于开源工具的数据分析

[2]. DataMarket: International Airline Passengers

[3]. Wikipedia: Exponential Smoothing

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。