更新时间:2022-12-07 GMT+08:00

时间序列预测

流数据处理中经常需要对于时间序列数据进行建模和预测,建模是指提取数据中有用的统计信息和数据特征,预测是指使用模型对未来的数据进行推测。DLI服务提供了一系列随机线性模型,帮助用户在线实时进行模型的建模和预测。

ARIMA (Non-Seasonal)

ARIMA(Auto-Regressive Integrated Moving Average)是时间序列预测中的经典模型,和AR/MA/ARMA模型之间联系紧密。

  • AR/MA/ARMA适用于平稳序列 (stationary)
    • AR(p):自回归模型,当前值可以描述为p个之前值的线性组合。利用线性组合的权值即可预测下一个值。
    • MA(q):移动平均模型,当前值可以描述为序列均值加上q个之前值的白噪声的线性组合。利用线性组合的权值也可预测下一个值。
    • ARMA(p, q):自回归移动平均模型,综合了AR和MA两个模型的优势,在ARMA模型中,自回归过程负责量化当前数据与前期数据之间的关系,移动平均过程负责解决随机变动项的求解问题,因此,该模型比AR/MA更为有效和常用。
  • ARIMA适用于非平稳序列 (non-stationary)。ARIMA(p, q, d)中p为自回归项数,q为滑动平均项数,d为使之成为平稳序列所做的差分次数(阶数)。

语法格式

1
2
3
4
5
AR_PRED(field, degree):使用AR模型预测新数据
AR_COEF(field, degree):返回AR模型的权值
ARMA_PRED(field, degree):使用ARMA模型预测新数据
ARMA_COEF(field, degree):返回ARMA模型的权值
ARIMA_PRED(field, degree, derivativeOrder):使用ARIMA预测新数据
表1 参数说明

参数

是否必选

说明

默认值

field

数据在数据流中的字段名。

-

degree

指定使用之前数据项的个数,当前实现中限定p = q = degree。

5

derivativeOrder

指定差分次数,通常设置为1或者2。

1

示例

分别使用AR,ARMA,ARIMA结合窗口进行时间序列预测。

1
2
3
4
5
SELECT b, 
	AR_PRED(b) OVER (ORDER BY rowtime ROWS  BETWEEN 5 PRECEDING AND CURRENT ROW) AS ar, 
	ARMA_PRED(b) OVER (ORDER BY rowtime ROWS  BETWEEN 5 PRECEDING AND CURRENT ROW) AS arma,  
	ARIMA_PRED(b) OVER (ORDER BY rowtime ROWS  BETWEEN 5 PRECEDING AND CURRENT ROW) AS arima 
FROM MyTable

Holt Winters

Holt Winters算法是Exponential smoothing方法中的一种,主要特点是可以捕捉时间序列中的季节性趋势。

语法格式

1
HOLT_WINTERS(field, seasonality, forecastOrder)
表2 参数说明

参数

是否必选

说明

field

数据在数据流中的字段名。

seasonality

季节性变化的周期。例如数据点是按天采集,季节性周期是一周,则seasonality为7。

forecastOrder

指定需要预测的元素。

当forecastOrder为1,预测下一个元素。

当forecastOrder为2,预测下下一个元素。默认值为1。

使用此参数时需要保证over窗口的大小大于设置的forecastOrder。

示例

使用HOLT WINTERS函数结合窗口进行时间序列预测。

1
2
3
4
SELECT b, 
	HOLT_WINTERS(b, 5) OVER (ORDER BY rowtime ROWS  BETWEEN 5 PRECEDING AND CURRENT ROW) AS a1, 
	HOLT_WINTERS(b, 5, 2) OVER (ORDER BY rowtime ROWS  BETWEEN 5 PRECEDING AND CURRENT ROW) AS a2
FROM MyTable