Ask HN: How to self-learn ML?

50 points by sidyapa ↗ HN
With a plethora of resources on google, Quora and HN, I would love to know :-

1. Detailed roadmaps for a beginner 2. Prerequisites and resources for every topic. 3. How you taught yourself Machine Learning.

20 comments

[ 7.7 ms ] story [ 25.9 ms ] thread
I did Coursera's "Introduction to Machine Learning" by Andrew Ng back in 2013 and loved it. Great tutor, good course material - and it looks like Coursera is still offering this course though I am not sure if it is still free. The course is language-agnostic and uses Octave (an open-source Mathlab clone) for assignments and examples.
It is a very good introduction course, I did it as well in 2013. You can still do it for free, but you will not receive the Coursera certificate on completion. To receive the certificate you need to pay $79.
I'm learning the material myself. Shoot me an email. I'd be happy to share notes.
I'd highly recommend course.fast.ai - it's focussed on deep learning, but is designed for beginners to get to a production stage.
Does deep learning encompass all ML though? While I agree it can be used for numerous tasks I don't think starting ML with deep learning is such a good idea.
Deep learning is easy and popular - it's just as good a starting point as anything else. No one would argue that linear regression isn't a good starting point, but only because it's not fashionable to dismiss linear regression.
I'd second this, plus Jeremy and Rachael hang out on HN occasionally.

I've also worked my way through "Hands on machine learning with scikit learn and tensorflow" by Geron and have found it pretty approachable, up until tensorflow anyway.

But https://github.com/aymericdamien/TensorFlow-Examples helped with that.

Check out my study plan:. https://github.com/desicochrane/data-science-masters

Its still evolving, but the earlier parts are pretty comprehensive and resources have been over a year in curation.

Amazing. I am looking for something like this for Engineering (Aero/Mech). I think the first part has a lot of parallels so that's great.
The space of learn-ML resources is bigger than the void inside me, so it's expected from you to be lost and feel like you won't ever figure it out. If you've never done math (I don't assume you haven't) before and you don't believe that anyone with a reasonable level of intelligence can do it, start with: http://www.math.harvard.edu/~elkies/M55a.17/index.html I'm kidding, here's where you really start: https://github.com/nbro/understanding-math If you're extremely math anxious (I don't assume you are), talk to your therapist and get rid of it. You can do ML without math, but if there's any opportunity to learn as much math as you can, use the hell out of it. Otherwise you won't even know what kind of opportunities you're missing. Don't expect HRs to care though, just start screaming "TensorFlow OMG SO HOT" at them.

I've tried plenty of industry-oriented courses via Udemy, Udacity, Coursera, edX, and was disappointed by the lack of depth. I was annoyed by the recent Google's ML Crash Course. I never checked fast.ai.

Here's the way I'm doing it:

Step 1. Use MIT OCW to learn prerequisite math.

Those are courses denoted by 18.01sc->18.02, 18.06sc, 6.041sc->18.650. Throw in some 18.062J->6.006->18.410J->18.415J.

If you're a sociopath, go with http://www-math.mit.edu/~goemans/18310S15/18310A.html, that's cool.

Go to Stanford Lagunita, take CVX101.

Personally, I read textbooks for each course. Time commitment is not that bad, something like 60-70 hours per week, I never enjoyed having friends or life anyway.

Step 2. Use MIT OCW to learn prerequisite programming. Those are courses 6.0001 and 6.0002

Step 3. There're three popular ML textbooks: ISBN 9780387310732 (canonical) ISBN 9780262306164 ISBN 9781461471387

Then there're MIT 6.036 (Introduction to ML) notes: https://github.com/kchobo13/6.036/blob/master/2015%20notes.p... They're considering to do edX' MOOC, so keep your eyes open.

Then there're those: https://work.caltech.edu/telecourse.html https://lagunita.stanford.edu/courses/HumanitiesSciences/Sta...

And my favorite is: https://see.stanford.edu/course/cs229 https://github.com/econti/cs229 (notes 2017) https://www.urbandictionary.com/define.php?term=Andrew%20Ng (a short note on "little to no prerequisites")

