Search

What is Machine Learning?

Updated: Apr 15



Machine Learning is probability.


Machine learning is about:

NOT 1 and 0s but P for Probability

NOT deterministic but STATISTICAL

NOT programming but TEACHING

Needs big data, a lot of data

Need (human) GOALS

Genie Problem


“A breakthrough in machine learning would be worth ten Microsofts” (Bill Gates, Chairman, Microsoft)

“Machine learning is the next Internet” (Tony Tether, Director, DARPA)

“Web rankings today are mostly a matter of machine learning” (Prabhakar Raghavan, Dir. Research, Yahoo)

“Machine learning is going to result in a real revolution” (Greg Papadopoulos, CTO, Sun)

“Machine learning is today’s discontinuity” (Jerry Yang, CEO, Yahoo)


History Of Machine Learning

It was back in 1945 when the first electronic general-purpose computer was developed. It was Turing-Complete, digital and able to solve a large class of numerical problems through reprogramming. The name of the computer was ENIAC (Electronic Numerical Integrator and Computer).


Though ENIAC was a machine meant for doing intensive numerical calculations, the idea behind its development was to build a machine to simulate human thinking.

But it not took many years after the development of ENIAC and in 1950’s Arthur Samuel, an American pioneer in the field of computer gaming and artificial intelligence coined the term “Machine Learning” while at IBM. It was also at that time a computer claimed to help checker players improve there experience came to existence.

At the same time, a very simple classifier named Perceptron was invented by Frank Rosenblatt. The perceptron was intended to be a machine, rather than a program. When it was combined with large numbers it became a powerful monster. This monster at that time was a real breakthrough. Then we saw a stagnation of machine learning and neural networks due to its difficulty in solving some problems


In the 1990s due to the intersection of computer science and statistics, machine learning again became popular and new probabilistic approach in AI developed. Since then, machine learning is a constantly evolving branch. The reason for this is also the development of better algorithms and increase in computational power in the last few years.


Humans Vs Machine


Ever thought how is a machine different from humans? Why can’t a machine learn by itself? Let us answer these questions in this section.

Our history and our literature show us that for most of human history machines were seen as tools to help people do more than they were capable of on their own. From simple stone tools to the inventions of the Iron Age and Bronze Age, technology augmented human capability for survival, Competitive advantage and convenience.

Machines followed orders of humans and performed tasks while humans are capable of performing tasks by themselves. Humans can do this because they learn from past experience and make a decision according to the experiences while the machine doesn’t learn from past experience. Thus, machines aren’t capable of making decisions by themselves.

Thus, a machine cannot learn by itself and requires to learn decision making. In ML we incorporate decision-making capabilities in machines so that they can mimic human behavior.


How to make a Machine Learn?


The most important thing that requires a machine to mimic human is having to learn to make decisions by itself from past experiences.

According to Tom Mitchell,a machine is said to learn from experience E with resect to some task T and some performance measure P,if its performance on T,as measured by P,improves with experience E.

In general, the following are the steps to make machines learn -

Gathering raw data or experienceConverting data into informationGathering knowledge from informationBecoming intelligent to make decision

To gather experience or raw data, we require a source and a technique for data extraction. The technique used here is Big Data Hadoop. The way of analyzing raw data and extracting information from it is called Big Data Hadoop.

For converting raw data into information we use Data Mining. The process of discovering patterns in large data sets involving methods at the intersection of statistics and database systems is called Data Mining.

Understanding all the parameters of information and gathering knowledge to become intelligent is done using Machine Learning. Machine Learning algorithms help a machine in making decisions by itself.


What is Machine Learning?

According to Arthur Samuel, Machine Learning algorithms enable the computers to learn from data, and even improve themselves, without being explicitly programmed.

Machine Learning (ML) is a branch of computer science where we develop algorithms that make a machine learn to do something without actually making computations about it. The basic premise of machine learning is to build algorithms that can receive input data and use statistical analysis to predict an output while updating outputs as new data becomes available.

Machine Learning is classified into 3 types of algorithms -

Supervised Learning

Unsupervised Learning

Reinforcement Learning


Difference between Artificial Intelligence, Machine Learning, and Deep Learning


Nowadays many misconceptions are there related to the words machine learning, deep learning and artificial intelligence(AI), most of the people think all these things are the same whenever they hear the word AI, they directly relate that word to machine learning or vice versa, well yes, these things are related to each other but not the same. Let’s see how.

