开发一个预测模型,根据一个国家的历史每日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 是拓端研究室(TRL)的研究员。
本科就读于湖南大学,主修电子信息工程。悉尼大学研究生,主修定量金融(quantitative finance),辅修商业分析(business analytics)。侧重于应用层面的数据分析。在基于现实情境的商业实践活动中,取得了优异的成绩。如:根据COVID-19的历史确诊记录,建立每日新增预测模型 ,实现高精度预测(RNN神经网络优化);根据地段、房屋面积、基础设施分布等要素,建立房价预测模型;根据酒精含量、生产年份、用料、产地等,建立红酒售价预测模型。课题贴合实际商业活动,锻炼了运用专业知识解决现实问题的能力和技巧。
本文借鉴了作者最近为《R语言数据分析挖掘必知必会 》课堂做的准备。
非常感谢您阅读本文,如需帮助请联系我们!