Machine learning, and by extension most artificial intelligence, has grown from a niche idea to a tool that is being applied in multiple areas and industries.
At EE we have been involved in developing and deploying machine learning for a number of applications, including to:
Assess cyber-risk
Evaluate financial risk
Improve search and recommendations in retail web sites
Price used vehicles
Improve logistics and supply chains
An ML solution depends on both the algorithm - which is code - and the data used to develop and train that algorithm. For this reason, developing and operating solutions that use ML components is different to standard software development.
This playbook brings together our experiences working with algorithm developers to make machine learning a normal part of operations. It won’t cover the algorithm development itself - that is the work of the data scientists. Instead it covers what you need to consider when providing the architecture, tools and infrastructure to support their work and integrate their outputs into the business.
It is a common mistake to focus on algorithms - after all they are very clever, require deep expertise and insight and in some cases seem to perform miracles. But in our experience, obtaining business value from algorithms requires engineering to support the algorithm development part of the process alongside integrating the machine learning solution into your daily operations. To unlock this value you need to:
Collect the data that drives machine learning and make it available to the data scientists who develop machine learning algorithms
Integrate these algorithms into your everyday business
Configuration control, deploy and monitor the deployed algorithms
Create fast feedback loops to algorithm developers
As with all of our playbooks we have written this guide in the spirit of providing helpful advice to fellow developers creating ML solutions. If you are starting on the ML journey we hope you are not daunted by all the things covered in this playbook. Starting small and being lean in your implementation choices at the start is perfectly fine and will probably help you to iterate quicker.
Machine learning (ML) - a subset of AI that involves training algorithms with data rather than developing hand-crafted algorithms. A machine learning solution uses a data set to train an algorithm, typically training a classifier that says what type of thing this data is (e.g. this picture is of a dog ); a regressor, which estimates a value (e.g. the price of this house is £400,000.) or an unsupervised model,such as generative models like GPT-3, which can be used to generate novel text). Confusingly, when data scientists talk about regression it means something completely different than is meant when software engineers use the same terminology.
Model - In machine learning a model is the result of training an algorithm with data, which maps a defined set of inputs to outputs. This is different from the standard software use of the term ‘data model’ - which is a definition of the data entities, fields, relationships etc for a given domain, which is used to define database structures among other things.
Algorithm - we use this term more or less interchangeably with model. (There are some subtle differences, but they’re not important and using the term ‘algorithm’ prevents confusion with the other kind of data models).
Ground-truth data - a machine-learning solution usually needs a data set that contains the input data (e.g. pictures) along with the associated answers (e.g. this picture is of a dog, this one is of a cat) - this is the ‘ground-truth.’
Labelled data - means the same as ground-truth data.