373. COVID19 Global Forecasting (Week 4) | covid19-global-forecasting-week-4
我说过如果我的方案能进前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中发布了一个简化版本。上面的图片取自那里