返回列表

Linear Regression Is All you Need (9th solution week 4)

373. COVID19 Global Forecasting (Week 4) | covid19-global-forecasting-week-4

开始: 2020-04-09 结束: 2020-04-15 健康管理与公共卫生 数据算法赛
线性回归就是你所需的一切(第4周第9名方案)

线性回归就是你所需的一切(第4周第9名方案)

我说过如果我的方案能进前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中发布了一个简化版本。上面的图片取自那里

同比赛其他方案