In the name of Allah, most gracious and most merciful,
Machine learning is an artificial intelligence branch concerned with building programs or applications that learn from data without being explicitly programmed to do so.
At the end of the day, most of machine learning is either about classification or prediction. Whether you want to classify the category of something “Classification” (like cat or dog or another animal), or you want to predict a value of something “Regression” (like the speed of the car, the temperature of the weather, the number of customers that you expect to buy from a certain business next year, and so on …).
2.1 Supervised Learning
Supervised gives you the intuition that there is a supervisor in the process which is like someone who teaches the machine how to do something by hand-holding it. Well, that is correct. The machine actually learns from solved examples which are called labeled data.
Simply you have data (like images) and their corresponding labels (like cats or dogs). Using machine learning algorithms you want your model to learn from these solved examples how to solve similar problems that it has never seen before provided that these problems are similar in nature to the solved problems it has been trained on. In other words, the machine learning algorithm learns the correct pattern so that when I give him new data (like images) that it has never seen before, it could expect its correct labels (like cats or dogs) with an acceptable accuracy which mean that most of the model’s predictions were correct.
2.2 Unsupervised Learning
It is obvious that this should be the opposite of supervise machine learning, and that is correct as well. In other words, there are no solved examples for the machine to learn from. You just have some unlabeled data that you want to figure out some patterns in them. For instance, given a bunch of apples and oranges could you separate them into two groups based on similar traits between them? That’s it.
Another example is customer segmentation. So given a number of customers with data about their age, gender, salary, and expenses. Could the machine detect any pattern or similarity between these customers? This is beneficial for businesses since they will understand the groups of customers they have so that they could make different products and marketing plans for their different customer groups so that they better solve each of these customer groups’ problems more specifically rather than looking at all their customers as one group which could be less useful in terms of both solving the customers’ specific problems and getting revenue for the business.
2.3 Semi-supervised Learning
It is a combination of supervised and unsupervised machine learning where it combines a small amount of labeled data “supervised” with a large amount of unlabeled data “unsupervised” during training of the machine learning model.
Because the problem is that most of the existing data is unlabeled so this approach exploits the great amount of unlabeled data while benefiting at the same time from the small amount of labeled data. By the way, this is one of the great engineering principles which is how to solve the existing the problem using what you already have.
2.4 Reinforcement Learning
It is considered as a machine learning branch, although I made it separate from machine learning in this artificial intelligence post because there are some important distinctions between it and other machine learning branches. Therefore, I prefer to explain it in more detail in a separate post because I am interested to learn more about it.
What you Expect to Learn (Python Machine Learning Textbook Table of Contents)
- Giving Computers the Ability to Learn from Data
- Training Simple Machine Learning Algorithms for Classification
- A Tour of Machine Learning Classifiers
- Building Good Training Datasets – Data Preprocessing
- Compressing Data via Dimensionality Reduction
- Learning Best Practices for Model Evaluation and Hyperparameter Tuning
- Combining Different Models for Ensemble Learning
- Applying Machine Learning to Sentiment Analysis
- Embedding a Machine Learning Model into a Web Application
- Predicting Continuous Target Variables with Regression Analysis
- Working with Unlabeled Data – Clustering Analysis
- Implementing a Multilayer Artificial Neural Network from Scratch
- Parallelizing Neural Network Training with TensorFlow
- Going Deeper – The Mechanics of TensorFlow
- Classifying Images with Deep Convolutional Neural Networks
- Modeling Sequential Data Using Recurrent Neural Networks
- Generative Adversarial Networks for Synthesizing New Data
- Reinforcement Learning for Decision Making in Complex Environments
They are the same benefits of artificial intelligence mentioned in that artificial intelligence post since machine learning is a branch of artificial intelligence.
4. Who Coined the Machine Learning “ML” term
The term machine learning was coined by professor Arthur Samuel in 1959.
5. Examples of Problems solved by Machine Learning
- Spam identification
- Product Recommendations
- Customer Segmentation
- Fraudulent Transactions Detection
- Demand Forecasting
- Virtual Assistant
- Sentiment Analysis
- Customer Service Automation
- Predictive Maintenance
6. The Job Role of the Machine Learning Engineer
Since there is an intersection between Machine Learning and Data Science, there is an overlap between the skills and job descriptions of the Machine Learning Engineer, Data Scientist, and Data Analyst.
To keep it simple, Data Scientists and Data Analysts focus on getting insights from data to present it to the organization’s or company’s decision-makers for helping them to make better decisions for the business based on these data insights. However, the Machine Learning Engineer is basically concerned about building software for making automatic predictions after learning patterns from the input data. Moreover, they should get insights from data to help them in choosing or fine-tuning their machine learning model to get an acceptable accuracy of the software they are building but they aren’t getting insights to present them to the organization’s decision-makers. Therefore Machine Learning engineers should have more understanding of computer fundamentals and software engineering than Data Scientists and Data Analysts in addition to having Data Science skills.
7. Skills needed to work as a Machine Learning Engineer
Notice that not all of these skills are required to start to work as a machine learning engineer. Only some of them might be sufficient for landing a job depending on the company you are applying for and its needs. However, while you are working you should continue developing the other missing skills that you don’t have to be better at your work.
Moreover, in the information age that we are living in, constant learning is very important. Especially in software, computer science, and computer engineering disciplines if you are just using your old skills at work without developing new skills you might find yourself outdated after a few years because these fields are mostly continuously developing.
If you just want to know the most essential skills to start with you could search for about 5 job descriptions for the machine learning engineer position and start with the most common skills found in all of those job descriptions.
6.1 Computer Fundamentals, Programming and Software Engineering
- Algorithms: (searching, sorting, dynamic programming, greedy programming, optimization, etc.)
- Data Structures: (stacks, queues, trees, graphs, multi-dimensional arrays, etc.)
- Computability and Complexity: (P vs. NP, NP-complete problems, space and time complexity, big-O notation, approximate algorithms, etc.)
- Computer Architecture: (memory, clusters, cache, bandwidth, deadlocks, distributed processing, etc.)
- Communication between Software Components: (REST APIs, library calls, database queries, etc.)
- Careful System Design: Avoid problems, bottlenecks, and ensure algorithm-scaling capabilities
- Software Engineering (Collaboration, Quality, and Maintainability): (documentation, requirements analysis, system design, modularity, version control, testing, etc.)
- Probability (Dealing with Real-world Uncertainty): (conditional probability, Bayes rule, Bayes Nets, Naive Bayes classifiers, likelihood, independence, Markov Decision Processes, Hidden Markov Models, etc.)
- Descriptive Statistics (Describe Data): (central tendency measures “mean, median, …”, spread measures “variance, …”, distributions “uniform, binomial, normal, Poisson, …”, etc.)
- Inferential Statistics (Build and Validate Models): (ANOVA, hypothesis testing, etc.)
- Linear Algebra (Handling Data in Multiple Dimensions)
- Multivariate Calculus (Optimization and Parameter Turning)
6.3 Data Modeling and Evaluation (Understand Data Underlying Structure & Find Patterns)
Understand the following
- Data Preprocessing: (missing data, data leakage, anomaly detection, outliers, etc.)
- Find Useful Patterns in Data: (correlations, eigenvectors, clusters, etc.)
- Evaluation Strategies (For Data, Algorithms, and Predictive Models): (sequential vs. randomized cross-validation, training-testing split, etc.)
- Evaluate Model Performance “Tracking Error”: (sum-of-squared errors for regression, log-loss for classification, etc.)
- Measuring Accuracy: (precision, recall, f1-score, etc.)
- Iterative learning algorithms: (backpropagation for neural networks, etc.)
6.4 Apply Machine Learning Algorithms
- Choose a Suitable Model: (k means clustering, nearest neighbor, apriori algorithm, linear regression, logistic regression, decision trees, random forests, neural net, support vector machine, ensemble of many models, etc.)
- Train or Fit Data using a Learning Procedure: (gradient descent, linear regression, genetic algorithms, bagging, boosting, and other methods depending on the used model)
- Hyperparameter Optimization (How to tune the model)
- Pros and Cons of different Models and Approaches (Understand when to use which “Context”)
- Possible Final Result Problems: (bias and variance, overfitting and underfitting, etc.)
6.5 Additional Preferable Skills
- Deep Learning
- Neural Network Architectures
- Natural Language processing “NLP”
- Audio and Video Processing
- Reinforcement Learning
- Advanced Signal Processing Techniques
- Machine Learning Algorithms Optimization
- Some Physics Concepts
There are standard implementations of machine learning algorithms through different packages, libraries, and APIs.
- Python for Machine Learning, Statistics, and Data Science (NumPy, Pandas, Matplotlib, Scikit-learn, Theano)
- TensorFlow and PyTorch for Deep Learning
- Google Cloud ML Engine for running machine learning training jobs and predictions at scale
- Amazon Machine Learning
- H2O is an end-to-end platform that enables organizations to rapidly build world-class artificial intelligence models and applications.
- R for Machine Learning, and Statistics
- SQL for database management
- Weka: A collection of machine learning algorithms for data mining
- Apache Kafka for Data Pre-processing
- Spark and Hadoop for Distributed Computing
- Jupyter Notebook
- IBM Watson
Important Pieces of Advice
- Practicing problems, entering hackathons, coding competitions, data science, and machine learning challenges (like those on Kaggle) could help you a lot in developing your skills. Getting exposed to different kinds of problems and understanding the small differences between them could be very useful as well.
- Don’t underestimate mathematics including statistics since many Machine Learning algorithms are extensions of statistical modeling procedures so if you have strong mathematical knowledge, they will be easier for you to understand.
Don’t Be Overwhelmed “Keep it Simple (It is a Journey and Not a Task)”
I know that this has been a lot especially in the skills section. Well, I tried to obtain most of the needed skills for someone to be a great machine learning engineer. Again, I want to stress on that it is not mandatory to have all these skills to start working or even to take a Masters degree in machine learning. However, understanding the full picture before entering into such a field, what is the job like, what are the skillset required will give you a sense of whether this field is suitable for you or not.
Your career is a big part of your life. Choosing it wisely is very important. Therefore having a clear picture of what you are going into before entering it is very crucial and important. I think that everyone should be very good at his job. Therefore, it is essential to continuously learn in your career. It is not a task or job to be done, it is a life to be lived, and a journey to be explored to understand more about the world we are living in and to know more about how Allah the creator of everything has created such a great world and how much complexities are involved. How many details are there? and the miracle that you are just living and breathing without feeling any problems although what is happening behind the scenes is mind-blowing.
In addition to this, in the future, I will write about skill acquisition, how to plan your learning and skill-acquisition journey, and how to make learning more enjoyable and fun. I have previously written Facebook posts on similar things which you can find here if you are interested.
In summary, mostly any success in life involves developing your skills consistently even if every day you move only one step forward. In the end, these steps will add up. We usually overestimate what we could do in the short-term (day or week for instance), and underestimate what we could do in the long term (months or years).
Thank you. I hope this post has been beneficial to you. I would appreciate any comments if anyone needed more clarifications or if anyone has seen something wrong in what I have written in order to modify it, and I would also appreciate any possible enhancements or suggestions. We are humans, and mistakes are expected from us, but we could also minimize those mistakes by learning from them and by seeking to improve what we do and how we do it.
Allah bless our master Muhammad and his family.