And here's the one I've never checked: https://www.cs.ox.ac.uk/people/nando.defreitas/machinelearni...

Step 4. Since any sane person would enjoy swimming in a pool of resource diarrhea instead of doing actual work, here's a bonus, jump in:

https://mml-book.github.io...

Unfortunately, there is simply too much information in ML, I found that it's not just like learning a new programming language where you can scope it to a certain size or amount of studying, the way I try to deal with it is CheatSheets, so I created my own below:

Check out my ML and DataScience CheatSheets here: https://tomer-ben-david.github.io/datascience-cheatsheet

I have some ML introductory lectures on my YouTube Channel, https://www.youtube.com/channel/UC82zocd7ZWMSHe5uuPT4gSw?vie...

I try to keep all material concise for a clean slate learner.

There's an open CMU class from 2015 with lectures http://www.cs.cmu.edu/~ninamf/courses/601sp15/lectures.shtml

It assumes you have a working knowledge of probability, linear algebra, statistics and algorithms at the undergrad level but the recitations (also open) are designed to fill these gaps. From there you would start going through the latest journals/papers in ML. There is also a practical data science class that's open with some ML content http://www.datasciencecourse.org/lectures/

If you can get the entire playlists from youtube before you start watching because often these resources disappear

[optional] Learn about math. /nbro/understanding-math (GitHub)

1. Learn ML-math. Calculus: 18.01sc, 18.02 (MIT OCW); Linear Algebra: 18.06sc (MIT OCW); Probability and Statistics: 6.041sc, 18.650 (MIT OCW); Convex Optimization: CVX101 (Stanford Lagunita)

2. Learn computer science. Programming: 6.0001, 6.0002 (MIT OCW); Discrete Mathematics: 18.062J or 18.310A [more rigorous and advanced] (MIT OCW); Algorithms: 6.006, 18.410J, 18.415J (MIT OCW)

3. Learn ML. Course: 6.036 (MIT) [my choice] Lecture videos: MIT account needed Textbook: ISBN 9780387310732 Lecture Notes: kchobo13/6.036 (GitHub)

Course: CS229 (Stanford Engineering Everywhere) [my choice] Lecture videos: open access Lecture notes: /econti/cs229 (GitHub)

Course: CS156 (Caltech) All materials: work.caltech.edu/telecourse.html

Course: Machine Learning (University of Oxford) All materials: cs.ox.ac.uk/people/nando.defreitas/machinelearning/

4. Resources: prakhar1989/awesome-courses#machine-learning (GitHub); Wrosinski/MachineLearning_ResourcesCompilation (GitHub)

5. Books: https://news.ycombinator.com/item?id=1055389; mml-book (GitHub)

I would suggest going to university. Anything else is a waste of time if you're looking for employment.

The only exception would be if you're an employee (programmer) of a large firm that's willing to train you and put you in a position to use your skills. But if that was the case you wouldn't be here. Don't spend months of your time self-training because nobody will hire you without hard qualifications.

Also ML is a very large and diverse field, with many different sub-categories. What you learn from online courses depends on the course. Most of them are essentially just training videos that teach programmers how to use a certain library. If you really want to learn ML, browse for graduate programmes in universities you can attend. If you don't have an undergraduate degree, go get one. If you only want to learn ML as a hobby with no prospects of getting employed, try studying from various online courses (ie on MIT or coursera etc).

There is an assumption with some of these responses that you want to learn ML for career progression.

If so, are you really interested in ML or do you just think its the hot bandwagon of the moment which you want to jump on to get ahead? If that is the case, I'd suggest that perhaps that is a bit obvious and to identify something else that is less hyped and mainstream. Perhaps something which you can get ahead of the crowd on and ideally, have genuine interest in.

I prefer learning by messing with existing examples rather than watching YouTube videos or reading books, so I created a directory of ML projects that 1) have 'interesting' outputs, 2) are well documented and 3) open source: https://ml-showcase.com