Executing Machine Learning at Scale and Speed
One of the current hot topics driving the in-memory domain is the potential associated with the application of Machine Learning technology. Like most marketing-level buzzwords, Machine Learning is something that has high awareness and low understanding, so we’ll walk through the framework of Machine Learning in this blog to add some context on what the potential applications are to in-memory processes.
When the term “machine” is used, it refers specifically to computer systems, mostly software, but also hardware since the chipset can affect speed, and speed is what separates machines from humans when it comes to process work. Machine Learning applications study data (of which there is no shortage) in order to detect patterns to which rules or categorization schemas can be applied. This helps in predicting outcomes based on the perceived data pattern or using an existing pattern to identify previously undetected patterns or anomalies in the data. The process the “machine” uses to recognize patterns or anomalies is basically an algorithm and there can be a wide range of algorithms (approaches) to a specific problem. The basic idea is that as the algorithm picks up new data, the process it relies on improves, and so the machine “learns.”
The application of Machine Learning is both broad and deep, but like most technologies, will be particularly effective under certain circumstances. Machine Learning works well under complicated conditions; when there is ambiguous or hard to codify data and the rules to sort through them are not particularly straightforward, or difficult to predict due to a high number of unknowns in the data set. It also works well when accuracy takes precedence over an easy interpretation of the data, when the data sets have a broad range of variables, the process is being applied to highly correlated data or requires integration of a broad range of data sources.
Taking this down one level, there are multiple ways to implement Machine Learning. The first implementation is referred to as supervised learning, which is pretty much what it sounds like; the machine is told what kind of answer is expected, data inputs and outputs are specified, and the Machine Learning software uses these parameters to predict the closest answer. Once the machine understands the starting and ending points of the process, this can then be used on problems with similar characteristics.
The next level is referred to as semi-supervised learning. The primary difference between supervised and semi-supervised is there is less contextual information delivered to a semi-supervised system. The system is expected to figure out some of the patterns or anomalies on its own – its given a partial set of parameters and it extrapolates the rest. This works well when the data volumes are too big to manage manually, or the data variables are too nuanced for human interpretation.
The next approach is unsupervised learning, where the machine parses the data looking for correlations and/or relationships without a specific answer in mind. This is effectively learning by experience, the machine looks for data points it can group into sets with consistent characteristics, without any specific parameters guiding it. As the machine does this over and over, the grouping and correlations become more nuanced and useful, so the more data the system has to work with, the faster it will move up the learning curve.
The last approach is reinforced learning, where the machine has specific rules it needs to follow that are designed to take it to a specific objective. The most obvious example would be Machine Learning and Artificial Intelligence used to play chess. There are very specific rules on how the pieces can move, but aside from that, the path to victory can take a nearly unlimited set of approaches to its objective. In this case, the Machine Learning needs to work within existing environmental parameters and continuously adjust its approach as variables shift.
For Machine Learning to be useful in business time (that is, how long do you want to keep a customer waiting?) it requires speed and scalability. As mentioned earlier, the larger the data set the machine works from, the faster it learns, becoming more effective in its application to a specific customer scenario. Combining an in-memory data grid where all the required data is right there in RAM (no network latency trying to get to a database), and a stream processing engine that can ingest vast amounts of incoming data to feed the app in-memory lets Machine Learning create a framework that opens up a broad range of applications that would have been unthinkable only a short while ago.
Example? A large enterprise uses in-memory technology to enable a Machine Learning application that draws in customer data from a huge range of sources (products in use by the consumer, mobile behavior, network services used, customer service history, etc.) that is entering the system continuously. This data provides the machine a 360° real-time view of the customer used to drive an Artificial Intelligence app for customer service. This is ideal for burst scenarios, for example, Game of Thrones stops streaming during the season premiere, and several million irate customers call in at the same time. It doesn’t matter how big the call center is, companies won’t be able to handle this volume. But, an AI-based customer service chat bot running in-memory? That’s exactly what this technology was designed to deal with; no hold times and customers interacting with a system that sounds so real most people are actually polite in their interactions.
So, is complex, subtle, and constantly changing data coming in from a wide range of sources continuously at high speed your challenge? Start with in-memory, which will vastly accelerate everything you do, then layer on Machine Learning and AI (or any other of a range of ridiculously cool technologies), and stay ahead of your customers. For further details on what in-memory can deliver, please click here.