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
报名通道已开启,有想法以及需要报名的,扫码咨询~
考前查缺补漏、重点冲刺!
© 2024. All Rights Reserved. 沪ICP备2023009024号-1