Ciência de dados vs COVID-19_parte 1





Já é óbvio que em 2021 a COVID-19 continuará, como dizem, na ordem do dia. Isso significa que as perguntas surgem naturalmente: temos ferramentas para prever o crescimento e diminuição da incidência, podemos prever o desenvolvimento dos eventos em uma semana, um mês ou até um ano? Vamos descobrir.


Dado: capacidades colossais de ciência de dados, três especialistas talentosos.

Encontre: Maneiras de prever a propagação de COVID-19 uma semana antes.



Solução:



Na verdade, serão três soluções, acompanhe as publicações. E hoje vamos discutir um deles, com Vladislav Kramarenko. Ele encontrou um modelo capaz de construir a previsão * mais precisa para o mundo inteiro para a semana que se inicia.



- Vladislav, olá. Vamos discutir em detalhes o que você fez: o que aconteceu, o que ainda precisa ser trabalhado, quais foram os erros e como eles podem ser levados em consideração no futuro. Vamos começar com o principal: diga-me, qual algoritmo de aprendizado de máquina você usou?



- Eu parei em um aumento gradiente. A dificuldade era que os aumentos de gradiente são diferentes e fornecem uma imagem diferente. Tive a melhor pontuação adaboost, seguido por Catboost.



- Quer dizer, você experimentou diferentes e adaboost foi o melhor?



- Sim. O melhor foi adaboost, deu a previsão mais moderada. Se víssemos que tudo estava crescendo rapidamente, significa que tudo continuará crescendo rapidamente para o algoritmo, e outros impulsos estavam levando a previsão para as nuvens em algum lugar. Mas adaboost era o mais conservador.



- Como você treinou a modelo?



- A maior dificuldade nesses problemas é encontrar a maneira certa de treinar modelos, ou seja, fazer a escolha certa de amostras de treinamento e teste. Se tomarmos 1 dia como amostra de teste e dividirmos todos os dados em treinamento e dados de teste, descobrimos que prevemos apenas para 1 dia. Não é difícil - você só precisa espalhar aleatoriamente os dias de treinamento e teste, e 1 dia pode ser previsto. Eu descartei imediatamente essa ideia e previ a última semana: ou seja, eu cortei a última semana, dei o resto dos dias para os dados de treinamento e previ honestamente dia após dia da última semana, ou seja, peguei dados de uma semana atrás para previsão. Mas aqui também surgiu uma dificuldade. Eu fiz um modelo que prevê a segunda semana perfeitamente, adicionei um monte de recursos que ajudaram nisso, mas descobri que o modelo,que prediz a segunda semana muito bem, prediz a terceira muito mal. Estou começando a pensar que talvez fosse mais fácil colocar os dados manualmente e não usar o aprendizado de máquina, e esse modelo poderia ser melhor.



- Você está falando sobre olhar o número com os olhos e desenhar uma linha mais adiante?



- Analise estatísticas mensais. Esses dados se encaixam bem em alguma curva. Todas essas estatísticas são um tanto estranhas e nem todas as pessoas doentes entram nelas. Assim, as estatísticas não refletem o número de casos. Eu sei que alguns caras usam o modelo SEIR (modelo epidemiológico) para tal. Também pensei em usar, mas aí resolvi que deveríamos saber exatamente quantas pessoas estão doentes, mas não sabemos. Esse modelo está vinculado a quantas pessoas uma pessoa infecta e quantas pessoas ficam doentes. Se não conhecermos esses dados, não poderemos trabalhar com eles. Na minha opinião, esse modelo forneceria uma previsão errada. *



* Analisaremos as vantagens e desvantagens do modelo SEIR com Nikolai Kobalo no próximo artigo



. Parece-me razoável que as pessoas que fazem isso devam primeiro fazer tudo usando um computador e depois editar e consertar manualmente. A máquina às vezes emite todo tipo de bobagem. Por exemplo, ela vê que na China o número de casos não cresce há muito tempo, mas ao mesmo tempo em outras regiões nada cresce há muito tempo, e então começa um crescimento explosivo. E com base nisso, a máquina “entende” que o mesmo deve ser feito para a China, que, de fato, já tem um patamar. E ele começa a dar não 80k, mas deixa abruptamente um milhão. Eu tive isso em um dos modelos.



- E os modelos tradicionais? O que você pensa deles? Análises de séries temporais como ARIMA?



