As an intro to ML, I am a fan of Courseras ML specialization that is done by the University of Washington (https://www.coursera.org/specializations/machine-learning). It's free, except for the capstone, and the instructors do a good job of giving both theoretical & practical grounding in various aspects of ML.
I am sure others will have good suggestions as well. Good luck.
I've started with Andrew Ng course and found it way too dry and too much mathematical where Dato one seem too simple.
Tensor Flow course seems humorously hard as 15 minutes in you get "Please implement Softmax using Python". Ok, maybe later.
From that standpoint, graduate mathematics is more useful for a practitioner than any robust programming experience.
For a CS engineer who wants to be able to use the latest Inception neural net from Google in his pipeline, there is actually almost zero math need. It's like any other API. In goes the image, out comes the label.
What she would need to know, as a good utilizer of ML, is just a bunch of concepts, such as training/test/validation, bias/variation, how to extract features from data and how to select a good algorithm and framework. So it's mostly data cleaning and tuning hyperparameters, the latter of which can be learned by trial and error and by talking to experts. The direct applications of math for such an engineer would be pretty slim to nonexistent.
import numpy as np
def softmax(x): return np.exp(x)/np.sum(np.exp(x))
where x is an array of numbers.
Since ML comes from statistics, math, programming, but also other scientific fields, it can even have many terms for essentially the same thing.
For me, as a developer, it was actually easiest to just read some tutorials like the docs for scikit learn and then just start digging through the code of a bunch of libraries. How people name the classes tells you what they think things should be called. But the code tells you what it actually does. I just bounced back and forth between code, tutorials/blogs and books. After a few months, I can actually have a reasonable conversation with our ML people in the language they use and everything else I look at seems easier because I understand most of the terms.
I think asking how to learn ML is a lot like asking how to learn German. It might feel like you need to start with the grammar rules. But I think immersion is the best way. Get the vocabulary, then come back to the rules. I also find that having a burning question in my mind helps me with immersion. So, if you can find a project that drives you, maybe that will help.
So starting with the math fundamentals as a developer seems like an easy way to burn yourself out. But everyone does learn differently. If not, there wouldn't be so many ML algorithms, right? Right?
Am I likely to need matrix multiplication if I start doing machine learning, or that the equivalent of writing a sort algorithm for a web dev - maybe useful to know the concepts, but in reality you won't actually use it?
It's easier to write algorithms against this.
Since a lot of ML libraries use native libraries for linear algebra, you might see a lot of implementations that are written in terms of linear algebra operations. So, if you're trying to read the code and you don't understand what the operations do, it may be hard to grok.
So, yeah, I think some understanding of linear algebra is necessary. Because it's sort of the atomic set of operations underlying most ML you'll see. To read the code, you need to be able to read the linear algebra. But you probably don't need to go read a book on linear algebra. I tried that and it pulled me away from what I wanted to know. It might be enough to just understand the numpy docs.
Not that there isn't value in immediate results for building excitement and interest--I just want to have proper expectations before I check it out as I'm in a similar state to the parent in terms of where my math is and wanting to dive in.
I've never used this Microsoft product, but if lets you take educated guesses at what will work, and gives you some insights into the intermediate steps, then its useful as a check that your mental model of machine learning is becoming more coherent and useful.
Plus, if you slot in something and it gives a better output, you can go back to your studies with a new target of finding out why X param changed things.
Again, that's just one example, and the instant visual feedback is awesome (I'm a visual learner, so that's huge). But at the end of the day, I know that there is a lot of math and code under the pretty graphics, and at some point I'll need to tackle that to make sure I am actually learning this and not just making assumptions based on what I can eyeball with some visualizations.
That's enough to implement and understand neural networks. You'll fumble around a lot more than you have to, but you can figure it out.
Honestly, you could probably fight your way through Ng's class with just matrix multiplication, which you can learn in less than an hour fairly easily.
More in-depth videos of the course are on YouTube: https://www.youtube.com/playlist?list=PLA89DCFA6ADACE599
Not exactly light on math, so you may want to read up on some multivariate Calculus and Linear Algebra before the later chapters. First few sections should be approachable regardless.
I looked a while ago and The Udacity nanodegree looks interesting but kind of a subset of the materials I'd already lined up. I also think part of the challenge is tailoring a curriculum to one's existing strengths, so in my case I'm spending less time on general programming / data munging, more on stats fundamentals and ML algorithms, and find that most all in one MOOCs have some material that is less worthwhile for me. Also: some of the projects they feature, like the kaggle competition https://www.kaggle.com/c/titanic can be undertaken independent of udacity.
I really think Python Machine Learning + https://www.kaggle.com/c/titanic + kaggle.com/c/forest-cover-type-prediction is a great place to start on the practical ML side.
Below is my favorite response by vaibkv:
vaibkv 15 days ago
Here's a tentative plan- 1. Do fully AndrewNg's course from Coursera 2. Do a course called AnalyticsEdge by MIT folks from edx.org. I can't recommend this course highly enough. It's a gem. You will learn practical stuff like RoC curves, and what not. Note that for a few things you will need to google and read on your own as the course might just give you an overview. 3. Keep the book "Elements of Statistical Learning" by Trevor Hastie handy. You will need to refer this book a lot. 4. There is also a course that Professor Hastie runs but I don't know the link for it. I highly recommend it as it gives a very good grounding on things like GBM, which are used a lot in practical scenarios. 5. Pick up twitter/enron emails/product reviews datasets and do sentiment analysis on it. 6. Pick up a lot of documents on some topic and make a program for automatically producing a summary of those documents - first read some papers on it. 7. Don't do Kaggle. It's something you do when you have considerable expertise with ML/AI. 8. Pick up flights data and do prediction for flight delays. Use different algorithms, compare them. 9. Make a recommendation system to recommend books/music/movies (or all). 10. Make a Neural Network to predict moves in a tic-tac-toe game. These are a few things that can get you started. This is vast field but once you've done the above in earnest I think you have a good grounding. Pick a topic that interests you and write a paper on it - it's not such a big deal.
You need to first learn calculus and linear algebra, and learn them very well. I would also recommend having a good understanding of probability. Learning all of these well will take at least a year, if not longer. For instance, I took one year of calculus in high school and then one semester each of linear algebra and probability, which that adds up to two years.
You'll need calculus so you can do optimization (i.e. at the simplest level, take a derivative, set it to 0, and solve. Of course there's more you can do with calculus in Machine Learning). You'll need linear algebra for almost everything in Machine Learning. Lastly, probability will be useful for understanding very basic methods like Naive Bayes[0]. There are other methods built on probability also[1].
If you skimp on learning any of these, you will never be able to understand Machine Learning at a deep level, much less even a shallow level.