376. COVID19 Global Forecasting (Week 5) | covid19-global-forecasting-week-5
我说过如果我的方案能进入前10名,我就会分享出来,所以这就是我的方案。
首先,我要感谢Kaggle举办这一系列具有挑战性的预测竞赛。我之所以说具有挑战性,原因有二。首先,这关乎人们的生病和死亡。很难从那严峻的现实中抽离出来。其次,为期一周的冲刺对我来说太短了。我需要更多的时间沉浸在特定的机器学习问题中。在这种情况下,我花了4周零2天的时间才找到一个令我满意的模型。
我还要感谢我在前3周的队友Ahmet和Giba。上周他们更喜欢单打独斗,但我本来很乐意继续组队。我们使用了非常不同的模型(Ahmet用的是神经网络,Giba用的是xgb/lgb,我用的是线性回归),希望结合起来能有好效果。实际上在第2周确实如此,但由于一些交叉验证问题,我们在最后一刻没有选择它。除非弄错了,否则我们本可以排在第8名。第3周对我们来说有点令人失望。
我还要衷心感谢那些整理我使用的额外数据集的人,特别是Vopani。使用这些数据起到了关键作用。
最后,我要祝贺那些在这些比赛中一直表现出色的人,特别是第4周表现出色的人。@david1013 似乎拥有很棒的模型,如果我没理解错他最近的帖子的话,即使不使用额外的一天的数据也是如此。如果不使用额外的一天的数据,了解Lockdown和Kaz的模型得分也会很有趣。Paulo Pinto在第4周的表现令人惊叹。我无法一一列举,但让我提一下在几周内表现优异的PDD团队。
我早些时候决定,不像我通常构建预测模型那样来处理这个问题。原因在于我们正在对一个物理现象进行建模:人们被感染,然后在一段时间内感染他人,然后康复或死亡。因此,我研究了流行病学中的房室模型,如SIR模型等。这些模型依赖于两个时间序列:病例数和康复/死亡数。如果我们有这两者的准确数值,就可以拟合这些模型并获得相当准确的预测。
问题是我们没有这些序列。
对于病例,我们有一个代理指标,即确诊病例。这在很多方面都是一个代理指标:
由于所有这些原因,我们得到的确诊病例数是对实际病例的一种扭曲看法。
对于死亡人数,数据也不准确;
后者可以通过从其他在线来源获取康复数据来解决。一些顶尖的参赛者已经这样做了,我希望我也这么做了。
尽管有所有这些警告,我假设我们手头的两个序列仍然存在某种形式的SIR模型:死亡人数取决于一段时间前检测到的病例。这引出了我的第一个模型。
如果我们假设死亡人数是(比如)8天前病例的一定比例,那么这个比例可以从对数尺度的数据中计算出来。请看下面一些国家的例子。绿色曲线是确诊病例(蓝色)与8天后的死亡人数(橙色)之间的差值。
意大利:

法国:

西班牙:

然后,以过去病例的对数作为输入,以死亡人数的对数作为输出运行线性回归,应该能捕捉到这种依赖关系。我在一个Notebook中发布了一个简化