AI means to replicate a human brain, the way a human brain thinks, works and functions. The truth is we are not able to establish a proper AI till now but we are very close to establish it, one of the examples of AI is Sophia, the most advanced AI model present today. The main goal here is to increase the success rate of an algorithm instead of increasing accuracy. It works like a computer program that does smart work.


Machine learning is one subfield of AI. The core principle here is that machines take data and “learn” for themselves. It’s currently the most promising tool in the AI kit for businesses. The main goal here is to increase the accuracy of an algorithm instead of its success rate.

There are some steps involved in machine learning which are a prediction, classification, recommendations, clustering and decision making. When all these five work together we call it artificial intelligence.


Deep Learning is a subset of ML. The main difference between deep and machine learning is, machine learning models become better progressively but the model still needs some guidance. If a machine learning model returns an inaccurate prediction then the programmer needs to fix that problem explicitly but in the case of deep learning, the model does it by himself. Automatic car driving system is a good example of deep learning.


Overview of Supervised Learning


In supervised learning, the algorithm is provided with a finite set of data which contains the right answers for each of the input values. The machine has the task to predict the right answers by analyzing the dataset correctly.


As shown in the above example, we have initially taken some data and marked them as ‘Tom’ or ‘Jerry’. This labeled data is used by the training supervised model, this data is used to train the model.

Once it is trained we can test our model by testing it with some test new mails and checking of the model can predict the right output.


Types of Supervised Learning


Regression: It is a type of problem where the output variable is a real value, such as “dollars” or “weight”.


Classification: It is a type of problem where the output variable is a category, such as “red” or “blue” or “disease” and “no disease”.


Overview of Unsupervised Learning


In unsupervised learning, the algorithm is provided with an unlabelled dataset and it predicts a pattern in the data.


In the above example, we have given some characters to our model which are ‘Ducks’ and ‘Not Ducks’. In our training data, we don’t provide any label to the corresponding data. The unsupervised model can separate both the characters by looking at the type of data and models the underlying structure or distribution in the data to learn more about it.


Types of Unsupervised Learning


Clustering: A clustering problem is where we group similar data according to a pattern in data, such as grouping customers by purchasing behavior.


Association: An association rule learning problem is where we want to discover rules that describe large portions of your data, such as people that buy X also tend to buy Y.


Overview of Reinforcement Learning

In reinforcement learning, the algorithm learns by interacting with the environment. The algorithm adjusts itself based on feedback.


In the above example, we can see that the agent is given 2 options i.e. a path with water or a path with fire. A reinforcement algorithm works on reward a system i.e. if the agent uses the fire path then the rewards are subtracted and the agent tries to learn that it should avoid the fire path. If it had chosen the water path or the safe path then some points would have been added to the reward points, the agent then would try to learn what path is safe and what path isn’t.


ML/DL Back-end


A machine learning engineer is just a specialized software engineer really, and one that only works on the backend. So in some way you could say that a machine learning engineer is a backend developer.


Yes, one needs to learn many of the skills of a backend developer, such as databases, web services, APIs, cloud services, deployment infrastructure and so on. Everything today happens on the web, so you need to learn about the web.


There are obviously differences. Most of your coding is probably done in Python, while a typical backend developer uses languages like Java and C#. And the code you write is very different. You’re implementing machine learning pipelines, and have a focus on performance. Typical backend developers spend much of their time writing efficient abstractions over CRUD operations.


Still, unlike a data scientist, you’re not just an analyst. You write production code, so you’re a software engineer like any other.


One of the biggest skills one needs to learn is Mathematics or Statistics. That is significantly more important than back-end skill, which I have to say, in turn is more important than front end or app skills to machine learning.


Maths or Stats, is the underpinning of all forms of machine learning. Don't let anyone fob that off by saying "there are libraries/services/frameworks to do that". You'll almost be guaranteed to not truly understand what the machine has found. That said, it's only if you have to process large amounts of stored data that you will need back end skills, but expect that you will come across a lot of it too. It's not impossible to do front end work for Machine Learning. As an example, I gave a talk at an Unconference last year and wrote a simple Genetic Algorithm in Javascript and D3 to illustrate the concepts at work. It's on JSBin somewhere.


Machine learning is rarely done on the client side because:

  1. They don't have sufficient processing power

  2. Anything on the client side is vulnerable to being stolen and used by someone else

  3. Machine learning is often self-correcting, and it's easier to send the data to the model than to send the model to the data and send updates back to the model