- Tentei ARIMA algumas vezes, mas nunca deu um resultado melhor do que o aumento de gradiente. Parece que o ARIMA pode explicar qualquer processo, mas descobriu-se que nem sempre funciona melhor. Existem também vários parâmetros, o processo deve ser estacionário e assim por diante. Mesmo se você integrar, não é um fato que um processo estacionário irá resultar.



- Uma pergunta sobre árvores. Árvores não extrapolam. Como você os faz extrapolar?



- Para fazer isso, você precisa prever não o número total de infectados, mas algo mais. É claro que, se prevermos o total, em alguma região como Moscou não será possível prever, uma vez que as árvores não podem prever mais do que viram na amostra de treinamento. Tirei o logaritmo da proporção de doentes de hoje e dos dias anteriores. Esses números (0,3,1, talvez 2) estão na amostra de treinamento e o modelo é obtido. É claro que não seremos capazes de prever um aumento acentuado de 500 vezes. Este modelo está além do poder. Mas se estivermos falando, por exemplo, sobre a relação entre o ganho de hoje e o ganho de ontem, o valor será de cerca de um, e temos valores diferentes na amostra - neste caso, o modelo prevê perfeitamente .



- Como meta no modelo final, você tirou o logaritmo da proporção dos doentes de hoje para os doentes de ontem?



- Sim. Também tentei a proporção de deltas: "quanto cresceu para hoje", dividido por "quanto cresceu para ontem". Funcionou bem também. Mas o "número total" e o "aumento do número de casos por dia" funcionaram mal.



- O que você tomou como variáveis ​​explicativas?



- Levei cerca de 4 dias anteriores. Funcionou. Peguei informações sobre a população, o número de fumantes, etc. Adicionadas várias estatísticas diferentes. E então passei uma semana olhando quais fatores aumentam e quais não. Mas a situação está mudando muito, esses fatores acabaram não sendo estáveis, mas aleatórios.



- O que acabou sendo estável, além dos valores anteriores?



- O mais importante que influenciou foi o número de dias desde a primeira doença, décimo, centésimo ... No começo tirei o número de dias do primeiro infectado, mas achei que não era muito bom, pois muitas vezes o primeiro infectado é rapidamente isolado e não leva a um aumento acentuado. Portanto, comecei a pegar 10 infectados, depois caí para 100 e 1000 infectados.



No terceiro estágio desta tarefa, adicionei 50 e 500 infectados, e isso foi uma piada cruel comigo: a modelo estava muito treinada em excesso e começou a prever mal na próxima semana.



Dados mais importantes, tentei o índice de auto-isolamento. Em algumas semanas, deu um forte aumento, e em algumas não importou nada. Usei dados sobre o nível de atenção à saúde: quais valores são repassados ​​aos médicos, quantos médicos em geral existem no país, quantos idosos, etc. Isso foi feito para prever a mortalidade.



Havia vários problemas que eu queria resolver. Veja o auto-isolamento, por exemplo. Percebi que o nível de auto-isolamento não afeta o amanhã, mas a data em duas semanas. E não é um fato que o auto-isolamento afeta o número de casos; talvez, ao contrário, o número de casos afete o nível de auto-isolamento.



, - Casual Inference in ML ( https://ods.ai/tracks/causal-inference-in-ml-df2020/) – 2020 – -, - COVID-19 , .. , .




- Que conclusão você tiraria sobre os modelos de ML em geral, não em relação a este problema? Sua afirmação parece que você precisa "cuidar" de modelos ...



- Há tarefas que um computador resolve muito melhor do que um ser humano. Por exemplo, a última competição em que participei foi o Exame de Estado Unificado em russo. Meu modelo era melhor nessas tarefas do que eu. Mas isso é processamento de texto ...



Por que há tantos doentes em São Petersburgo e MSC? Estamos sendo testados sem exceção. Não direi que em outras regiões eles testam de forma tão massiva. Por exemplo, as estatísticas incluem 100 pessoas. O que isto significa? Três semanas atrás, eles foram infectados. Como resultado, não prevemos o número de casos, mas algum outro valor. E como esse número se correlaciona com o número de casos não é muito claro. Um computador não pode prever nada normalmente se dermos a ele números incompreensíveis.



Quem se importa, aqui está minha solução: https://github.com/vlomme/sberbank-covid19-forecast-2020



, – 10, 100, 1000 (, , ).



. . , , , , , 2021.



, , .




* «Forecast the Global Spread of COVID-19»



All Articles