返回列表

Some ML, A lot of judgement and luck

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

开始: 2020-05-04 结束: 2020-05-11 健康管理与公共卫生 数据算法赛
一些机器学习,大量的判断和运气

一些机器学习,大量的判断和运气

作者:Μαριος Μιχαηλιδης KazAnova
比赛排名:第 2 名

简介

当你试图解决如此严重的问题时,这个标题可能看起来不太令人鼓舞,但在这一系列比赛中(考虑到较长的时间跨度),这种方法的效果还算不错(至少在前两周是这样)。我认为,如果你不是流行病学专家(甚至即使你是),预测那么长的时间(例如未来30天)需要大量的猜测和运气。

当你试图预测那么远的未来时,有太多的事情是未知的,比如:

  • 疫苗会出来吗?(好吧,这个可能不是这里的情况——我想我们离那还很早)或者会有有效的药物吗?
  • 人们真的在遵守社交距离规则吗?或者他们打算遵守吗?
  • 政府将实施什么规则?
  • 政府在执行这些规则时会有多严格?
  • 根据不同国家/地区人们的社交方式,感染率会有何不同?等等。

不用说,数据并不完美。

短期预测(也许在3-5天之内)可以合理地进行建模。我希望你不要介意我分享一篇博客,其中总结了如何在相同的基础数据上针对活跃病例进行短期预测的一些想法——那里提到的许多技巧在这里也被应用了,特别是在数据预处理和预测的后处理方面。

我仍然相信,机器学习从业者与经验丰富的流行病学家联手,比任何个人单独工作都要好,特别是当你试图同时对许多国家/县/城市进行大规模预测时。

(它的得分与我上传的模型略有不同,0.02549 对比 0.02551,尽管我使用了相同的种子——可能是因为我在 Windows 笔记本上运行——或者是 lightgbm 版本不同——不确定)。

机器学习部分

幂增长模型在过去绘制流行病图谱方面效果很好,我认为许多人在这里都做出了很好的实现。

我自己尝试了一个简单的实现——问题在于,如果没有专业知识(至少对我来说),调整增长是具有挑战性的——所以我尝试专门对增长进行建模。我试图预测的不是计数或对数计数,而是:

“我每天需要用什么值乘以前一天的累计值”。对于第 2、3 周,我建立了 60 个独立的模型。确诊人数和死亡人数的每一个 +x 天都有一个模型。

我使用 lightgbm 来构建模型。

特征包括:

  • X 累计计数是在多少天前达到的。其中 X 对于确诊病例是 [1,5,10,20,50,100,250,500,1000] 天,对于死亡病例是 [1,2,5,10,20,50] 天。
  • 确诊病例和死亡病例的 3 天窗口平均增长率,最多滞后 10 期。
  • 第 0 天的实际确诊病例和死亡病例作为行计数。

目标是每个 +x 天的平均 3 天增长率。因此,我没有模拟 future1/current 的比率,而是在预测第 +1 天的目标时取了 future1/current + future2/future1 + future3/future2 的平均值。这是因为它有很多峰值,所以平均值平滑了目标,并且(我认为)可以控制过拟合。

对于第 2 周,我只通过观察进行验证——没有交叉验证。对于第 3 周,我根据第 2 周的结果进行验证,对于第 4 周,则根据第 2 周和第 3 周的结果进行验证。第 2 周和第 3 周模型的一个根本缺陷是它们忽略了 0 值。模型需要一个 >=1 的初始值来增加增长,所以我预计后期的模型表现会差得多(除非我很幸运——不仅是我,最重要的是世界不再有新的死亡)。我用来初始化零

同比赛其他方案