Ilmu Data vs COVID-19_Part 1





Sudah jelas bahwa pada tahun 2021 COVID-19 akan tetap ada, seperti yang mereka katakan, dalam agenda. Ini berarti pertanyaan yang muncul secara alami: apakah kita memiliki alat untuk memprediksi pertumbuhan dan penurunan insiden, dapatkah kita memprediksi perkembangan kejadian dalam seminggu, sebulan atau bahkan setahun? Mari kita cari tahu.


Diberikan: kemampuan ilmu data kolosal, tiga spesialis berbakat.

Temukan: Cara memprediksi penyebaran COVID-19 seminggu ke depan.



Solusi:



Sebenarnya akan ada tiga solusi, ikuti publikasi. Dan hari ini kita akan membahas salah satunya, dengan Vladislav Kramarenko. Dia menemukan model yang mampu membuat perkiraan * paling akurat untuk seluruh dunia selama seminggu ke depan.



- Vladislav, halo. Mari kita bahas secara mendetail apa yang Anda lakukan: apa yang terjadi, apa yang masih harus dikerjakan, kesalahan apa yang terjadi dan bagaimana hal itu dapat diperhitungkan di masa mendatang. Mari kita mulai dengan hal utama: beri tahu saya, algoritma pembelajaran mesin apa yang Anda gunakan?



- Saya berhenti di peningkatan gradien. Kesulitannya adalah bahwa peningkatan gradien berbeda dan memberikan gambaran yang berbeda. Saya memiliki skor adaboost terbaik, diikuti oleh Catboost.



- Maksud saya, Anda mencoba yang berbeda, dan adaboost menjadi yang terbaik?



- Iya. Yang terbaik adalah adaboost, itu memberikan ramalan paling moderat. Jika kami melihat bahwa semuanya berkembang pesat, itu berarti semuanya akan terus berkembang pesat untuk algoritme, dan peningkatan lainnya mendorong perkiraan ke awan di suatu tempat. Tapi adaboost adalah yang paling konservatif.



- Bagaimana Anda melatih model?



- Kesulitan terbesar dalam masalah tersebut adalah menemukan cara yang tepat untuk melatih model, yaitu membuat pilihan yang tepat untuk sampel pelatihan dan pengujian. Jika kita mengambil 1 hari sebagai sample test dan membagi semua data menjadi data training dan test, ternyata kita prediksi hanya untuk 1 hari saja. Ini tidak sulit - Anda hanya perlu menyebarkan hari-hari untuk pelatihan dan ujian secara acak, dan 1 hari dapat diprediksi. Saya segera membuang ide ini dan memprediksi minggu lalu: yaitu, saya memotong minggu lalu, memberikan sisa hari ke data pelatihan, dan memprediksi dengan jujur ​​hari demi hari minggu lalu, yaitu, saya mengambil data dari seminggu yang lalu untuk prediksi. Tapi di sini juga, muncul kesulitan. Saya membuat model yang memprediksi minggu kedua dengan sempurna, menambahkan banyak fitur yang membantu dalam hal ini, tetapi ternyata model tersebut,yang memprediksi minggu kedua dengan sangat baik, memprediksi minggu ketiga dengan sangat buruk. Saya mulai berpikir bahwa mungkin akan lebih mudah untuk meletakkan data secara manual dan tidak menggunakan pembelajaran mesin, dan model seperti itu bisa lebih baik.



- Apakah Anda berbicara tentang melihat nomor dengan mata Anda dan menggambar garis lebih jauh?



- Analisis statistik bulanan. Data ini cocok dengan baik di beberapa kurva. Semua statistik ini agak aneh, dan tidak semua orang sakit membahasnya. Dengan demikian, statistik tidak mencerminkan jumlah kasus. Saya tahu bahwa beberapa orang menggunakan model SEIR (model epidemiologi) untuk tugas semacam itu. Saya juga berpikir untuk menggunakannya, tetapi kemudian saya memutuskan bahwa kami harus tahu persis berapa banyak orang yang sakit, tetapi kami tidak tahu. Model ini terkait dengan berapa banyak satu orang yang menginfeksi, berapa banyak orang yang sakit. Jika kami tidak mengetahui data ini, maka kami tidak akan dapat mengerjakannya. Menurut saya, model seperti itu akan memberikan prediksi yang salah. *



* Kami akan menganalisis keuntungan dan kerugian model SEIR dengan Nikolai Kobalo di artikel berikutnya



Tampaknya masuk akal bagi saya bahwa orang yang melakukan ini harus terlebih dahulu melakukan semuanya menggunakan komputer, lalu mengedit dan memperbaikinya secara manual. Mesin terkadang mengeluarkan segala macam omong kosong. Misalnya, dia melihat bahwa di China jumlah kasus tidak bertambah dalam waktu yang lama, tetapi pada saat yang sama di wilayah lain tidak ada yang tumbuh dalam waktu yang lama, dan kemudian pertumbuhan eksplosif dimulai. Dan atas dasar ini, mesin tersebut “memahami” bahwa hal yang sama harus dilakukan untuk China, yang, pada kenyataannya, sudah berada pada dataran tinggi. Dan dia mulai memberi bukan 80rb, tetapi tiba-tiba meninggalkan satu juta. Saya punya ini di salah satu model.



- Dan bagaimana dengan model tradisional? Apa pendapatmu tentang mereka? Analisis deret waktu seperti ARIMA?



