Machine Learning (ML) is recently gaining momentum, expressing itself in many areas of our lives, trying to solve things that were not possible before. We are able to get more answers now, because over the years, we collected fairly huge amount of data as well as our computers, through continuous upgrades, gained lots of computation power, that can be utilized in the cloud to our benefits. All of this gives us an amazing foundation for Machine Learning, so let’s shortly demystify this term.
In essence,”Machine Learning means giving a computer the ability to write its own rules and learn about new things, on its own”. Sounds scary, but how can we literally achieve that? Where to start? Is it something for your or me or it’s rather meant for data scientist who understand complex math and statistics ?
Trying to answer those questions, I’ve decided to write my “Journey to mastery of ML” series. This is going to be a set of articles, from the perspective of avid learner, who wants to nurture Machine Learning topic.
By doing that I want to prove that if something truly interests you, you can learn it, no matter how complex the topic may sound at the beginning or how late you joined the game. Additionally I want to track my unique and personal Learning Path, so I can verify later on how long it took me to master this topic and whether I was persistent enough to get there.
As a side effect, for some of you, my dear readers, it can be also the source of an inspirational material, full of web links, blog posts, books and tutorials descriptions.
I invite you to discover the world of Machine Learning with me. Are you ready?
To begin with, here is my technical experience so far.
I have solid background in mathematics and basic knowledge of statistics. I hold Master Degree in Computer Science, which boils down to 5 years studying of Operating Systems, Databases and Networks. Additionally I have 10 years of professional experience in Web Development, creating complex and distributed systems in PHP and Symfony.
My story with Machine Learning is dated back to 2009, when me and my team were exposed to some ML algorithms during the university assignment. That time I didn’t fully understand what was going on there and how I could actually use ML concepts in the future.
Then, at the end of 2015, I was lucky to see complex ML model used for Climate Change predictions, written in C and visualized in Python and Matplotlib. This was actually a postdoctoral work from my wife and it looked pretty complicated to me, so it put me off for good.
Years 2016 and 2017 went pretty quiet in regards to ML. I’ve developed Web Applications as usual and for my Learning Challenge I picked up iOS platform and Swift language. Some articles about ML popped up here and there, but they didn’t draw my attention.
And then came 2018, the year when I decided to pick up Machine Learning. Why this topic and why this year? When I think about this, there were actually multiple decisions factors playing at the same time, so here is the mixture of my thoughts
- I saw Apple releasing new iPhone X, which took face detection to the next level
- I saw more Chatbots appearing on websites, that you could talk with and how well they understood your intent
- While writing on iPad, keyboard suggestion were pretty handy and helpful
- When searching the images in Photos, face detection, photo grouping and search capabilities amazed me
- I came across one article about how much the ML engineers can earn
- I found one article talking about the plans to open huge European AI hub in order to compete with US and China
- I’ve learned Python around 8 years ago and since then I couldn’t use it much, because there was always PHP. I kinda missed Python language, so when I realized that Python and ML are good friends, the choice become more obvious.
- While I was working with a client of mine from Netherlands building a complex search platform in PHP and Symfony, the more I learned their Ubiquitous Language and Core Domain concepts, the more I discovered in how many ways ML can benefit their company, so I wanted to take it even further.
- My wife, who has thought statistics and worked for 5 years with complex Machine Learning model, at certain point decided to start her catering company, slowly abandoning ML world. So my idea was to re-introduce this topic to her and take it together to the next level.
- Having the decade of expertise with PHP, APIs, Relational Databases like MySQL/MariaDB, PostgreSQL, MSSQL as well as NoSQL ones (Redis, Cassandra, MongoDB), mining and collecting data from any system shall be pretty straightforward for me. ML sounds like a good follow-up concept and enhancement of my current skills.
- I’ve briefly seen Apple WWDC 2017, where they announced yet another framework, namely CoreML, which sparked my interest. I though I could use my existing knowledge of Apple Platform and combine it with Machine Learning in a completely new ways.
- I have worked with AWS for more than two years, I know many tools they provide, but never worked with their ML frameworks.
- I’ve seen more and more articles and tutorials about ML popping up, so the knowledge became more approachable to everyone – time to taste it.
- I came across OpenCV framework and I would like to check it out more.
I would say I had enough reasons to give it a try. But all of above is a bit personal, therefore boring. If you got through this, then you are a hero. The rest of this post will be more technical, so let’s explore together the first material I studied about ML.
Very first steps
One of my favorite book and video publisher is O’Reilly, so as usual, I started to search something there. When I have little knowledge about the topic, I also prefer to start with some videos, so I found something that could suit my needs.
This video were recorded in May 2011 and it will consume 2 hours, 43 minutes of your time. It comes with some Code Examples , that use Python 2.5/2.6/2.7, NLTK, Numpy, pycluster and hcluster. Key things I’ve learned from this video are briefed below.
What is machine learning and what type of questions it tries to answer
- clustering (grouping related things together)
- are two items the same? (e.g: two blog posts, two persons)
- what category does something belong in? (e.g: classifying content of the web page to a language, like in Google Chrome)
- what else might I like? (e.g: recommendations engines like in Amazon shopping or in Netflix video lists)
Methodology for analysis
Machine Learning Theory
Classification – is the assignment of a label to an unlabeled input based on previously seen data
(example: distinguishing between kitten and puppy, labelling email messages as SPAM, language identification, face detection, image detection)
Supervised learning algorithm – is when you start with labeled training set of data
(e.g you have already seen bunch of kittens and puppies and you will use this to build your understanding of the world)
Unsupervised learning algorithm – is when you DO not have this labeled set of data.
- Naive Bayes Classifier
- K-Nearest Neighbors
- SVM (Support Vector Machines)
- Agglomerative Clustering
- Divisive Clustering
- K-means Clustering
- Bloom Filters
- Scalable Bloom Filters
As of my first deep dive into Machine Learning, which happened in May 2018, most of the material from this video was pretty clear to me. However, a few times, especially when some Statistical concepts or more complex Python code was presented, I had to stop, Google it, and then re-play it again, in order to fully grasp it.
Please keep in mind that this video was recorded long time ago, so some recommendations may no longer be valid, such as Google Prediction API, which was discontinued on March 2018 and is now replaced by ML Engine
For me as a beginner, the parts I appreciated the most were: ML Use Cases, general ML theory and a basic presentation of existing ML algorithms.
In the next article in this Series, I will take a peek at two follow-up videos, which I tried to study, but intentionally didn’t finish them yet.
- Machine Learning with Scikit-Learn and TensorFlow
- Machine Learning – Python Programming: From Beginner to Intermediate
If you enjoyed this post, then make sure you subscribe to my Newsletter