一、时间序列分析
时间序列(Time Series)
时间序列是指按照时间的顺序把随时间变化发展的过程记录下来而形成的随机变量序列。对时间序列进行观察、研究,寻找它的发展规律,预测它将来的走势,就是时间序列分析。
时间序列构成要素
任何时间序列经过合理的函数变换后,都可以被认为是由三个部分叠加而成的,即:趋势项部分,周期项部分,以及余项部分。用公式表示:
其中, 为时间序列, 为趋势项, 为周期项, 为余项, 为时间。
时间序列分析的主要目的是根据已有的历史数据对未来进行预测,那么从时间序列中把这三个部分分解出来是序列分析、预测的的首要任务,这一过程被称为时间序列分解。
二、时间序列分解之STL
STL(Seasonal and Trend decomposition using Loess) 是一种以鲁棒局部加权回归作为平滑方法的时间序列分解方法。其中的Loess是局部多项式回归拟合的非参数方法,在有足够训练数据的情况下,使得数据特征的选择没有那么关键,同时又兼具传统线性回归的简便性和非线性回归应用性较强的优点。
对于某个需要预测的变量,首先截取其所在样本的数据区间,使用加权最小二乘法进行回归分析,使估计点附近的值拥有相对较大的权重,以获得局部回归模型。不断重复这个过程,最终得到一条完整的回归曲线。
STL算法基于Loess将时间序列数据分解为趋势项、周期项及余项。
- 趋势项是指在一段时间内朝着某个方向持续变化的一种发展趋势,是一种长期特征。
- 周期项是指由于季节或者周期变化造成的数据波动,是一种周期性特征。
- 余项是指多种偶然因素对时间序列造成的影响。
趋势项和周期项构成了时间序列的 “常规” 部分,对于由某些因素的影响而造成幅度的变化一般不会太大。而余项则是构成时间序列的 “不规则” 部分,该项会由于某些因素的影响而产生较大的波动,从而对时间序列产生影响。那么我们在进行时间序列的分析、分解、模型的训练上,一般会使用STL算法(或其他算法)将时间序列进行分解,对余项分解值,以及其影响因素对其的影响进行深入研究。
三、残差
残差是指实际观察值与估计值(拟合值)之间的差。“残差” 蕴含了有关模型基本假设的重要信息。如果回归模型正确的话, 我们可以将残差看作误差的观测值。
显然,有多少对数据,就有多少个残差。残差分析就是通过残差所提供的信息,分析出数据的可靠性、周期性或其它干扰。
四、评价指标
分类问题的评价指标是准确率,回归算法的评价指标是MSE,RMSE,MAE。以下将对各指标进行简单介绍。
预测值:;
真实值:;
MAE(Mean Absolute Error)
平均绝对误差,观测值与真实值的误差绝对值的平均值。公式为:
当预测值与真实值完全吻合时等于0,即完美模型;该值越大,误差越大,模型性能越差。
MSE(Mean Square Error)
均方误差,公式为:
当预测值与真实值完全吻合时等于0,即完美模型;该值越大,误差越大,模型性能越差。
RMSE(Root Mean Square Error)
均方根误差,其实就是在MSE的基础上加了个根号,这样数量级上比较直观。公式为:
当预测值与真实值完全吻合时等于0,即完美模型;该值越大,误差越大,模型性能越差。
以下举例:当真实值为0时,有3次测量值:7,3,2,则:
当3次测量值为5,4,3时,则:
以上指标都是描述预测值与真实值的误差反映情况。但通过举例可以发现,在两种情况下,MAE的值相同,而前一种情况下的RMSE值更大。通过观察可知,前一种情况下的误差离散度高,将最大偏差值(7)放大,导致RMSE的值也放大了。