I’m going to be doing some posts on machine learning, artificial intelligence, and data mining over the coming weeks and months as I try to crank out a thesis.  Since machine learning isn’t a topic that a lot of developers are familiar with, I decided it would be best to write up a brief summary of what machine learning encompasses and why you should care.  If you have any questions after reading this, please let me know in the comments.  I need to be very solid at explaining machine learning to an uninformed reader if I’m going to crank out a decent thesis…

Machine learning, at its most basic level, is a field that is concerned with techniques that allow computers to "learn".   It is often confused with artificial intelligence, data mining, and other related fields.  That’s because many applications of machine learning (or AI, or data mining) tend to straddle the fence between fields as opposed to being purely in one domain or another.  So, machine learning is any computer system that has the capability to learn.  The formal definition of "learn" is typically something like "a system can learn if it can improve its performance at some task based on experience at performing that task".  Basically, if it can get better at something automagically, it is learning. 

Machine learning is a *huge* field with many diverse applications.  My area of research is focused mainly on two applications of machine learning: classification (a form of supervised learning, which we’ll talk about in the future) and clustering (a form of unsupervised learning).  There are many other applications that will probably be discussed in future posts (if I ever get the itch). 

Classification deals with trying to classify some individual with respect to a target class or set of target classes.  For example, I’m working on a medical system that takes in a patient data (such as age, blood pressure, pulse, and respiratory rate) and tries to determine whether or not that person is critically injured.  The system does that by using machine learning.  We feed the system a training set, which contains patient data that has been labeled apriori with the correct class, and the system learns how to classify critically injured patients from non-critically injured ones.  The magic is that the machine is able to apply what it learns to patient data that it hasn’t seen before.  If it wasn’t able to make this inductive leap, the system would be a look-up table. 

Clustering deals with trying to place individuals together into groups (called clusters).  There are many techniques for doing this, but most are still accomplishing the same task: creating clusters wherein individuals in the same cluster are similar to one another and dissimilar to individuals in other clusters.  Clustering algorithms typically need to know a few things: the number of clusters that exist, and how to calculate the ‘distance’ between individuals (there are several clustering systems that can determine the number of clusters automatically, but most basic clustering algorithms are not capable of making that determination).  Unlike in classification where the goal is to predict some target classification, clustering doesn’t care about class labels.  It looks at all the attributes of the data in the training set and groups them by similarity.  New items can then be clustered to previously built categories as needed.


So, machine learning deals with anything in which a computer system "learns"; it gets better at some task based on experience.  Machine learning is not a synonym for artificial intelligence, though the two are related.  It is  a very broad field that provides useful tools capable of solving complex problems in elegant ways.

In the next post on this topic, we’ll delve in to why you should care about machine learning (here’s a hint: you are probably already leveraging it and don’t even know it, but if you’re not, you’re working way too hard!)