Tuesday, March 24, 2020

COVID hackathon

So, with the onset of COVID-19, all the governments are doing whatever they can to support the fight against the virus.

On those lines, I came across a portal

https://www.bundesregierung.de/breg-de/themen/coronavirus/wir-vs-virus-1731968

where the German Govt organized a 48 hour Remote Hackathon asking the public to come up with possible solutions/prototypes to tackle several challenges. Some of those challenges were -  optimal resource(staff, medical equipment..) allocations, handling mental conditions of people while at home-isolation, remote assistance/ diagnosis and recommendations for concerned patients. I personally liked the idea of alerting an individual about how risky is his current situation (using GPS, the infection spread at his location, predicting /estimating spread) allowing him/her to plan their travel accordingly.

I got a chance to be a part of the event with a team from my workplace. Although everything was in German, it felt really good to be a part of something and contribute.

With a decently huge team, after a bunch of brainstorming we came up with the idea that supported the following functionalities:

  • Diagnose and recommend the next steps of actions for a patient after he takes a questionnaire. (of course, leveraging an expert system here)
  • Support a dashboard of statistics that deep dives on the available data from official platforms (via APIs) and provide visualizations on the analyzed data. Eg: Temporal evolution of cases per state, Cases divided by age groups and Gender, Geographical heatmap on the severity of infection spread, etc.
  •  Pass the results from the questionnaires to a model to predict how "COVID-19" the patient is. (scale of 0-1)
  • Use the predictions from the model, to chart out the potential cases that could be seen in the coming days in a given geographic area.
  • Allow the registered hospitals across the country to register encountered cases on a daily basis that can, in turn, be used to derive statistics.
  • Expose the derived stats to the interested 3rd parties.
  • All the above insights might provide the government to come up with a decent plan to tackle the situation.
I was initially asked to come up with a very raw wireframe for the app. I suck at UI, still, I  thought at least I'll try to have a decent flow for the app as per:


I tried to have 2 roles, patient and the admin, as the patient does not need to know the statistics (for all we know, he might panic even more!) . The admin will have access to see the stats, register cases for a hospital etc.

There were amazing UI, Backend and Data Science experts in the team who were involved in building of the prototype. I tried to squeeze myself in one of the data science tasks. As it was just a prototype, and due to time limitations, we decided to use a snapshot of the actual data and build the above functionalities (hence, db or no db doesn't make much of a difference here).  

I contributed in the tasks of data gathering, data munging, basic EDA on the data and finally visualising the insights. Used Python for these tasks and plotly for plotting. Felt good :) 
Also, while we were exploring the feasibility of having MongoDB, I also setup a basic Node JS server and doing a basic CRUD on MongoDB,  although, it wasn't possible to have it, as I had to focus on the data science parts.

Finally, it was amazing to see the coordination within the team and integrating all the moving parts. Not only did I get to explore technical stuff (WebApp stuff, Data stuff) but also several aspects in managing a team/ provide constructive suggestions, / organisational tools, discuss possible approaches to achieve a subtask etc. Would've enjoyed even more had I known German :-\

And we had the submission:


and the app is running here:


Everyone killed it hard! Kudos to the team.

Improvements from my perspective:
  • Currently the model predicts the degree of sickness using the patient's response from the questionnaire as inp features. It might be too biased to rely on the features entirely, as I think there is always the degree of uncertainty that should come to the picture. So I think, considering the distributions of the parameters of the model via Bayesian Learning (Bayesian Linear Regression or Bayesian Neural Network or as a Gaussian Process - via Kernelization) might make sense here as this approach allows us to have a sense of doubt while making predictions (the distributions gets updated via posterior beliefs).
  • Also, I think an Online Learning system might make sense here, as the model needs to improve on a real time basis as and when it encounters new data.
  • And if there is an issue of data privacy, there is this Federated Learning that allows the model to get trained and deployed across local devices without having a global access to their data. The final server will just exchange model parameters from the hospitals but not their actual data.
So combining these might make the system really powerful, am not sure about the intricacies, just a thought.




  

No comments:

Post a Comment