开发者学堂课程【场景实践 - 基于阿里云PAI机器学习平台使用时间序列分解模型预测商品销量:时间序列分解】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/523/detail/7068
时间序列分解
内容介绍:
一、时间序列分解模型
二、乘法模型分解步骤
三、乘法模型预测
一、时间序列分解模型
时间序列Xt可以表示为五个因素的函数 Xt=f(U,Tt,St,Ct,R),这些参数按照顺序分别代表了序列的平均值、长期趋势、季节变动、循环变动和不规则变动。
其中U代表了序列的平均值时间序列分解的方法有很多,较常用的模型有加法模型和乘法模型,这两个模型分别适用于不同情形
1.加法模型
Xt=U+Tt+St+Ct+Rt 适用于四个因素对现象的发展的影响是相互独立的,每个元素都以绝对量表示。
2.乘法模型
Xt=U×Tt×St×Ct×Rt 适用于四个因素对现象的发展的影响是相互作用的,以序列的平均值作为绝对量,其余成分都以比例表示。
大多数的情况下都采用乘法模型,预测更准确。
二、乘法模型分解步骤
Xt=U×Tt×St×Ct×Rt
1.步骤1-移除平均值 U
第一步计算序列的平均值 U,然后将序列中所有个体的值除以 U 来移除平均值:Yt=-XU/t
创建了一个值在1左右的新序列Y,如果序列的平均值U的绝对值<0.0000001一小数点后面6个零,就不用进行除法运算。
2.步骤2 -计算移动平均值M
这一步计算Yt的L步移动平均,其中L是季节变动S的周期长度(例如季度序列 L=4,具体到月份,季节变动的周期L=12 )根据业务需要的不同,季节变动的周期长度L是可以变化的。举例来说,如果数据是聚合到季度的序列,那么数据的季节变动周期为4(L=4)。
如果数据是聚合到月度的序列,那么数据的变动周期为12(L=12)。
根据业务需要的聚合程度不同,移动平均的L步长是变化的。一般来说,颗粒的粒度比较细的时候,比如把每天的数据聚合到周,那么L=52,这个时候就可能出现比较多的缺失值,会造成预测的一些误差。
好处就是预测的密度比较细,可以一周一周进行预测。
相反如果聚合的力度高一点,比如到月的时候(L=12),缺失值出现的概率会小很多,但是预测力度也比较粗了,只能一个月一个月的预测,有时候每四周预测一次也就是28天,那么这个时候L应该等于52/4,即13,而不是按月聚合的12。
由于移动平均算的是一年的平均值 ,季节性因素被移除:
Mt=1Li=1LYt−i
41Y4+Y3+Y2+Y1
3.步骤3 -计算长期趋势T
这一步根据移动平均 Mt ,计算该序列的长期趋势 Tt 对移动平均Mt进行线性回归: Mt = a+b×t + et (其中a是截距, b是斜率, et 是线性拟合的残差)
上述等式的线性部分用于定义长期趋势: Tt = a+b×t,这一步得到长期趋势的系数a和b,作为预测时T的系数。
4.步骤4-计算循环变动C
循环变动等于移动平均M.除以长期趋势 Ct=Mt/Tt
之前说过预测的时候循环变动 C 的值可以根据商业的知识手动输入,可以输入一个固定的值,在实验中计算C序列之后,会使它的平均值作为预测使用 C 值。
5.步骤5-计算季节变动
季节变动K等于Y序列除以移动平均 Mt:Kt=Yt/Mt(注意,K序列是由季节变动和随机变动组成的)
为了计算季节变动S,取时间t所属“季节”的K序列平均值:St=Kt例:共3年数据且L=12,t=1的时候,S1是第一年1月份季节变动等于将所有年份月份的K值加起来取算术平均值。S2K。t1是第一年2月份季节变动。等于将所有年份2月份的K值加起来取算术平均值。
同理类推,S13的值应该与 S1的值相等,因为算法是一样的。季节变动的定义就是每一年的相同月份的值应该是相同的。S1=(K1+K13+K25)/3,S2=(K2+K14+K26)/3....S13=(K1+K13+K25)/3,S14=(K2+K14+K26)/3,...
6.步骤6-计算不规则变动将K序列除以S序列:Rt=KStt,预测的时候假设R值是1。
三、乘法模型预测
1、生成预测
一旦时间序列分解完成,就可以很容易地生成预测:Xt=U×Tt×St×
Ct×Rt 长期趋势 Tt
K=a+bxt 季节变动St=循环变动是手动输入的
t(St=t−L),相同季节的S值相等。
Ct(或取训练集Ct的平均值)
不规则变动Rt则设为S1