Hey there. How goes it? In this article, I'll be talking about Supervised Learning, its merits and demerits. Supervised learning is a class of learning algorithms, which is under Machine Learning.
Surely, in this day and age almost everybody has heard of and applies Machine Learning.
Machine learning, just as the name implies is when a machine/computer program learns. When then can we say a computer program learns? Just as humans learn from experience with a particular task, so do computer programs learn.
Computer programs are said to learn from experience with respect to a set of tasks while their performance at said tasks is measured if their performance improves with experience. Simply put: computer programs are said to learn if they get better at a particular task with time.
Machine learning is applied in several instances, some of these are:
- Spam checkers.
- News categorization on news sites.
- Youtube (Playlist generation based on currently playing content).
- E-commerce sites (Suggestion of similar items).
- .. and many more examples.
There are three basic types of learning algorithms:
- Supervised learning.
- Unsupervised learning.
- Semi-supervised learning
Learning algorithms differ mainly by the the training.
For this article we'll be focusing on Supervised learning.
In supervised learning, the training data consists of a set of input data and correct responses (labels) to each data set. The aim here is for the algorithm to generalize such as to respond correctly to every possible input. Simply put: the algorithm should be able to give correct output to inputs not included in the training data. There are two main "problems" in Supervised learning: Classification and Regression problems.
What this entails is taking the input data and deciding which class/category the input data belongs to based on the training data. This deals with instances when the expected output is a category, e.g red, blue, e.t.c.
For example: an algorithm that sorts vehicles by colour or by type.
Regression deals with estimating/approximating the relationship between variables. It is used in instances when the expected output is a real value e.g. weight, currency, e.t.c
For example: an algorithm that determines/predicts the power consumption in a particular year for a particular region.
Now that we've gone through the basics, let's see the merits and demerits.
- There is greater control over the system in supervised learning. For example, you can define how many classes you want to have in the system, you can define the classes in a specific way, you can also train the classifier in a way it distinguishes classes accurately.
- After training there's necessarily no need to keep training data in memory.
- Training is time-consuming as it requires a lot of computation time. Classification is also time-consuming as well as tedious.
- If you use examples which were not covered by the training data, you might not get a correct output(label).
- It's limited in terms of scalability.
- It requires a great deal of computational cost to get a near perfect system.
I hope this has been helpful. Thanks for reading. You can reach me on Twitter @overrideveloper . Cheers!