Introduction to Machine Learning
Tags: tutorial, machinelearning, programming, introduction
Published: 2023-08-06 20:53:13

<small>_Image from www.unsplash.com_</small>

Machine Learning is a branch of Artificial Intelligence (AI) that deals essentially with computers learning from data. The idea is that computers should be able to learn from data, by finding patterns, remembering them and using them to make decisions when they are later fed with previously unseen data.

In Machine Learning the computer is fed with some input from which it obtains a pattern and based on this pattern, it can make decisions from time to time - hence, the computer may be said to make its own decisions whereas in Traditional Programming the computer is fed with a specific input for each desired output. 

Five branches of Machine Learning are briefly discussed below.

## 1. Supervised Learning
In Supervised Learning, there is a target (output variable) for each set of features (input variables). Examples of Supervised Learning algorithms include: Linear Regression, Logistic Regression, Support Vector Machine.
## 2. Unsupervised Learning
In Unsupervised Learning, there is no target but instead some underlying patterns or characteristics are obtain from the features. 
Examples of Unsupervised Learning algorithms include: K-means, Principal Component Analysis and Hierarchical Clustering.
## 3. Semi-Supervised Learning
Semi-Supervised Learning is somewhat between Supervised and Unsupervised Learning. Basically, it is used when the available dataset consists of a few labeled data points and much more unlabeled data points - you obtain labels for the unlabeled data points by some machine learning mechanism and then use the new dataset which consists of those which were originally labeled and those which have just been labeled to make predictions on new datasets. Examples of Semi-Supervised Learning algorithms include: Self Training, Co-Training and Label Propagation.
## 4. Neural Networks
Neural network is a form of machine learning that mimics the working of a human brain. Not that it is a human brain, but as with neurons in the brain there are neural networks of neurons so that data can be passed in, processed and then an output (information) is obtained. Typically, a neural network has an input layer and an output layer. However, it may also have one or more hidden layers. The higher the number of layers a network has, the deeper the network - hence the name Deep Learning. You do Deep Learning, when there are one or more hidden layer(s). Examples of Deep Learning algorithms include: Recurrent Neural Network, Convolutional Neural Network and Multi-Layer Perceptron.
## 5. Generative AI
This is one of the most recent developments in the field of AI and Machine Learning to be specific. Generative AI uses a set of specific Deep Learning models to find complex patterns. It can be used to generate new text, images, videos and audio. Some types of  generative AI algorithms are: Generative Adversarial Network, Diffusion Model and Transformer-Based-Models.

In Machine Learning, computers make decisions just like men do. Every man you have seen has two hands, legs and so on. When you see a being and he has has these characteristics, you immediately say, yes I see a man. However computers cannot think like we do. We remember things like sounds, pictures e.t.c, but in order for the computer to even start working on them, these information (sound, videos, pictures, text, measurements e.t.c) must first be converted to numbers. Hence Machine Learning involves some Mathematics, Statistics and Computer Science (programming). You do well to say that the computer reasons in machine language, but you do not have to communicate with the computer using such a low level language.

There are many High Level Programming Languages that can be used for programming as a Machine Learning Engineer: They include:

## 1. Python:
This programming language is usually referred to as the simplest programming language for beginners because of the closeness of its syntax to everyday language. It can be used for many other purposes apart from Machine Learning or Data Analysis - it is a general purpose language. The following packages can be used for Machine Learning in Python:

- Sklearn
- Keras
- Tensorflow
- Skflow
- Pytorch
- Theano

## 2. R:
This programming language uses similar syntax with the S and S+ programming languages. R was specifically designed for Statistics and is now a great language for Data Scientist and Machine Learning Engineers. Its syntax may not look like Python's or any other programming language that share some resemblance in style with Python's object oriented programming (like Java and C++), however, it is also easy to learn. The following packages can be used for Machine Learning in R:
- Caret

## 3. Java:
If you are not new to programming, then you have heard about the language called Java. It is a popular language like Python. However, it is faster than python and is a great choice if you are already a Java programmer but are new to Machine Learning.
## 4. C++:
As with many things in life, change is inevitable. C++ use to be one of the most sought after languages. But as with the production of automatic cars which brought about less preference for manual cars, other simpler languages have been used as substitutes. C++ is a great language for programmers who build operating systems, gaming systems and those who prefer to have more control or do things from the scratch. It is the fastest of the four languages discussed here. 

## 5. Other Languages:
There are other languages like 
Mathlab, Scala, Rust and JavaScript e.t.c that can be used for Machine Learning. However, that it is better to select any of the four languages (R, Python, Java or C++) discussed above for a start in Machine Learning because of the availability of libraries that you can leverage on, community support and employability. 

If you are an absolute beginner, I suggest you use Python, which will be easier  to learn with a less steep learning curve. But if you are involved in Data Analysis and do not intend to go into other aspects of tech like: web development, android app development e.t.c, I suggest you learn R. But if you will like your take off to be more challenging, either java or C++ should do. However, you may choose to stay with any other language you have learnt even if they are not part of the languages discussed here, but have provisions for Machine Learning. Nonetheless, I recommend you learn any of these four giants: R, Python, Java or C++ regardless of your level of experience.

[Next : Supervised Learning](
https://dev.to/opaul/supervised-learning-57id)