Difference between Machine Learning and Traditional Programming

While some call AI and ML overhyped themes that are nothing more than if statements, or just programming stuff, I offer you to come face to face with all pieces of evidence to check this out. In this post, I will contrast these terms and also showcase the difference between the specialists who are involved in these two spheres: who are they? Software engineer, software developer, machine learning expert, data scientist…some people even use a programmer or coder, and some even go as far as a ninja, guru, or rock star! But, are they really the same? And if so, is there a line between Machine Learning and Traditional Programming?

ML vs Programming: First, What’s Machine Learning?

It’s easy to say that AI and ML are nothing more than if statements. Or what is more, it is just simple statistics. What else do we hear about it? Is ML just a new word to describe math + algorithms? Sometimes such simplifications seem to be funny, but obviously, ML is more complicated.

But let’s have a look at a more appropriate explanation.

So, in simple words, Artificial Intelligence is an umbrella that contains other realms like image processing, cognitive science, neural networks and much more. Machine Learning is also a component located under this umbrella. Its core idea is that the computer does not just use a pre-written algorithm, but learns how to solve the problem itself. Or, to explain it in other words, there is an excellent definition by Arthur Samuel (who actually had coined the term of ML):

Machine Learning is a field of study that gives computers the ability to learn without being explicitly programmed.
So, yes, ML teach a machine to solve various complex tasks that are difficult to be solved algorithmically. What are those tasks? Well, you probably have already stumble at them in practice. For example, it can be face recognition on your phone or voice understanding, driving a car (Google Self-Driving Car), diagnose diseases by symptoms (Watson), advise products, books (Amazon), movies (Netflix), music (Spotify), perform the functions of a personal assistant (Siri, Cortana)…this list can go on and on.

Okay, I hope it was clear enough and now it’s time to move on onto another important thing about ML.

Any working ML-technology can be conditionally attributed to one of three levels of accessibility. What does this mean? Well, the first level is when it is available exceptionally to major tech-giants like Google or IBM. The second level is when, let’s say, a student with a certain amount of knowledge can use it. And the last one, the third level of ML accessibility is when even a granny is able to cope with it.

What we have on the current stage of development is Machine learning at the junction of the second and third levels. Due to this, the rate of change of the world with the help of this technology grows with cosmic speed.

Last but the least thing about ML: most of the ML-tasks can be divided into learning with a teacher (supervised learning) and learning without a teacher (unsupervised learning). And if you imagine a programmer with a whip in one hand and a piece of sugar in the other, you are a little bit mistaken.

The name “teacher” means the idea of human intervention in data processing. When training with a teacher, which is supervised learning, we have the data, and we need to predict something on its basis. On the other hand, when teaching without a teacher, which is unsupervised learning, we again have the data, but here we need to find its properties.

ML vs Programming: Okay, Then How it differs from Programming?

In traditional programming you hard code the behavior of the program. In machine learning, you leave a lot of that to the machine to learn from data.
Consequently, these terms are no way interchangeable: data engineer can’t replace the work of traditional programming and vice versa. Although every data engineer is obliged to use at least one coding language, traditional programming is only a small part of what he (or she?) does. On the other hand, we can’t say software developer is using ML-algorithms to launch a website.

ML just like AI is not a substitution, but supplementation for traditional programming approaches. For instance, ML can be used to build predictive algorithms for an online trading platform, while the platform’s UI, data visualization and other elements will be performed in a mainstream programming language such as Ruby, or Java.

So, here is the main thing: ML is used in the case when traditional programming strategy falls behind and it is not enough to fully implement a certain task.

What does this mean in practice? Here is a great explanation on the basis of a classical ML-problem of exchange rate forecasting and two different ways to do it:

Traditional programming approach

For any solution, the first task is the creation of the most suitable algorithm and writing the code. Thereafter, it is mandatory to set the input parameters and, in fact, if an implemented algorithm is ok it will produce the expected result.

How a software developer creates a solution

However, when we need to predict something, we need to use an algorithm with a variety of input parameters. In case of prediction of the exchange rate, it’s mandatory to add such details like yesterday’s rate; external and internal economic changes in the country that issues the currency and more.

