暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Kaggle知识点:网格搜索ARIMA参数

Coggle数据科学 2022-03-02
693

在时序序列模型中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

学习数据竞赛
添加👇微信拉你进群
文章转载自Coggle数据科学,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论