I can give a few words of advice on where to continue from here, if you’re interested. My own background is as a software dev for many years (13 years professionally plus a few years as a kid). I’d bene involved in many different fields, from embedded systems to web development, and recently ran a team of algorithms researchers in 3d printing, so was mildly exposed to computer vision and 3d concepts, but had no serious machine learning. Then a few years ago, I started to get much more seriously interested in ML/DL/Data Science, and have seen been working in the field (running a dev shop).
So, my take: first of all, I personally didn’t much enjoy Andrew Ng’s course, both because it was much too theoretical for my taste, and (in retrospect) because I didn’t remember enough maths from my CS degree to work with the concepts as easily as I should have.
I’d recommend a few things for you as next steps:
1. Coursera teaches more “classical ML” (not deep learning), and without many applications. The absolute BEST followup in my mind is the Fast.ai course (free).
It focuses on Deep Learning, and teaches with a completely practical-minded approach, rather than theoretical. The idea is to, within one lesson, actually *write software*, like a simple program to tell whether a picture is of a cat or a dog. In this course, you will literally be coding practically world-class Deep Learning code within a few hours.
They’re supposedly working on a more classical-ML course, but unfortunately it isn’t out yet.
Seriously, this is my #1 recommendation for anyone trying to learn machine learning, especially with a background in software development. You won’t be sorry.
2. If you’re at all interested in actually implementing ML as opposed to more reviewing the concepts, then you should try a Kaggle competition or two. If you don’t know it, it’s basically a site that allows companies to upload data, then pay prize money to people writing an algorithm that does something specific with the data. E.g. predict how many page views a certain subset of pages on Wikipedia will receive.
Kaggle does a lot of good things for learning ML: It abstracts away all the data-gathering and a lot of the data-cleaning work, which is the heart of a lot of data science/ML jobs, but is not what you want to actually practice, especially if you are a developer and already know how to deal with this. It also gives specific questions and answers that need to be answered, and has a large collection of existing answers.
In short, Kaggle is the place to go practice your ML skills.
3. Learn more math, especially if you enjoy it! I’ve personally been self-learning the equivalent of a math undergrad, partially for my work in ML, partially for fun.
Specifically, as you correctly understood, ML is mostly statistics, calculus, and linear algebra. Based on my own background, I can tell you that my calculus was perfectly adequate for ML. However, statistics and linear algebra I had studied in much less depth, and they’re both incredibly important, and fascinating subjects. Linear algebra, especially, is amazing, and depending on where you study it, you actually learn a good amount of practical implementations, including linear regressino and other ML algorithms. And not only do you learn these applications, you understand them from an entirely new perspective.
For studying linear algebra, I *highly* recommend Gilber Strang’s video lectures on the subject. He is an excellent teacher, not only engaging, but very practical-minded. You should also follow along with his Linear Algebra textbook, and I highly recommend doing the videos and textbook at the same time—the textbook is not a great resource without the videos, IMO.
The major “problem” with Strang’s videos are that he *really* focuses on the practical, engineering, matrix approach of teaching Linear Algebra, to the almost-complete neglect of the more mathematical approach. E.g. he teaches like half the course before he mentions linear transformations, which is *incredible*.
I still think these videos are the best approach for a software developer looking to *use* linear algebra, but I highly recommend following this up with a more mathematically-oriented textbook. Like many others, I like Axler’s “Linear Algebra Done Right”, which ironically takes the exact opposite approach—it takes him 3 chapters to get to explaining what a Matrix is :)
Other than that, I have recommendations for statistics (both Harvard and MIT have great courses on probability), and there’s lots of other great math to study, though not all of it is directly relevant to ML.
OK, hope this post was worthwhile for you/someone. Feel free to ask if you have any questions :)
Your comment was definitely worthwhile for me. Thanks to your very strong recommendation (and the fact that it doesn’t look like it’ll take much time), I’m going to check out the fast.ai course very soon. I’ll be referencing back to this comment to check out your other recommendations in the future too. Thank you.
Great overview!
I can give a few words of advice on where to continue from here, if you’re interested. My own background is as a software dev for many years (13 years professionally plus a few years as a kid). I’d bene involved in many different fields, from embedded systems to web development, and recently ran a team of algorithms researchers in 3d printing, so was mildly exposed to computer vision and 3d concepts, but had no serious machine learning. Then a few years ago, I started to get much more seriously interested in ML/DL/Data Science, and have seen been working in the field (running a dev shop).
So, my take: first of all, I personally didn’t much enjoy Andrew Ng’s course, both because it was much too theoretical for my taste, and (in retrospect) because I didn’t remember enough maths from my CS degree to work with the concepts as easily as I should have.
I’d recommend a few things for you as next steps:
1. Coursera teaches more “classical ML” (not deep learning), and without many applications. The absolute BEST followup in my mind is the Fast.ai course (free).
It focuses on Deep Learning, and teaches with a completely practical-minded approach, rather than theoretical. The idea is to, within one lesson, actually *write software*, like a simple program to tell whether a picture is of a cat or a dog. In this course, you will literally be coding practically world-class Deep Learning code within a few hours.
They’re supposedly working on a more classical-ML course, but unfortunately it isn’t out yet.
Seriously, this is my #1 recommendation for anyone trying to learn machine learning, especially with a background in software development. You won’t be sorry.
2. If you’re at all interested in actually implementing ML as opposed to more reviewing the concepts, then you should try a Kaggle competition or two. If you don’t know it, it’s basically a site that allows companies to upload data, then pay prize money to people writing an algorithm that does something specific with the data. E.g. predict how many page views a certain subset of pages on Wikipedia will receive.
Kaggle does a lot of good things for learning ML: It abstracts away all the data-gathering and a lot of the data-cleaning work, which is the heart of a lot of data science/ML jobs, but is not what you want to actually practice, especially if you are a developer and already know how to deal with this. It also gives specific questions and answers that need to be answered, and has a large collection of existing answers.
In short, Kaggle is the place to go practice your ML skills.
3. Learn more math, especially if you enjoy it! I’ve personally been self-learning the equivalent of a math undergrad, partially for my work in ML, partially for fun.
Specifically, as you correctly understood, ML is mostly statistics, calculus, and linear algebra. Based on my own background, I can tell you that my calculus was perfectly adequate for ML. However, statistics and linear algebra I had studied in much less depth, and they’re both incredibly important, and fascinating subjects. Linear algebra, especially, is amazing, and depending on where you study it, you actually learn a good amount of practical implementations, including linear regressino and other ML algorithms. And not only do you learn these applications, you understand them from an entirely new perspective.
For studying linear algebra, I *highly* recommend Gilber Strang’s video lectures on the subject. He is an excellent teacher, not only engaging, but very practical-minded. You should also follow along with his Linear Algebra textbook, and I highly recommend doing the videos and textbook at the same time—the textbook is not a great resource without the videos, IMO.
The major “problem” with Strang’s videos are that he *really* focuses on the practical, engineering, matrix approach of teaching Linear Algebra, to the almost-complete neglect of the more mathematical approach. E.g. he teaches like half the course before he mentions linear transformations, which is *incredible*.
I still think these videos are the best approach for a software developer looking to *use* linear algebra, but I highly recommend following this up with a more mathematically-oriented textbook. Like many others, I like Axler’s “Linear Algebra Done Right”, which ironically takes the exact opposite approach—it takes him 3 chapters to get to explaining what a Matrix is :)
Other than that, I have recommendations for statistics (both Harvard and MIT have great courses on probability), and there’s lots of other great math to study, though not all of it is directly relevant to ML.
OK, hope this post was worthwhile for you/someone. Feel free to ask if you have any questions :)
Your comment was definitely worthwhile for me. Thanks to your very strong recommendation (and the fact that it doesn’t look like it’ll take much time), I’m going to check out the fast.ai course very soon. I’ll be referencing back to this comment to check out your other recommendations in the future too. Thank you.