Machine Learning - How do you start to leverage it?
With driver-less cars already round the corner cognitive computing is with us now.
However for a lot of folks in the IT world getting to a point where they can grasp Machine Learning and then even identify areas to apply seems elusive - at least for me it was till about a year back.
Let me share a few thoughts here on my personal journey and attempt to simplify the area a bit.
Fundamentally algorithms and data structures are at the heart of this and embedded in it are the principles of association. There are open source algorithms and you don't need to re-invent anything.
I was watching a demo of ML being applied to scan product labels and the ability to read the label and categorize the item e.g. cookies, medicine, soap etc. I thought can we do the same with documents and we extended that to scanning OCR documents and applying ML to parse and understand the documents. The idea was to understand the documents enough to categorize them. This was learning and had pushed this out without calling it machine learning.
This is a simple use case - no fancy robots, no intelligent cognitive stuff but a simple start to incorporating machines in your environment. It is my belief that in many cases this approach would be a good start. This approach can slowly get in machine projects alongside other projects and then the teams can integrate as the outputs can be then taken to the next level.
Parse documents to categorize them by supervising the learning i.e. you tell the machine if a category is wrong and why and it will learn. The machine needs a good sized data set and in time you will have built a good machine. This simple achievement in itself produces enormous productivity gains and cost gains.
Then once you read you can extract as well and you soon have a powerful scan, parse , categorize and extract machine.
Once you extract you can do all sorts of things - publish it, use the data to go against databases to check items and then extend the learning process from there.
I have just outlined a simple way to get started and it incorporates my experience with one use case. I believe I have just scratched the surface of the potential.
Let me now 'define' a machine and set some basics in a simple fashion and then move onto describing the use case.
ML definition
A ML system (also known as 'machine') typically comprises of three major components:
- A Model: which makes predictions or identifications
- Parameters to the machine : factors or inputs used by the model to form its decision.
- Learner part : system that adjusts the parameters and the model itself, based on differences in predicted versus actual output.
The model is the artifact or output created when the algorithm is fed the training data (in this case documents). When real life data is fed in the model predicts outcome based on the training data earlier. The learner component measures the difference between the real life output and the training output and adjusts the parameters to refine the model. Does this make sense? Stay with me.
The core algorithm takes the input data (documents in my case) and produces an output which could be word frequency for example (to simplify). When a real life document is input the output will tell us where it lands and we can then use the learner algorithm to correct that output if there is deviation. The core algorithm remembers this correction and the next time produces a better aligned output for real life. Makes sense?
So the better the training set of documents the better for the learning algorithm to refine the output of a real life document. This process fine tunes the categorization of documents.
Learning
Learning can be implemented in one of the following ways:
1.Supervised Learning - This is where human intervention to correct the output comes into play as above and remains a good starting point to derive reliable machines.
2. Unsupervised Learning
3. Reinforcement Learning
I will stay with supervised learning for now since that is the one I am familiar with so far and is usually the first level to implement.
What is amenable to ML?
So what scenario would you think of applying ML even to start with? Most of the time we worry about how to create SOA architecture and then take it to Micro Services and then talk about UX/UI etc. These would be the classic digital or legacy transformations or we work out the business process and bring in a workflow and rules engine etc but consider the following general principles to guide in potentially using ML (these are general guidelines from my own experience so far and must be thought through )
- Large volume of data is being needed to be processed - e.g. in the case above several documents are needed to be processed. Examples can be processing legal documents, content or insurance claims etc.
- Sometimes it is complex to create the output - e.g. multiple parameters to categorize or produce an output. One case which I have found is reviewing large content to produce specific links with distilled content maybe in regulations.
- The problem has to be well defined i.e. the question has to be precise like what is my category? It cannot be 'is this picture ugly or beautiful?.
ML can be used in the following situations as well
- Where there is large content to be analyzed and you need to recommend specific content. Data analysis or data mining from large unstructured and structured data.
- Where you need to understand the context e.g. analyzing the speech to text data from a service center to understand the overall trend and type of calls and issues.
- Where you need to predict trends in any ongoing activity like sales, treatment plans etc.
It has been my experience that the first project should be supervised learning and have limited and specific goals. What it means is that as far as possible keep the inputs to a a word or set of words and the outcome to be a value associated in terms of occurrence and context. Addressing large volume of documents worked well as the benefits are more immediate and build a good business case. This has been critical in my experience as then the organization sees the value quicker and the next project comes along easier.
A little deeper now
I am going to list a few of the common frameworks in the ML space. Please note that this is to merely familiarize with the name and start to get a little deeper.
- scikit-learn, Spark MLLib, mlpack, Accord.NET Framework, WEKA
- TensorFlow (+Keras), MXNet, caffe, CNTK, Nervana Neon
- Amazon Machine Learning
- Google Cloud Machine Learning
- Azure ML Studio
- Apache Flink
- Nervana Cloud® The Platform for Deep Learning
Some of the observations I have is that while open source is the way to go it does involve a lot of work to incorporate them into specific projects and a lot of prep work has to be done by the team.
to be continued...
Working on it but thanks Kalyan...