Il est déjà évident qu'en 2021, le COVID-19 restera, comme on dit, à l'ordre du jour. Cela signifie que les questions se posent naturellement: avons-nous des outils pour prédire la croissance et la diminution de l'incidence, pouvons-nous prédire l'évolution des événements dans une semaine, un mois ou même un an? Découvrons-le.
Étant donné: des capacités colossales en science des données, trois spécialistes talentueux.
Trouvez: des moyens de prédire la propagation du COVID-19 une semaine à l'avance.
Solution:
En fait, il y aura trois solutions, suivez les publications. Et aujourd'hui, nous discuterons de l'un d'entre eux, avec Vladislav Kramarenko. Il a trouvé un modèle capable de construire les prévisions les plus précises * pour le monde entier pour la semaine à venir.
- Vladislav, bonjour. Discutons en détail de ce que vous avez fait: ce qui s'est passé, ce qui reste à travailler, quelles ont été les erreurs et comment elles peuvent être prises en compte à l'avenir. Commençons par l'essentiel: dites-moi, quel algorithme d'apprentissage automatique avez-vous utilisé?
- Je me suis arrêté à un dégradé de boost. La difficulté était que les augmentations de gradient sont différentes et donnent une image différente. J'ai eu le meilleur score adaboost, suivi de Catboost.
- Je veux dire, vous en avez essayé différents, et adaboost est allé le mieux?
- Oui. Le meilleur était adaboost, il donnait les prévisions les plus modérées. Si nous avons vu que tout se développait rapidement, cela signifie que tout continuera à croître rapidement pour l'algorithme, et que d'autres augmentations conduisaient les prévisions dans les nuages quelque part. Mais Adaboost était le plus conservateur.
- Comment avez-vous formé le mannequin?
- La plus grande difficulté dans de tels problèmes est de trouver la bonne façon de former des modèles, c'est-à-dire de faire le bon choix d'échantillons de formation et de test. Si nous prenons 1 jour comme échantillon de test et divisons toutes les données en données d'entraînement et de test, il s'avère que nous ne prédisons que pour 1 jour. Ce n'est pas difficile - il vous suffit de répartir au hasard les jours d'entraînement et de test, et 1 jour peut être prévu. J'ai immédiatement écarté cette idée et prédit la semaine dernière: c'est-à-dire que j'ai interrompu la semaine dernière, donné le reste des jours aux données d'entraînement et prédit honnêtement jour après jour de la semaine dernière, c'est-à-dire que j'ai pris des données de il y a une semaine pour la prédiction. Mais là aussi, une difficulté s'est posée. J'ai créé un modèle qui prédit parfaitement la deuxième semaine, j'ai ajouté un tas de fonctionnalités qui ont aidé à cela, mais il s'est avéré que le modèle,qui prédit très bien la deuxième semaine, prédit très mal la troisième. Je commence à penser qu'il serait peut-être plus facile de mettre les données manuellement et de ne pas utiliser l'apprentissage automatique, et un tel modèle pourrait être meilleur.
- Parlez-vous de regarder le nombre avec vos yeux et de tracer une ligne plus loin?
- Analyser les statistiques mensuelles. Ces données correspondent bien à certaines courbes. Toutes ces statistiques sont assez étranges et tous les malades n'y entrent pas. Ainsi, les statistiques ne reflètent pas le nombre de cas. Je sais que certains types utilisent le modèle SEIR (modèle épidémiologique) pour une telle tâche. J'ai aussi pensé à l'utiliser, mais j'ai ensuite décidé que nous devrions savoir exactement combien de personnes sont malades, mais nous ne savons pas. Ce modèle est lié au nombre de personnes infectées, au nombre de personnes qui tombent malades. Si nous ne connaissons pas ces données, nous ne pourrons pas les utiliser. À mon avis, un tel modèle donnerait une prédiction erronée. *
* Nous analyserons les avantages et les inconvénients du modèle SEIR avec Nikolai Kobalo dans le prochain article
Il me semble raisonnable que les personnes qui font cela doivent d'abord tout faire à l'aide d'un ordinateur, puis le modifier et le réparer manuellement. La machine donne parfois toutes sortes d'absurdités. Par exemple, elle constate qu'en Chine, le nombre de cas n'a pas augmenté depuis longtemps, mais qu'en même temps dans d'autres régions, rien n'a augmenté depuis longtemps, puis une croissance explosive a commencé. Et sur cette base, la machine «comprend» qu'il faut faire de même pour la Chine, qui, en fait, a déjà un plateau. Et il commence à donner pas 80k, mais laisse brusquement un million. J'avais ceci dans l'un des modèles.
- Et qu'en est-il des modèles traditionnels? Que penses-tu d'eux? Analyses de séries chronologiques comme ARIMA?
- J'ai essayé ARIMA plusieurs fois, mais cela n'a jamais donné de meilleur résultat que le renforcement de gradient. Il semblerait qu'ARIMA puisse expliquer n'importe quel processus, mais il s'est avéré que cela ne fonctionne pas toujours mieux. Il y a aussi un tas de paramètres, le processus doit être stationnaire, etc. Même si vous intégrez, ce n'est pas un fait qu'un processus stationnaire se produira.
- Une question sur les arbres. Les arbres n'extrapolent pas. Comment les faites-vous extrapoler?
- Pour ce faire, vous devez prédire non pas le nombre total d'infectés, mais autre chose. Il est clair que si nous prédisons le total, dans une région comme Moscou, il ne sera pas possible de prédire, car les arbres ne peuvent pas prédire plus que ce qu'ils ont vu dans l'échantillon de formation. J'ai pris le logarithme du ratio des malades pour aujourd'hui et les jours précédents. Ces nombres (0,3,1, peut-être 2) sont dans l'échantillon d'apprentissage et le modèle est obtenu. Il est clair que nous ne pourrons pas prévoir une forte augmentation de 500 fois. Ce modèle est au-delà de la puissance. Mais si nous parlons, par exemple, du rapport entre le gain d'aujourd'hui et le gain d'hier, le chiffre sera d'environ un, et nous avons différentes valeurs de ce type dans l'échantillon - dans ce cas, le modèle prédit parfaitement .
- Comme objectif dans le modèle final, avez-vous pris le logarithme du rapport des malades aujourd'hui aux malades hier?
- Oui. J'ai aussi essayé le ratio des deltas: «combien a augmenté pour aujourd'hui», divisé par «combien a augmenté pour hier». Cela a bien fonctionné aussi. Mais le «nombre total» et «l'augmentation du nombre de cas par jour» ont mal fonctionné.
- Qu'as-tu pris comme variables explicatives?
- J'ai pris environ 4 jours précédents. Ça a marché. J'ai pris des informations sur la population, le nombre de fumeurs, etc. Ajout de nombreuses statistiques différentes. Et puis j'ai passé une semaine à regarder quels facteurs donnent une augmentation et lesquels ne le font pas. Mais la situation change trop, ces facteurs se sont révélés non stables, plutôt aléatoires.
- Qu'est-ce qui s'est avéré stable, à part les valeurs précédentes?
- La chose la plus importante qui a influencé était le nombre de jours depuis la première maladie, dixième, centième ... Au début j'ai pris le nombre de jours depuis la première infectée, mais je pensais que ce n'était pas très bon, puisque souvent la première infecté est rapidement isolé et n'entraîne pas de forte augmentation. Par conséquent, j'ai commencé à en prendre 10 infectés, puis je suis tombé à 100 et 1000 infectés.
À la troisième étape de cette tâche, j'ai ajouté 50 et 500 infectés, et cela m'a joué une blague cruelle: le modèle était grandement surentraîné et a commencé à mal prédire la semaine prochaine.
Données plus importantes, j'ai essayé l'index d'auto-isolement. Certaines semaines, cela a donné une forte augmentation, et pour certains, cela n'a pas du tout d'importance. J'ai utilisé des données sur le niveau des soins de santé: quels montants sont transférés aux médecins, combien de médecins en général se trouvent dans le pays, combien de personnes âgées, etc. Cela a été fait pour prédire la mortalité.
Il y avait divers problèmes que je voulais résoudre. Prenons l'exemple de l'auto-isolement. J'ai réalisé que le niveau d'auto-isolement n'affecte pas demain, mais la date dans deux semaines. Et ce n'est pas un fait que l'auto-isolement affecte le nombre de cas; peut-être, au contraire, que le nombre de cas influe sur le niveau d'auto-isolement.
, - Casual Inference in ML ( https://ods.ai/tracks/causal-inference-in-ml-df2020/) – 2020 – -, - COVID-19 , .. , .
- Quelle conclusion feriez-vous sur les modèles ML en général, et non par rapport à ce problème? Votre déclaration donne l'impression que vous devez "vous occuper" des modèles ...
- Il y a des tâches qu'un ordinateur résout beaucoup mieux qu'un humain. Par exemple, le dernier concours auquel j'ai participé était l'examen d'État unifié en russe. Mon modèle était meilleur dans ces tâches que moi. Mais c'est du traitement de texte ...
Pourquoi y a-t-il autant de malades à Saint-Pétersbourg et au MSC? Nous sommes testés sans exception. Je ne dirai pas que dans d'autres régions, ils testent si massivement. Par exemple, les statistiques incluent 100 personnes. Qu'est-ce que ça veut dire? Il y a trois semaines, ils ont été infectés. En conséquence, nous ne prédisons pas le nombre de cas, mais un autre chiffre. Et la corrélation entre ce chiffre et le nombre de cas n'est pas très claire. Un ordinateur ne peut rien prédire normalement si on lui donne des nombres incompréhensibles.
Peu importe, voici ma solution: https://github.com/vlomme/sberbank-covid19-forecast-2020
, – 10, 100, 1000 (, , ).
. . , , , , , 2021.
, , .
* «Forecast the Global Spread of COVID-19»