数据挖掘——时间序列算法之平滑法

  • 前言
  • 平滑法
  • 1、简述
  • 2、移动平均法
  • 2.1、简单移动平均
  • 2.2、加权移动平均法
  • 3、指数平滑法
  • 3.1、一次指数平滑
  • 3.2 二次平滑指数
  • 3.3、三次平滑指数


前言

时间序列是许多数据挖掘任务重最常见的类型之一,同时也比较难处理。这篇记录下我所理解下的时间序列模型的算法。注意,这不是特征工程,而是算法(暂时是这样理解的,毕竟目前还没使用过这些方法做特征工程)。

平滑法

1、简述

所谓时间序列平滑预测是指用平均的方法,把时间序列中的随机波动剔除掉,使序列变得比较平滑,以反映出其基本轨迹,并结合一定的模型进行预测。所平均的范围可以是整个序列(整体平均数),也可以是序列中的一部分(局部平均数);所用平均数可以是简单平均数,也可以是加权平均数。在一次平均之后,就局部平均而言,还可以进行第二次、第三次以至更多次的平均,进行多层次的平滑。

所以,平滑预测的方法也是多种多样的。

平滑法常用于趋势分析和预测,利用修匀技术,削弱短期随机波动对序列的影响,使序列平滑化。根据所使用的平滑技术的不同,可具体分为移动平均法和指数平滑法。

2、移动平均法

移动平均法是用一组最近的实际数据值来预测未来一期或几期内公司产品的需求量、公司产能等的一种常用方法。移动平均法适用于即期预测。当产品需求既不快速增长也不快速下降,且不存在季节性因素时,移动平均法能有效地消除预测中的随机波动,是非常有用的。------来自百度百科

移动平均法根据预测时使用的各元素的权重不同,可以分为:**简单移动平均法**和**加权移动平均法。**

2.1、简单移动平均

简单时间序列平滑法是指用简单平均数进行预测的一类预测方法。当给定一组数据或观测值后,这些数值的平均数的种类很多,常见的有算术平均数、几何平均数、调和平均数、加权算术平均数、移动平均数与指数平滑平均数等。这些平均数各有各的计算方法,各有各的特点与用途,在使用平均法进行预测时,首先要判断使用哪一种或哪几种能够满足需要,然后再根据相应的计算方法求之。
  由于算术平均数、几何平均数、调和平均数、加权算术平均数的计算方法相对其余几种来说,比较简单,故常称这几种平均数的求法为“简单平均法”。


举例:这里仅使用算数平均数来求预测值:

对应公式:
数据挖掘时间序列ARMA算法 时间序列数据挖掘方法_数据挖掘时间序列ARMA算法
其中V(t)是第t时刻的实际值,F(t+1)是使用平均值得到的未来预测值

例如:某家商店在2047年、2048年、2049年的限售量分别为,25,35,30,那么预测在2050年该家商店的限售量为数据挖掘时间序列ARMA算法 时间序列数据挖掘方法_算术平均_02


上面的例子仅是使用了简单的算数平均,当然还有更复杂些的计算方法(几何平均数、调和平均数、加权算术平均数的计算方法相对其余几种)。

2.2、加权移动平均法

加权移动平均法就是根据同一个移动段内不同时间的数据对预测值得影响程度,分别寄予不同的系数以预测未来值。
从上面介绍的简单移动平均算法可以明显看出,不同时期都会被视为同等重要,显然这是不符合实际认知的,因为距离当前时期较远的时期对预测值的重要性比那些距离当前时期较近的时期小(有点绕),所以为了改善这种情况,需要不同的对待移动期内的各个数据,对近期数据给予较大的权数,对较远的数据给予较小的权数,这样来弥补简单移动平均法的不足。

数学描述:
数据挖掘时间序列ARMA算法 时间序列数据挖掘方法_数据_03
其中:数据挖掘时间序列ARMA算法 时间序列数据挖掘方法_数据挖掘时间序列ARMA算法_04

注:用加权移动平均法求预测值,对近期的趋势反映较敏感,但如果一组数据有明显的季节性影响时,用加权移动平均法所得到的预测值可能会出现偏差。因此,有明显的季节性变化因素存在时,最好不要加权。
看不懂?下面举例:
  ----------------------------------------------------------------------------------------------------------------------
 例题:某商场1月份至11月份的实际销售额如表所示。假定跨越期为3个月,权数为l、2、3,试用加权移动平均法预测12月份的销售额

