原文链接:http://tecdat.cn/?p=23476 

作者:Enzo Li

项目挑战

开发一个预测模型,根据一个国家的历史每日COVID-19确诊病例,预测接下来115天当地的每日新增确诊病例。

解决方案

任务/目标

采用多种预测模型实现预测,评估每种模型的性能,找到最小MSE的模型参数(调参)

数据预处理

首先进行EDA(探索性数据分析),理解原始数据集。处理可能的缺失值或异常值(本例中没有缺失或异常)。将数据转换成浮点型,方便下一步的数据操作‘

用Pandas将索引设置为年,月,日的时间序列

该时间序列数据具有非线性趋势。2020年4月至2020年5月以及2020年8月至2020年9月期间,似乎具有季节性变化,周期为7天。此外,数据集的均值随时间变化,因此数据不是均值平稳的(mean-stationary)

划分训练集和测试集

考虑到最终模型会预测将来15天的新增确诊病例,保留最后15天的真实数据作为测试集

建模

首先使用一些简单的模型作为基准,如季节性天真(seasonal naïve),h步漂移预测(h-step forecast drift),和简单指数平滑(SES);然后采用了一些相对复杂的模型,如SARIMA,神经网络,RNN-LSTM;最后,采用SARIMA和RNN的组合方法来实现更准确的预测。接下来的模型描述侧重于SARIMA和神经网络

SARIMA

SARIMA是考虑了季节性变化趋势的ARIMA模型。分为三个部分:

第一部分是AR(自回归)部分,研究变量和其自身的滞后值的回归;

第二部分是MA(移动平均),研究误差项之间的线性组合;

第三个是I(整合),表示数据值已被当前值和前值之间的差值替代,以确保ARIMA可以解决非平稳数据。该过程可执行多次直到满足stationary

每个部分都旨在使模型更好地拟合数据;

AR神经网络

自回归神经网络(NNAR)是用于回归或分类的多层模型,其时间序列的滞后值作为输入。与ARIMA不同,它可以近似任何非线性函数。

RNN神经网络-LSTM

递归神经网络(RNN)通过隐藏单元(bias unit)处理时间效应,以递归方法进行更新,具有重复模块链的形式。长期短期记忆网络(LSTM)是一种特殊的RNN,可以学习长期依赖性。

项目结果

复杂模型的预测精度显著高于简单模型,其中RNN模型的MSE最小。预测结果的可视化图形如下:

最后,采取堆栈(stacking)的方式,根据MSE进行加权,将精度最高的三种模型结合

预测结果仅作为参考。

关于作者

Enzo Li,本科就读于湖南大学,主修电子信息工程,成绩优异,数学基础扎实。有较强的编程能力;辅修了微经,宏经、计量等经济学课程;悉尼大学研究生,主修定量金融(quantitative finance),辅修商业分析(business analytics)。侧重于应用层面的数据分析。在基于现实情境的商业实践活动中,取得了优异的成绩。如:根据COVID-19的历史确诊记录,建立每日新增预测模型 ,实现高精度预测(RNN神经网络优化);根据地段、房屋面积、基础设施分布等要素,建立房价预测模型;根据酒精含量、生产年份、用料、产地等,建立红酒售价预测模型。课题贴合实际商业活动,锻炼了运用专业知识解决现实问题的能力和技巧;


最受欢迎的见解

1.用于NLP的Python:使用Keras的多标签文本LSTM神经网络分类

2.Python中利用长短期记忆模型LSTM进行时间序列预测分析 – 预测电力消耗数据

3.python在Keras中使用LSTM解决序列问题

4.Python中用PyTorch机器学习分类预测银行客户流失模型

5.R语言多元Copula GARCH 模型时间序列预测

6.在r语言中使用GAM(广义相加模型)进行电力负荷时间序列分析

7.R语言中ARMA,ARIMA(Box-Jenkins),SARIMA和ARIMAX模型用于预测时间序列数

8.R语言估计时变VAR模型时间序列的实证研究分析案例

9.用广义加性模型GAM进行时间序列分析


拓端tecdat
195 声望46 粉丝