Kaggle知识点辅导讲解:网格搜索ARIMA参数

Kaggle作为数据分析类专业同学升学和求职的无敌Buff,它吸引人的地方不是高达百万美金的奖金,更多的是这段经历能给参赛者带来的机遇和技能加成。今天对Kaggle知识点进行辅导讲解。

在时序序列模型中ARIMA全称差分整合移动平均自回归模型,是时间序列预测分析方法之一。

ARIMA(p,d,q)模型:

AR是“自回归”,p为自回归项;

MA为“滑动平均”,q为滑动平均项;

d为序列做的差分次数;

p d q如何确定?

步骤1:确定序列平稳性

在拿到基于时间的观测值序列后,需要首先进行两步预处理,一个是纯随机性检验,另一个是平稳性检验,然后根据这两步的检验结果再采取相应的时间序列模型进行分析。

对时间序列做d次差分才能得到一个平稳序列,那么可以使用ARIMA(p,d,q)模型,其中d是差分次数。

步骤2:计算ACF和PACF

确定了序列平稳之后,就开始做自相关图(ACF)和偏自相关图(PACF)。

ACF 是一个完整的自相关函数,可为我们提供具有滞后值的任何序列的自相关值。简单来说,它描述了该序列的当前值与其过去的值之间的相关程度。

PACF 是部分自相关函数或者偏自相关函数,是找到残差(在去除了之前的滞后已经解释的影响之后仍然存在)与下一个滞后值的相关性。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

t = np.linspace(0, 10, 500)
#normal distributed values
ys = np.random.normal(0,5,500)

#exponential series to get the trend
ye = np.exp(t**0.5)
#adding normally distributed series in exponential series
y = ys+ye
plt.figure(figsize=(16,7))
plt.plot(t,y)

步骤3:确定p和q

截尾ACF或PACF某阶后均为0;

拖尾ACF或PACF并不在某阶后均为0。

能不能自动搜索p d q?

上述确定ARIMA参数的过程需要有时间序列的积累,入门的同学很难上手。有没有替代的方法呢?

如果有了验证集我们可以直接从验证集对ARIMA(p,d,q)进行网格搜索,以验证集精度确定具体的参数。

基础的伪代码如下:

def gridSearch(itemObj,silent):
# 搜索空间
p = d = q = range(0, 3)

# 搜索组合
pdq = list(itertools.product(p, d, q))
seasonal_pdq = [(x[0], x[1], x[2], 12) for x in list(itertools.product(p, d, q))]

# 训练模型

# 验证模型

# 返回最优参数

基础代码实现:https://www.kaggle.com/sbongo/another-look-at-forecasting-gridsearch-arima

报名通道已开启,有想法以及需要报名的,扫码咨询~

考前查缺补漏、重点冲刺!

翰林国际教育资讯二维码