I’ve now experienced machine learning in industry and academia, and my clinical training just didn’t let me look past the pitfalls of applying machine learning in a system.
I experienced machine learning in an academic and industrial setting. I cannot deny, the passion and dedication for machine learning are alive and well. There is no shortage of machine learning tutorials. However, my clinical experience pushed me to see something I couldn’t ignore.
Whilst my clinical years highlighted some noteworthy experiences, the majority of mistakes I witnessed were down to people mislabeling something, forgetting to check a blood test or hand over a task. In fact, good documentation would have prevented most of the mistakes I saw in clinical practice. However, good documentation is not sexy. Not many people go out of their way to attend a talk about it. If you want to become a well noted academic at an elite university, you’d be better off profiling biomarkers in a particular type of cancer, or testing a new imaging technique.
In industry, I saw the same distribution of interest in machine learning. Machine learning right now is sexy. You will see countless articles on how to train a convolutional neural network, recognize handwriting, experiment with reinforcement learning etc. But that’s it. That’s where they stop. If you want to deploy these algorithms, there’s a small number of guides that will show you how to pickle it and deploy it as a flask API.
Whilst it’s exciting to play with advanced machine learning, industry is like clinical practice. Those non-sexy issues can make or break machine learning implementation. Just getting a basic logistic regression implemented on a web platform involves a number of non-sexy tasks. Like the doctors and nurses who shot themselves in the foot after forgetting to document or hand over basic things, I’ve seen my fair share of software engineers and academics delay projects, render work useless and cause more harm than good because they dropped the ball on the small things.
After reading documentation from a developer containing the weights of a logistic regression with absolutely no labels (effectively rendering it useless), I decided enough was enough. I’d write my own open source wrapper for these machine learning libraries that did this stuff automatically. So I did that and called it deploy-ml.
Deploy-ML is an open source machine learning package for python. This enables the user to train, test, and deploy machine learning algorithms with ease. The deployment process takes one line of code and catches all of the data from the training process, saving that in the same file as the machine learning algorithm. Deploy-ml supports neural networks, support vector machines and random forests. However, if you want to define your SK-learn algorithm yourself, use the import function which is covered here. I’m currently working on Keras support. Will hopefully get that up and running in the next couple of months. We have already managed to work around some things and make the pickling of Keras models possible.