How to Explain Machine Learning to a Software Engineer

How do you explain what machine learning is to the uninitiated software engineer? Read on for one perspective on doing so.

Software engineering is about developing programs or tools to automate tasks. Instead of "doing things manually," we write programs; a program is basically just a machine-readable set of instructions that can be executed by a computer. Let's consider a classic example: e-mail spam filtering. Assuming that we have access to the source code of our e-mail client and know how to handle it, we could come up with an instinctive set of rules that may help us with our spam problem.

Some code

For example: if not "sender in contacts": if "subject line contains BUY!: e-mail spam folder:" else if ...

It is intuitive to say that coming up with these rules is a pretty tedious task. Needless to say that we have to test our spam filter on real-world data, evaluate and improve it constantly, change and update rules, and so forth. Again, our goal is automation: we want to write a set of instructions that automatically filters out spam e-mails so that we don't have to "manually" delete them from our e-mail inbox.

Now, machine learning is all about automating automation! Instead of coming up with the rules to automate a task such as e-mail spam filtering ourselves, we feed data to a machine learning algorithm, which figures out these rules all by itself. In this context, "data" shall be representative sample of the problem we want to solve -- for example, a set of spam and non-spam e-mails so that the machine learning algorithm can "learn from experience."

Traditional vs machine learning programming paradigms

In "conventional" programming, we code up a set of rules, feed it to the computer together with the data, and hope that it produces the desired results.

traditional programming:

  • set of rules + data -> computer -> results

    In machine learning, we take data (e.g., e-mails), provide information about the desired results (spam and non-spam labels for these e-mails), and feed it to a learning algorithm, which in turn executed by a computer. The computer then learns a set of rules that we can use to automate (solve) our problem task.

    machine learning:

  • results + data -> machine learning algorithm + computer -> set of rules

    Or in other words, machine learning is about finding the optimal instructions to automate a task. Machine learning algorithms are instructions for computers to learn other instructions automatically from data or experience. Therefore, machine learning is the automation of automation.

    Bio: Sebastian Raschka is a 'Data Scientist' and Machine Learning enthusiast with a big passion for Python & open source. Author of 'Python Machine Learning'. Michigan State University.

    Original. Reposted with permission.