After few years of hearing about Machine Learning, today, I decided to start the first baby step to learn about Machine Learning. It is not because of the hot trend of machine learning at the moment when everyone talks about it. The main reason is one of my side projects may need to apply some data science in the future. And I also curious about Machine Learning for a while. So why not start?
Fortunately, I found good resources to start, and I really enjoy them. What I found below is taken from the books and courses that I follow.
Currently, I am following two main resources:
- Hands-On Machine Learning with Scikit-Learn, Keras, and Tensor Flow — Concepts, Tools, and Techniques to Build Intelligent Systems. by Aurelien Geron. I found that this book is easy to read as an absolute beginner. It explains the Machine Learning concepts in simple terms and elegant visualizations. Not only giving explanations of concepts, but the author also gives us tools and a sample project to build while reading the book. We can also check out his code on Github to have more ideas about the project. And lastly, the language he uses is friendly to me because his background is in engineering.
- StatQuest with Josh Starmer Youtube Channel. That is an awesome channel where Josh Starmer explains Machine Learning fundamentals with much fun and simplicity. When watching his video, I felt like I don’t need to spend any effort to understand the topics he was introducing.
- Machine Learning course by Andrew Ng, Standford University. The instructor is the founder of DeepLearning.AI, general partner at AI Fund, chairman, and co-founder of Coursera. He is one of the most famous professors in the Machine Learning/Deep Learning world. His course provides a broad introduction to machine learning, data mining, and statistical pattern recognition. With a rating of 4.9/5.0 stars from over 155k rates, this is a truly worth course for anyone who wants to start with Machine Learning.
II. What is Machine Learning? (From my understanding.)
There is a general definition of Machine Learning by Authur Samuel, 1959. (Andrew Ng’s definition in the course also looks similar to his definition)
“Machine Learning is the field of study that gives computers the ability to learn without being explicitly programmed.” — Authur Samuel, 1959
This definition is a bit more general for me. As an engineer, I was seeking another simple definition, and I really like this one (from the Google Cloud Platform youtube channel):
“Machine Learning is using data to answer questions.” — Yufeng Gou
This definition divides Machine Learning into two equally separate important sides:
- Using data — Training: Training using data to inform the creation and fine-tuning of a predictive model
- Answer questions — Predictions: The predictive model from the training step will predict unseen data and answer the questions.
There are many products and services which serve us nowadays that apply Machine Learning inside.
The most popular one that comes first in my mind is the email spam filter. Most popular email services contain a spam folder. In these email services, every email goes through a filter. The filter predicts where or not an email is a spam email by using Machine Learning.
Google page search and ranking is also another example of a Machine Learning application. The results that google predicts are not the same for everyone. Depend on the user’s context and user’s behavior, the result will be selected and displayed to fit the use most.
Amazon or e-commerce websites' recommendation system is also another popular example of applying Machine Learning in the real world. Machine Learning can significantly impact any shopping online firm based on the effectiveness of how they apply Machine Learning to the recommendation system.
III Machine Learning versus Traditional Programming?
So, what are the differences between a Machine Learning program and a Traditional Program? Let’s take a look at an example program. We will build a simple email spam filter using both approaches.
When using the Tradition Programming approach, the steps should be:
- From the list of existing spam emails, we notice some words, phrases(“4U”, “free,” “credit card”) are displayed in the subject title multiples times. We also found in the data some specific senders and body formats.
- We develop a spam detecting algorithm base on the pattern we found above. Any email that matches the rules will be marked as spam.
- Test and repeat step 1 & step 2 until the program is good enough to launch.
This traditional approach has two problems:
- The rules and patterns will be continually changed and updated. For example, when a spammer finds out that the subject with the text “4U” is marked as spam, he can change the subject to pass the filter. Maybe the new word is “for you”. Therefore, the program is also needed to update its patterns and rules.
- When the existing spam email data is huge enough, it is impossible for devs to look through all spam emails and find the patterns.
The Machine Learning approach can solve the above problems effectively. This approach could be described as the below steps:
- Using updated data with training Machine Learning algorithms to predict which words, phrases, and combinations are represented for a spam email.
- Using the predictions for the filter to detect spam emails
- When the data changes (spammers update their subject), the updated data will be automatically updated -> the spam keywords and phrases predictions are also updated automatically.
IV. What’s next?
Base on different criteria, we can classify Machine Learning into different categories:
- Train with human supervision: supervised, unsupervised, semi-supervised, and reinforcement learning
- Learn incrementally on the fly: online learning, batch learning
- Work by simple comparing new data points to know data points or detecting patterns in the training data and build predictive model: instance-based learning, model-based learning.
For those topics, we will talk about them later.
Have fun all, and thanks for visiting my medium.