This is the story of how I went from zero to do real client work on Machine Learning.
I want to keep this article short so you can grab what's useful for you and leave. But, if you're interested in the details with pictures and personal opinions, you can read the full story on my site.
Note: I hate overnight success stories like "how I reached X in 3 months", I don't think real progress comes like that and it's just stressful for the reader. Therefore, I'm just going to say this all happened in the span of a year or so.
Here's an overview of my journey. In the next paragraphs, I'll put useful links and a bit of my personal story.
I respect your time so I'll summarize a lot. Go here if you want to read the full story, though.
My wife got me this Machine Learning handbook from MIT. It's a pretty short overview of the topic that got me triggered to dive deeper.
I then enrolled in the Data Scientist with Python track in DataCamp. I didn't finish the whole course, just took a few lessons until I felt I could move on alone.
I bought a copy of the book Hands-On Machine Learning with Scikit-Learn and TensorFlow. It was a terrific investment. This book is great to learn supervised and non-supervised learning with Scikit-Learn as well as deep neural networks with Tensorflow.
I then tried some luck at the Kaggle's Titanic Machine Learning competition. This is the "hello world" of Machine Learning competitions.
I ended up submitting 3 attempts. I didn't get good scores but I was proud I put in the time and self-discipline to finish the challenge.
This is the type of content I send to +850 devs on my email list. Join here to get my tips and thoughts on algorithms and career growth. If email is not your thing, follow me on Twitter to get sneak peeks of what I'm working on.
I secretly built an unsolicited news topic classifier for the company I worked for. It would analyze the content on a news article and predict its category (sports, politics, religion, etc) based on previous training.
As it turned out, they didn't like it at all. I didn't feel like trash, though. I proved myself I could do ML professionally. I moved on.
The competition consisted in tuning an autonomous racing car to complete a track as fast as possible. The top 200 times would get the scholarship.
(Self-note: next time don't take pictures with a potato). I ended up winning the scholarship but not for my scores, my lap times were crap. I got mine either for luck or for creating this repo with some resources for new competitors. I didn't ask, though. I moved on.
I enrolled in the Machine Learning Engineer Nanodegree Program with the scholarship I'd won. It was basic but I learned a lot about deploying ML models to production in AWS.
I didn't like any of the choices they offered for the final project. I then decided to find something meaningful to work on.
I reached out to my friend Nicolás who happens to run one of the biggest crowdfunding sites in Latin America, Vaki.co. I proposed to build a recommender system, à la Netflix or Amazon. He liked the idea and we started working together.
After several weeks of work, I built a hybrid recommender system that predicts recommendations based on two models: Content-Based and Collaborative Filtering. You can read the full report over here. It's ready to be used in production but hasn't yet been implemented (out of my scope).
I haven't built anything else after that. I don't want to devote myself to something I picked out of FOMO and which doesn't really spark that fire within me. I have added something new to my toolbox, but I won't necessarily switch paths anytime soon.
The ultimate guide to learn is non-existent. Everyone needs to find their sweet spot. For me it is print books, pen and paper, and practicing with real/dummy projects.
Do your best to understand the math. Tuning hyperparams or reasoning about model performance feels weird without a good foundation.
I'm not a researcher, I'm an engineer. I'm ok with not understanding all the latest, complex advances in AI and ML. I'm happy to understand and use common ML tools to solve real problems. For me, Machine Learning is just a means to an end, not the end itself.
I don't like that feedback is very slow on ML. It's very frustrating for me, coming from a product background, to train a deep neural network for hours just to see garbage results and not be able to tell why.
Dive into other topics to grow your toolbox but don't deviate from your true path, whatever that is. I'd rather double down on my strengths than being a jack of all trades.
Thanks for reading. Never stop learning!
You can follow me on Twitter or just keep reading me here. I wrote about my story getting into Toptal, my recommendations to write a good resume, a curated list to find top-remote jobs, and some more advice to ace algorithm interviews. I also wrote an eBook to get into Toptal, check it out if that's your thing.