The backend developer (BD) needs to understand networks, protocols, data structures, algorithms, hacking, security, efficiency, storage, processing etc.


The two are fundamentally different skills. The backend developer (BD) needs to understand networks, protocols, data structures, algorithms, hacking, security, efficiency, storage, processing etc.


The data scientist (DS) needs to understand mathematics, statistics, analysis, hacking, probability, inference, logic, some algorithms, and domain knowledge. I’m not talking about simple Business Intelligence work (BI) where someone just plays with their packaged software to see if they can find anything useful, but a DS is a skilled analyst with the training and education to gain real insights, often using many tools and techniques, so that their BI or other work extracts actionable insights that simple analyses could never match.

There is some overlap, as both have strong computer skills. The BD doesn’t usually need strong math, stats or probability skills, but these are essential for the DS. The DS rarely deals with security, but it’s critical for BD’s these days.


Both need hacking skills, but they are utilized differently. For the DS, hacking comes about in taking the raw data and munging, cleaning, and manipulating it to put it into a useful form. They also need to play around with visualization and utilize various tools to get their analyses done. The DS uses whatever tools are available and does what it takes to get the job done. Hacking for a BD can mean a lot of things (though I’m not talking about breaking into systems). They might be looking at server logs and have to process them with a boatload of tools or just the few right tools. They might be trying to find the actual hacker who initiated a DDOS attack, or quickly patch a bug that brought down their servers.


The BD needs to understand algorithms and data structures to a larger degree than does a DS. As the BD is writing software, their choice of data structure can make orders of magnitude difference in performance. The DS will likely do lots of programming, but for analyses, not production release. Of course the DS will use statistical, mathematical and machine learning libraries in their code. While the choice of data structure or algorithm could potentially be important, it will likely impact only a few people, not the potential millions of people a BD has to think about. It’s useful for the DS to understand the algorithms s/he uses, as in machine learning or statistical calculations. However, unless you’re developing such algorithms, you don’t need to be an expert.


The DS also needs domain knowledge. You need to understand the business. You won’t be able to make good recommendations in finance if all you know is cars. The BD, on the other hand, is usually less knowledgeable on the business and their skills are more easily moved from one company to another in a completely different field.


So, I don’t believe having a backend development background is necessarily useful for a data scientist. If you need the job, then take it, but the skills are different enough that the BD experience won’t help you achieve a position in DS. However, depending on your background, it could still be useful experience. You decide.


Is machine learning and deep learning a better career than web development now?


Many bright young people ask themselves this question, and not without a reason. It’s true, machine learning is very important and it pays extremely well. But what is a “better career”, especially if we compare it with web development?

I will give you five reasons why web development is a better career than machine learning.

  1. It’s an endless supply of jobs Everyone either needs a website - or new features for it. The demand for web developers is huge - and it’s not going anywhere unless someone shuts down the internet. ML has a very high bar and the competition is shifted towards the best universities in the world.

  2. It’s much simpler to do - and it still pays very well I am not talking about how fascinating this job is. I know nothing about fascination with web development, but some people like it very much. There are challenging problems with it, but they are technical - which means, if you know your frameworks and browsers, you pretty much have it covered.

  3. It’s so, so much simpler to learn Forget about algebra, statistics, optimization. There’s a lot of other things to learn, and it’s not exactly a walk in the park, but web development has next to zero math involved.

  4. You have better odds of getting rich Let’s face it, most of the great products that actually make money are centered around some customer-related idea, not a brilliant invention. Facebook didn’t have neural nets. Neither did Snapchat, Dropbox, etc.

  5. You always know what’s possible So, you are going to build a website. Great, plan the functionality, sketch the design and start coding. You don’t have to do any magic, you just do your job every day, punch in the code, drink your coffee and collect your salary. You always know that at the end this website is going to have the exact functionality you’ve planned. That’s not the case with ML. xkcd, as always, gets it right:


So, if good odds are what you are after - web development is your choice. Everything is gonna be fine.


When I was more on the software development side, I always knew what can be done (only the time estimates…). Then just throw enough work into it and just build that thing. In science and ML you always have that nagging feeling: what of it isn't possible? Also, you have to deal with the inherent uncertainty. There is no classifier that will give you 100% correct for any complex problem. We know that, users often don't.


With more ML output being produced, there comes web development to create a dashboard/graph/visualizations that a user could understand.


Getting your AI skills up to a point where you can make money is much more difficult than achieving the same with web development. And one great website can make you a millionaire.