月份

销售额

3个月的加权移动平均

1

38

-

2

45

-

3

35

38.83

4

49

43.67

5

70

43.67

6

43

57.17

7

46

53.00

8

55

49.00

9

45

50.00

10

68

48.5

11

64

58.17

12

62.17

解:(这里k取3)
数据挖掘时间序列ARMA算法 时间序列数据挖掘方法_算术平均_05

----------------------------------------------------------------------------------------------------------------------

3、指数平滑法

基本思想:最近的过去势态,在某种程度上会持续到最近的未来,所以将较大的权重放在最近的数据上。

指数平滑法是生产预测中常用的一种方法。也用于中短期经济发展趋势预测,所有预测方法中,指数平滑是用得最多的一种。简单的全期平均法是对时间数列的过去数据一个不漏地全部加以同等利用;移动平均法则不考虑较远期的数据,并在加权移动平均法中给予近期资料更大的权重;而指数平滑法则兼容了全期平均和移动平均所长,不舍弃过去的数据,但是仅给予逐渐减弱的影响程度,即随着数据的远离,赋予逐渐收敛为零的权数。--from 百度百科

也就是说指数平滑法是在移动平均法基础上发展起来的一种时间序列分析预测法,它是通过计算指数平滑值,配合一定的时间序列预测模型对现象的未来进行预测。其原理是任一期的指数平滑值都是本期实际观察值与前一期指数平滑值的加权平均。

3.1、一次指数平滑

数学表达:
数据挖掘时间序列ARMA算法 时间序列数据挖掘方法_时间序列_06
其中,数据挖掘时间序列ARMA算法 时间序列数据挖掘方法_数据挖掘时间序列ARMA算法_07

可以看出指数平滑法数对移动平滑法的升级,即弥补了简单平均法的不能体现各时期重要性的缺点,又弥补了加权平均法只能关注最近时期的缺点。

式(3)中各自成分其含义如下:

  • 数据挖掘时间序列ARMA算法 时间序列数据挖掘方法_数据挖掘时间序列ARMA算法_08具有逐期追溯的性质,可包括全部数据,但实际计算时,仅需要两个值,即数据挖掘时间序列ARMA算法 时间序列数据挖掘方法_数据挖掘时间序列ARMA算法_09数据挖掘时间序列ARMA算法 时间序列数据挖掘方法_数据_10;
  • 平滑指数数据挖掘时间序列ARMA算法 时间序列数据挖掘方法_算术平均_11以指数形式递减,故称之为指数平滑法。平滑指数取值很重要,平滑常数数据挖掘时间序列ARMA算法 时间序列数据挖掘方法_算术平均_11决定了平滑水平以及对预测值与实际结果之间差异的响应速度:数据挖掘时间序列ARMA算法 时间序列数据挖掘方法_算术平均_11越接近于1,远期实际值对本期平滑值影响程度下降的越快;越接近于0,远期实际值对本期平滑值的影响程度下降的越慢。所以,当时间数列相对平稳时,可取较大数据挖掘时间序列ARMA算法 时间序列数据挖掘方法_算术平均_14;当时间数列波动较大时,应取较小的数据挖掘时间序列ARMA算法 时间序列数据挖掘方法_算术平均_14,以此不忽略远期实际值的影响。经验如下(他人):指数平滑系数α的确定
    (1)当时间序列呈现较稳定的水平趋势时,应选较小的α,一般可在0.05~0.20之间取值‘
    (2)当时间序列有波动,但长期趋势变化不大时,可选稍大的α值,常在0.1~0.4之间取值;
    (3)当时间序列波动很大,长期趋势变化幅度较大,呈现明显且迅速的上升或下降趋势时,宜选择较大的α值,如可在0.6~0.8间选值。以使预测模型灵敏度高些,能迅速跟上数据的变化。
    (4)当时间序列数据是上升(或下降)的发展趋势类型,α应取较大的值,在0.6~1之间。

