时间序列预测
流数据处理中经常需要对于时间序列数据进行建模和预测,建模是指提取数据中有用的统计信息和数据特征,预测是指使用模型对未来的数据进行推测。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预测新数据。 |
参数 |
是否必选 |
说明 |
默认值 |
---|---|---|---|
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) |
参数 |
是否必选 |
说明 |
---|---|---|
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 |