返回列表

~5th Place Simple Linear QuantReg Solution

376. COVID19 Global Forecasting (Week 5) | covid19-global-forecasting-week-5

开始: 2020-05-04 结束: 2020-05-11 健康管理与公共卫生 数据算法赛
第5名:简单的线性QuantReg解决方案

第5名:简单的线性QuantReg解决方案

作者:Giba (Grandmaster) | 比赛排名:第5名

本次任务是一个时间序列预测挑战,旨在预测各国及部分美国地区的Covid19每日确诊病例数和死亡人数。此外,比赛还要求我们预测这些数字的5%和95%分位数,选定的评估指标是Pinball损失函数,优化该指标并非易事。Pinball损失函数保证了所有预测值都落在5%到95%的分位数范围内,任何超出该限制的预测都会受到极重的惩罚,因此模型在预测下限和上限时必须非常小心。

针对这一挑战,我使用statsmodels库中的QuantReg回归器构建了一个简单的线性模型。事实证明,QuantReg在开箱即用时非常适合估计分位数预测。

为了训练模型,我使用了2020年4月1日至4月26日的数据,并使用4月27日至5月10日的数据进行验证。请注意,我只用了两周数据进行验证,而Private LB(私有排行榜)将使用30天数据进行计算,因此我预计我的预测在私有数据的最后15天会出现一些漂移。

我训练了两个独立的模型,一个用于每日确诊病例,一个用于死亡人数。这两个模型都使用了由一些滞后特征和滚动窗口统计量构建的相似特征。由于是分位数区间预测,逻辑上一个好的特征应该是标准差的滚动窗口。我添加了窗口大小为7、14、21和28的std()滚动窗口,但由于代码中的一个拼写错误,最终提交时只使用了窗口7和28。我尝试了其他类型的滚动窗口函数,但其他尝试都降低了我的验证分数。我在验证期和私有数据集中的所有预测都是递归进行的(对第t天的预测成为第t+1天的lag(1)特征)。

此外,为了避免在30天周期接近尾声时出现5%和95%分位数的问题,我每天增加了一个线性边际,以便总是增加95%分位数预测并减少5%分位数预测。

每日确诊病例的验证分数为0.2619,死亡人数为0.2341,两周验证期的平均分约为0.248。目前,大约15天的私有数据已经评分,我的Pinball分数是0.2301,与我计算出的分数非常接近。

以下是我对美国确诊病例和死亡人数的预测示例:

美国确诊病例预测图 美国死亡人数预测图
同比赛其他方案