Consequently, we handcraft a solution that is able to accept a set of parameters and, based on the input data, predict a new exchange rate.

But it’s extremely important to add one more thing or to be more clear one problem of such an approach. So what is it?

Well, it’s simple, we need to add a thousand and hundreds of parameters, whereas their limited set allows building a very basic and unscalable model. So yes, for any person is troublesome to work with such massive data arrays.

Then we have a slightly different Machine learning approach for this task, so what is it?

To solve the same problem using ML-methods, data engineers use a totally different procedure. Instead of developing an algorithm on its own, they need to collect an array of historical data that will be used for semi-automatic model building.

Following managing a satisfactory set of data, the data engineer loads it into already tailored ML-algorithms. The result is a model that can predict a new result, receiving new data as input.

How a data engineer develops a solution using machine learning

A distinctive feature of ML is there is no need to build a model. This complicated yet meaningful responsibility is executed by ML-algorithms. And ML expert will only add just a minor edit to this.

Another significant difference between ML and Programming is determined by the number of input parameters that the model is capable of processing. For an accurate prediction, you have to add thousands of parameters and do it with high accuracy, as every bit will affect the final result. A human being a priori cannot build an algorithm that will use all of those details in a reasonable way.

However, for ML, there are no such restrictions. As long as you have enough processor power and memory, you can use as many input parameters as you see fit. Undoubtedly, this fact makes ML be so powerful and widespread nowadays.

Summing it up: ML expert, Data scientist, programmer, and software engineer…who is who?

According to Wiki,** Data Science*** is a multi-disciplinary field that uses scientific methods, processes, algorithms, and systems to extract knowledge and insights from structured and unstructured data.*
So far it does not sound very cool.

But then there is something interesting:

use the most powerful hardware, the most powerful programming systems, and the most efficient algorithms to solve problems.
And then even more interesting part:
In 2012, Harvard Business Review called it The Sexiest Job of the 21st Century.
So, Data Science is another extensive umbrella, just like Computer Science, only Data Science aimed at processing data and extracting useful information from them.

What about programming? Data scientists nowadays do it exceptionally in the interest of research. They are not only programmers, but they are also usually supposed to have an applied statistics or research background. Some also do software engineering, especially at companies serving data science/ML in their products. The most interesting thing is that Data Scientist is not obliged to be able to program well, but can be limited to tools like Matlab, SPSS, SAS, etc.

What then is the position of Machine Learning Engineer?

The position of the Machine Learning Engineer is more “technical”. In other words, ML Engineer has more in common with classic Software Engineering than Data Scientist.

The standard tasks of ML Engineer are generally similar to Data Scientist. You also need to be able to work with data, experiment with different machine learning algorithms that will solve the problem, create prototypes and ready-made solutions.

Of the key differences, I would highlight:

  • Strong programming skills in one or more languages (usually Python);
  • Less emphasis on the ability to work in data analysis environments, but more emphasis on Machine Learning algorithms;
  • The ability to use in the application ready-made libraries for different stacks, for example, NumPy / SciPy for Python;
  • The ability to create distributed applications using Hadoop and more.

And now let’s move back to the programming and have a closer look at what tasks are assigned to the programmer.

A programmer is actually someone like a data analyst or business systems developer. They don’t have to build systems themselves, they just write a loosely structured code against existing systems. So, yes, we can call data science a new wave of programming, but coding is only a small part of it. So, don’t be mistaken.

But if digging deeper, we will found out there are other terms like **Software Engineer **and Software Developer, and both of them are also not similar. For example, software engineers have to engineer things. They deal with production applications, distributed systems, concurrency, build systems, microservices. And just for the record, a software developer needs to understand all the cycles of software development, not just implementation (which sometimes won’t even need any programming or coding).

So, programming and machine learning…do you feel the difference now? I hope this post helped you to avoid confusion around those terms. Undoubtedly, all of them have something in common which is technology, but the number of their differences is much bigger. Thus, ml-engineer, software engineer and software developer are completely not interchangeable.

#machine-learning #data-science #artificial-intelligence

Machine Learning vs Traditional Programming
131.40 GEEK