I’m foreseeing a shakeup in the Development world, where we shy away from mathematical algorithmic solutions in favor of Artificial Intelligence Solutions.


If all you want is to have a job that pays you a good living wage, web development will do fine. It is frequently tedious work in a very limited scope, however, and you aren’t at all likely to get rich doing it. ML is a tough field for sure, but anything is possible there.


If you write ML libraries like Theano or TF, it is very hard both on the technical and the algorithmic side. If you just stack layers in Keras, that’s not really that demanding.

Also, there are many fields in software engineering that are harder (when done properly) than ML development:

  • Encryption

  • Drivers and kernel development

  • Distributed HPC

  • Basically everything that’s close to hardware

Web programming is not a piece of cake for sure, but on average an ML developer needs more knowledge than a web developer, especially given the fact that webdevs don’t use math on a daily basis.


During one of my internships, I got to work with a very diverse team, and there were ML/DS guys that were developing distributed analytic platforms with a really impressive throughput. That platform had a neat web interface built on d3.js which was developed by a dedicated group. Both groups were really good in their areas, it worked fast, looked good and everyone was happy. But ML guys were SO hardcore about their job, they read the scientific papers, they knew every new feature of a new framework that was released yesterday, they had some experience with research in a foreign university, you get the idea. Webdevs? Nope. Pretty cool, outgoing, everyone with some hobby outside their job. They knew JS extraordinarily well and that was enough.


Certainly, ML attracts people with some particular personality traits, and I am inclined to attribute that to a solid math foundation. Not everyone is willing to learn all that stuff instead of creating something more visual, so in that sense ML is clearly “harder”.

Regarding the jobs situation, the demand for web developers is much higher, simply because everyone need a website and maybe not one or two. It doesn’t mean that machine learning specialists aren’t needed, the pool of candidates is proportionally smaller and in my opinion they are more aggressively sought after - it’s far more difficult to find a decent ML dev than a JS moddle, simply because is a much smaller niche.


I normally ask people who express interest (or even expertise in) machine learning to define whether they are (or want to be):


  • A machine learning generator

  • A machine learning consumer


Most fall into the latter camp, but it seems everyone fancies themselves as containing a bit of the former (particularly if they think they're going to solve AI). To do the former well, in the international community, requires really good foundations (particularly in mathematics) followed by a PhD with a supervisor who has experience of how that community works.

Doing the second well is much easier from the perspective of learning machine learning. However, it leads me to a further question, are you (or do you want to be):

  • A data generator

  • A data consumer


A data generator would often be a scientist or company that is working in a particular application and wants answers. They need access to machine learning researchers or statisticians to give advice on how to answer those questions. They should try and collaborate with experts in data analytics and data science, but they should be careful, there is a lot of hype around the term 'big data' at the moment. It's a difficult area to navigate. Data generators typically need an interface to consume machine learning (or statistics) effectively, if this interface is poorly chosen a lot of wasted resource can result (things get very expensive very quickly for a lot of data generators!).


A data consumer is where the largest demand is right at the moment, and should probably be the starting point for someone who wants to move in the right direction. An MSc in Data Science would be a good starting point. You can also use this experience to see if you want to transit into a machine learning generator (that's basically what happened to me).


Machine Learning is the scientific study of algorithms and statistical models that computer systems use to perform a specific task without using explicit instructions, relying on patterns and inference instead. Machine Learning


has developed into one of the most exciting technologies as its algorithms are being used in a variety of applications like speech recognition, self-driving cars, improved understanding of the human genome.


Machine Learning is creating tremendous job opportunities in the IT industry, especially for software engineers and data scientists. Software engineers have to be proficient with the fundamentals of computer science programming, analysis and design to become Machine Learning experts. Machine Learning is a field that involves performing computation on vast sets of data, and therefore it requires proficiency in fundamental concepts such as data structures, algorithms, and computer architecture.


Machine Learning engineers should have a strong background in Application Programming Interfaces (API) as well as designing interfaces that will sustain future changes. He should possess skills like programming and coding, probability and statistics, data modelling and evaluation, software engineering and system design.


Software engineers want to migrate to Machine Learning as it is a fascinating and fast-growing field. Machine Learning is being used everywhere, from email to mobile apps to marketing campaigns. Studying Machine Learning opens a world of opportunities to develop cutting edge applications in various verticals such as cybersecurity, image recognition, medicine, or face recognition. With several Machine Learning companies on the verge of hiring skilled ML engineers, it is the next big thing for IT professionals.

©2020 by Arturo Devesa.