概述

我们在日常的生活中,经常会遇到需要对未来的趋势做出一个预测,然后做出当下的决策。比如说我们在运维的时候,可以根据服务的网络流量的趋势,提前做出服务的伸缩决策,但是如果等到流量升高后再去扩容服务,就会导致用户体验的下降,而流量下降后,还维持着很多的服务实例,则会导致资源浪费;再比如如果我们可以预判出一只股票会上涨,那么我们就会预先买入股票,如果在它下跌前,提前卖出,那么可以达到收益的目的;再比如一个电力公司如果可以预测将来1-3个月的用电量,根据预判出的用电量的高低,提前决定煤炭的采购量的多少,合理科学的安排作业生产,使产值可以最大化。 如果你会对如何做预测产生了一些兴趣,通过阅读本文你可以了解到:

  1. 预测的理论基础

2.预测模型ARIMA

3.使用ARIMA模型的实践

预测的理论基础

相关性

我们都知道孩子中的身高和父母的身高是有一定比例关系,当然决定孩子身高的因素中还包括后天的营养补充、运动习惯等等,如果我们排除这些后天的因素,我们可以根据父母的身高大致预测出孩子的身高。当然你也可以举出很多的反面例子,父母身高和孩子身高差别很大,我认识的人中就存在这样的情况,但这种情况不是大多数,所以我们可以不用太关注这些个别的特殊情况。

周期性

我们知道地球绕着太阳转需要365天,有一年四季之分,所以我们可以根据日期预测季节;地球自转一周就是一天24小时,有白天和黑夜之分,我们可以根据这个规律预测什么时间是白天还是黑夜;我们可以根据周期性对未来进行预测。

趋势

我们知道地球绕着太阳旋转一圈需要365天,有春夏秋冬四季,从春季到夏季的时候,温度就会逐渐升高,从秋季到冬季的时候,温度就会逐渐下降,发生季节性变化的时候,温度持续升高或者降低就是趋势的表现。

预测模型ARIMA

AR代表 Auto Regression,意思是自动线性回归;MA代表Move Average,意思是平均移动; I 代表Inductive,是差分的意思。这个模型假设了将来发生的事情和以前发生的事情存在一定的相关性、周期性、以及在每个周期内是存在趋势的,所以假设要预测的事件 Xt 和以前的事件X1 X2 X3 X4 …… Xn-1之间存在线性的相关性,那么Xt就可以通过如下的公式表达:

Xt = a1 * X1 + a1 *X2 + a3 * X3 + … + at-1 * Xt-1 + U

其中U表示一个随机的噪音,我们可以用如下的公式表示U:

Up = b1 * Z1 + b2 * Z2 + b3 * Z3 + …… + bp-1 * Zp-1 + i ,

如果 Xt = U ,则表示事件之间的关系没有相关性,是一个随机噪音。

否则Xt可以表示为:

Xt = a1 * X1 + a1 *X2 + a3 * X3 + … + at-1 * Xt-1 + b1 * Z1 + b2 * Z2 + b3 * Z3 + …… + bp-1 * Zp-1 + i