Ask HN: How to learn math from zero for adults?

559 points by stArrow ↗ HN
I am a 26 year old learner who is really into Machine Learning. But my lack of understanding in math has held me back. Skipping and hating math classes in high school have been my biggest regret.

Now, I am slowly trying to learn, but I don't know where to start. I need some guidance.

181 comments

[ 0.23 ms ] story [ 239 ms ] thread
Run through the math on Khan Academy to fill in your gaps for at least Algebra I, II and Precalculus. Then you need to Calculus I-III, Linear Algebra and basic Statistics which are also on Khan Academy.

Also I have created some youtube channels aggregating quite a bit of the quality university courses organized into playlists of playlists.

https://youtube.com/channel/UCjgQ2pJDjZlhdI4Ym7NQdUw

Note: You have to click on the titles of the topics on the home page that slide left/right (or up/down on a phone) to see the whole list of courses because YouTube truncates the lists on the home page.

Once we're outside a formal academic setting, the way to start learning is to start learning.

The first high hurdle is accepting that starting out everything (to a first approximation) is over our heads.

There's no perfect first resource because hard subjects are hard and take time.

But because we are out of school, we have decades to learn.

There's no final in sixteen weeks and only a pop-quiz tomorrow if we are in the middle of applying what we learned.

So just start learning math and figure out what works for you as you go along.

Good luck.

Asess where you are. Define goal(s) as per comments below. And start the heck climbing a hill. Good luck.
I always recommend courses on Udemy, Coursera, etc. Anywhere you have to pay for the knowledge. The money seems to be an important filter for quality. Not always, and there are certainly exceptions, but in my experience, it's highly predictive of useful knowledge.
This is subject to Goodhart’s Law. I’m not sure how to avoid that except by deleting this comment so nobody knows what measure you use.
I don't think it is, because I'm talking about a marketplace where goods and services can be exchanged for a price as being a filter for quality; otherwise known as capitalism.
If you assume price=quality and therefore always buy the most expensive one, you’re not participating in price discovery and they can just raise it, producing Veblen goods.
Oh I think I wasn't clear earlier. I'm not actually arguing that the higher priced the good, the higher the quality, since luxury items are one obvious exception. I agree with you there. I was making a comparison between educational lessons that are priced for free (like say YouTube tutorials) versus anything priced above $0.

I think just having a price tag at all incentivizes a marketplace where the best lessons compete. Now how one determines that quality though...lots of different heuristics and I have a few thoughts on how it could be done better but reviews, especially negative ones do a fairly decent job of assessing for qualities.

My apologies if it was not clear what I meant earlier.

Everything that can be learned can be studied through some mix of these techniques:

1. Rote learning/memorization. Copying, tracing, flash cards and so forth. This is how you learned to read and write, and while in school math it tends to be applied to calculation(memorizing results from adding and multiplying and so on) it can also be applied to build up recall of mathematical concepts like postulates and theorems.

2. Logic and problem solving strategies. Math "homework" is usually about finding a result through a mix of deductive, inductive and abductive strategies. When the result is calculation-focused it becomes very mechanical and "follow the steps you've memorized", and so can usually be delegated to a computer program now, but higher level math is more about integrating the concepts together to prove something is correct, which means having a really clear understanding of the definitions you're working with.

3. Dividing and conquering. Sometimes it's hard to see a concept in totality but you can understand a particular limited context and then generalize on it. This is typically where math research starts: there's a flash of insight into a concept and then progressive attempts to generalize it and reuse it to solve more problems or define its relationship to other concepts, like how there are multiple ways to define coordinate systems in geometry.

When reading a math text, it can be hard to get started because skimming the text doesn't really grant any access to the concepts: you have to follow through on internalizing them first, which means a mix of the rote learning and posing problems for oneself to solve, and looking for analogies in things you already know to find the differences and so gain more detailed understanding. By the time you've done that, you probably have read the same words hundreds of times and "slept on the problem" for weeks.

This quality of not really understanding math until you've grappled with the problems means that research mathematicians tend to only have a really detailed understanding of their own specialty, but have a more limited background in others, enough to communicate a little bit but not necessarily participate in the discussion substantially. To get "there", look at what's offered in college courses: you can reuse their textbooks and problem sets. Following an online course is also a valid method. You don't have to attend classes or lectures to study math, although sometimes you may want to ask questions to clarify - but the internet exists for that and lots of people are willing to help, at least up until you actually get to a research level problem.

why do you need math for machine learning? Code first, learn the math as you go. Otherwise, you will learn a bunch of math you don't need when your actual goal is machine learning.

Do you know pandas and scikit learn? If not, start there.

You don't say how much you already know.

Your first stop would be Khan Academy and knowing your gaps.

Fill your gaps.

Learn HS level Calculus, Linear Algebra, and Statistics.

You will need more Calculus and Linear Algebra later. But not now.

Then try studying "Machine Learning for Absolute Beginners" book. It not very mathy.

Then just keep going through ML courses. Learn what you need on the way.

The "way" of math needed in Machine Learning is not the same "way" that brings you scores in school/college exam.