初始值的确定:
求第一期的平滑值数据挖掘时间序列ARMA算法 时间序列数据挖掘方法_时间预测算法_16时,很明显不存在数据挖掘时间序列ARMA算法 时间序列数据挖掘方法_数据_17,便也无法产生数据挖掘时间序列ARMA算法 时间序列数据挖掘方法_数据挖掘时间序列ARMA算法_18,用下面的两种方法解决此问题:
(1)如果能够找到数据挖掘时间序列ARMA算法 时间序列数据挖掘方法_算术平均_19以前的历史资料,那么当数据较少时,使用全期平均、移动平均;当数据较多时,可用最小二乘法。
(2)如果仅有从数据挖掘时间序列ARMA算法 时间序列数据挖掘方法_算术平均_19开始的数据,那么确定初始值的方法:取数据挖掘时间序列ARMA算法 时间序列数据挖掘方法_数据_21;待积累若干数据后,取数据挖掘时间序列ARMA算法 时间序列数据挖掘方法_数据_22等于前面若干数据的简单算数平均数,如:数据挖掘时间序列ARMA算法 时间序列数据挖掘方法_数据挖掘时间序列ARMA算法_23
-------------------------------------------------------------------------------------------------------------------------------

举个例子:

数据挖掘时间序列ARMA算法 时间序列数据挖掘方法_算术平均_24

3.2 二次平滑指数

一次指数平滑法虽然克服了移动平均法的缺点,但当时间序列的变动出现直线趋势时,用一次指数平滑法进行预测,仍存在明显的滞后偏差,因此,必须加以修正。修正的方法与趋势移动平均法相同,即再作二次指数平滑,利用滞后偏差的规律建立直线趋势模型,这就是二次指数平滑法。

其数学表达为:
数据挖掘时间序列ARMA算法 时间序列数据挖掘方法_数据挖掘时间序列ARMA算法_25

上式中,数据挖掘时间序列ARMA算法 时间序列数据挖掘方法_时间预测算法_26为一次指数平滑值,数据挖掘时间序列ARMA算法 时间序列数据挖掘方法_时间预测算法_27为二次指数平滑值。

当时间序列数据挖掘时间序列ARMA算法 时间序列数据挖掘方法_时间序列_28,某时期开始具有直线趋势时,可用直线趋势模型:

数据挖掘时间序列ARMA算法 时间序列数据挖掘方法_数据_29

其中:

数据挖掘时间序列ARMA算法 时间序列数据挖掘方法_算术平均_30

-------------------------------------------------------------------------------------------------------------------------

举个例子:

仍以例 3 我国 1965~1985 年的发电总量资料为例,试用二次指数平滑法预 测 1986 年和 1987 年的发电总量:

数据挖掘时间序列ARMA算法 时间序列数据挖掘方法_数据_31

数据挖掘时间序列ARMA算法 时间序列数据挖掘方法_时间序列_32

数据挖掘时间序列ARMA算法 时间序列数据挖掘方法_数据挖掘时间序列ARMA算法_33

为了求各期的模拟值,可将式(6)带入直线模型(5),并另T = 1,则得:

数据挖掘时间序列ARMA算法 时间序列数据挖掘方法_时间预测算法_34

即:

数据挖掘时间序列ARMA算法 时间序列数据挖掘方法_时间序列_35

3.3、三次平滑指数

前面说了,二次平滑是为了拟合直线趋势,三次平滑指数则是为了拟合二次曲线趋势。三次平滑指数是在二次平滑上在平滑一次。
数学表达:
数据挖掘时间序列ARMA算法 时间序列数据挖掘方法_时间序列_36

式中数据挖掘时间序列ARMA算法 时间序列数据挖掘方法_时间预测算法_37为三次平滑值。

三次指数平滑法的预测模型为:
数据挖掘时间序列ARMA算法 时间序列数据挖掘方法_算术平均_38
其中:
数据挖掘时间序列ARMA算法 时间序列数据挖掘方法_数据挖掘时间序列ARMA算法_39
----------------------------------------------------------------------------------------------------------------------
举例:

某省 1978~1988 年全民所有制单位固定资产投资总额如下表7所示,试预测 1989 年和 1990 年固定资产投资总额:

数据挖掘时间序列ARMA算法 时间序列数据挖掘方法_数据挖掘时间序列ARMA算法_40


数据挖掘时间序列ARMA算法 时间序列数据挖掘方法_算术平均_41

数据挖掘时间序列ARMA算法 时间序列数据挖掘方法_算术平均_42