- Saya mencoba ARIMA beberapa kali, tetapi tidak pernah memberikan hasil yang lebih baik daripada peningkatan gradien. Tampaknya ARIMA dapat menjelaskan proses apa pun, tetapi ternyata tidak selalu berfungsi lebih baik. Ada juga banyak parameter, prosesnya harus stasioner, dan sebagainya. Bahkan jika Anda mengintegrasikan, itu bukanlah fakta bahwa proses stasioner akan berubah.



- Pertanyaan tentang pohon. Pohon tidak mengekstrapolasi. Bagaimana Anda membuat mereka melakukan ekstrapolasi?



- Untuk melakukan ini, Anda perlu memprediksi bukan jumlah total yang terinfeksi, tetapi sesuatu yang lain. Jelas bahwa jika kita memprediksi totalnya, maka di beberapa wilayah seperti Moskow tidak akan mungkin untuk memprediksi, karena pohon tidak dapat memprediksi lebih dari yang mereka lihat dalam sampel pelatihan. Saya mengambil logaritma rasio orang sakit untuk hari ini dan hari-hari sebelumnya. Angka-angka ini (0,3,1, mungkin 2) ada dalam sampel pelatihan dan model diperoleh. Jelas bahwa kami tidak akan dapat memprediksi peningkatan tajam sebanyak 500 kali lipat. Model ini melampaui kekuatan. Tetapi jika kita berbicara, misalnya, tentang rasio keuntungan hari ini dengan keuntungan untuk kemarin, angkanya sekitar satu, dan kita memiliki nilai yang berbeda dalam sampel - dalam hal ini, model memprediksi dengan sempurna .



- Sebagai target pada model terakhir, apakah Anda menghitung logaritma rasio antara yang sakit hari ini dengan yang sakit kemarin?



- Iya. Saya juga mencoba rasio delta: "berapa banyak yang tumbuh hari ini", dibagi dengan "berapa banyak yang tumbuh kemarin." Ini bekerja dengan baik juga. Tetapi "jumlah total" dan "peningkatan jumlah kasus per hari" bekerja dengan buruk.



- Apa yang Anda anggap sebagai variabel penjelas?



- Saya mengambil sekitar 4 hari sebelumnya. Berhasil. Saya mengambil informasi tentang populasi, jumlah perokok, dll. Menambahkan banyak statistik berbeda. Dan kemudian saya menghabiskan waktu seminggu untuk melihat faktor mana yang memberikan peningkatan dan mana yang tidak. Tetapi situasinya berubah terlalu banyak, faktor-faktor ini ternyata tidak stabil, agak acak.



- Apa yang ternyata stabil, selain dari nilai sebelumnya?



- Hal terpenting yang mempengaruhi adalah jumlah hari sejak penyakit pertama, kesepuluh, keseratus ... Awalnya saya mengambil jumlah hari dari pertama terinfeksi, tetapi saya pikir ini tidak terlalu baik, karena sering yang pertama terinfeksi dengan cepat diisolasi, dan itu tidak menyebabkan peningkatan tajam. Oleh karena itu, saya mulai mengambil 10 terinfeksi, lalu turun menjadi 100 dan 1000 terinfeksi.



Pada tahap ketiga dalam tugas ini, saya menambahkan 50 dan 500 yang terinfeksi, dan ini memainkan lelucon yang kejam pada saya: modelnya sangat terlatih dan mulai memprediksi dengan buruk minggu depan.



Data yang lebih penting, saya mencoba indeks isolasi diri. Pada beberapa minggu hal itu memberikan peningkatan yang kuat, dan pada beberapa minggu hal itu tidak menjadi masalah sama sekali. Saya menggunakan data pada tingkat perawatan kesehatan: berapa jumlah yang ditransfer ke dokter, berapa banyak dokter secara umum di negara ini, berapa orang lanjut usia, dll. Ini dilakukan untuk memprediksi kematian.



Ada berbagai masalah yang ingin saya selesaikan. Ambil isolasi diri, misalnya. Saya menyadari bahwa tingkat isolasi diri tidak mempengaruhi hari esok, tetapi tanggal dalam dua minggu. Dan ini bukanlah fakta bahwa isolasi diri mempengaruhi jumlah kasus; mungkin, sebaliknya, banyaknya kasus mempengaruhi tingkat isolasi diri.



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




- Kesimpulan apa yang akan Anda buat tentang model ML secara umum, bukan terkait dengan masalah ini? Pernyataan Anda terdengar seperti Anda perlu "menjaga" model ...



- Ada tugas yang diselesaikan komputer jauh lebih baik daripada manusia. Misalnya, kompetisi terakhir yang saya ikuti adalah Ujian Negara Bersatu dalam bahasa Rusia. Model saya lebih baik dalam tugas-tugas ini daripada saya. Tapi ini pengolah kata ...



Mengapa ada begitu banyak orang sakit di St. Petersburg dan MSC? Kami sedang diuji tanpa kecuali. Saya tidak akan mengatakan bahwa di daerah lain mereka menguji secara besar-besaran. Misalnya, statistik mencakup 100 orang. Apa artinya ini? Tiga minggu lalu mereka terinfeksi. Hasilnya, kami memprediksi bukan jumlah kasus, tetapi beberapa angka lainnya. Dan bagaimana angka ini berkorelasi dengan jumlah kasus tidak terlalu jelas. Komputer tidak dapat memprediksi apa pun secara normal jika kita memberikannya angka yang tidak dapat dipahami.



Siapa yang peduli, inilah solusi saya: https://github.com/vlomme/sberbank-covid19-forecast-2020



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



. . , , , , , 2021.



, , .




* «Forecast the Global Spread of COVID-19»



All Articles