You need absolutely crystal clear concepts in Linear Algebra, Multivariable Calculus, and in some areas of ML, Statistics.

Corporate "Data Science" and Machine Learning research/projects are wildly different beasts. Learn what you will pursue, and decide your path based on that.

And most importantly, you have to be patient. Machine Learning and Math for it takes time- not days or weeks, but months and years.

Although both are rooted in statistics, Data Science or Data Mining and ML are very different fields even if they might share some concepts and methods.

I did different courses for each in University. Data Science is concerned with extracting patterns from existing data.

Like you have some papers for exam and you want to know if students cheated. Or you have the results from a poll about people hobbies, income etc and you want to correlate that with voting for party X. Or you want to correlate the race of canines with their abilities.

ML is also mostly about patterns but in a different way. You want something to tell how likely a comment is spam, if an article is positive towards a politician, if a picture is of a cat or dog.

So, to get to get a fundamental understanding you will need to learn statistics. Which in turn will require some calculus and algebra, but nothing too difficult.

Although I have the basic math knowledge and I have the basic knowledge of ML and Data Mining, I quit trying to do things in those fields because they are really vast, especially ML. Knowing the math and the basics of ML is required but far, far from enough to get good results. The people who work in the field are focused on it. I like ML but I like software architecture and development more, so I did my choice.

That being said, I still got some benefits from basic ML knowledge when I used ML libraries such as ML.NET in my day job. Knowing what a SVM or random forest is and how to tune parameters to improve my model was helpful. It was just a simple usage case like suggesting to customers what they might want to acquire based on their past purchases.

Honestly, I almost never need Statistics.

More than basic notations and explanatory parts of research papers, I never need even iota of Statistics.

When you need to learn something specific, like, say, KL divergence, if your math is solid, then you can pick it up in 10 minutes.

I'd recommend going through the Khan Academy curriculum and filling your gaps - only study the topics you are struggling with. Once you do that, I'd suggest studying this https://teachyourselfcs.com/#math
I neglected math a lot in HS too and tried the Khan Academy route, but figured out over time that you really can find your gaps and fill them on demand by focusing on the work you want to do.

I wouldn’t discourage you from trying a more comprehensive approach to building a great foundation in math. Math is awesome and if you enjoy it, go for it. If you want to stay focused on ML, you might do alright by figuring out what you need as you go. Just walk back from each problem until you find your bearings, then dig in.

Math is huge and you could find it takes forever to arrive at the skills you need to do the specific thing you want to do.

(comment deleted)
Browsing https://math.stackexchange.com/questions can be a nice way to learn math notation and to see which math topics you find interesting.

(also, occasionally a question or answer will be so good you'll instantly grok the math concept even if you haven't learned it formally before; it's rare but magical when it happens).

I would advise you to download[1] free maths class 10,11,12 books which is taught to indian students. They are well written, covers calculus, lots of exercises to practice as well to test your knowledge.

[1] https://ncert.nic.in/textbook.php?kemh1=6-16

khan academy is the best for ANY age. Start from basic algebra and progress through trig, geometry, calculus 1,2,3 and linear algebra, and you'll be fine. That's what I did. Should take a few months depending on work ethic
I went a similar route. What did it for me was conceptual analysis. You know how to program already. Maybe you did object oriented analysis? Once I understood, that creating a sample space can be understood as creating a class of the samples you expect, and then putting the attributes on an axis of a space, it clicked. Depending on the space, you then can visualize the outcome probabilities as weight of a point or area in the space. A random variable is then a mapping of that space to R etc. Or that differentiation is basically a way to get the slope of a function’s tangents at any point (it is differentiation of a function!) and its converse, integration, helps you find the area under a function graph. The important point is here that many interesting points can be mapped to doing this (for example calculating the probability from A to B, if you decided to represent it as area). I had worked with UML, OPM (object process methodology) and BFO (basic fundamental ontology) before. Asking “what is it (attributes, parts) and what can I do with it helps me a lot. The most important trait however was coping with frustration, sometimes it took me months to understand a concept.
What helped me get a grip on learning mathematics was learning to prove theorems.

Working through Daniel Velleman's book "How to Prove It" (the only pre requisite is that you can understand boolean logic, which programmers have no problem with), and then a Set Theory book (I used Enderton) set me up to tackle (proof based) Linear Algebra, Analysis etc.

Just my personal experience. Hope this helps.

I think theorems already presuppose some basic understanding of algebra, but I might be wrong.

It really depends on what OP actually knows and how deep he wants to learn and in what direction

I wonder about this myself. I've always had a much easier time learning things that makes sense from first principles rather than something that I need to just take for granted, the latter being the case with the first 12 years of my own math education. The latter is much more difficult to form a mental model around.

Would it be possible to teach mathematics by theorem proving ab initio? I guess conventional algebra would be hard to digest for a first grader, but I maybe something like the Peano axioms can be thought of as rules for a game that the students can play, where subsequent arithmetic lessons will be about finding shortcuts to the tedious application of the rules in order to solve problems.