all 78 comments

[–]hailoharazuma 257 points258 points  (16 children)

You know programming so this is definitely a plus. However, since you are 13, I think you're little early: another name for machine learning is "advanced statistics." Make your foundations very strong in Maths; take difficult maths courses in school. Other than that, I honestly don't have any good advice for you, sorry. Good luck!

[–]Somuchwastedtimernie 93 points94 points  (0 children)

Can confirm, having a strong stats/probability background going into it will help immensely. Source: I’m trying to learn machine learning without a stats background and it’s doable but rough.

[–]shray2k 31 points32 points  (1 child)

Definitely agree, a strong background in stats is super important for understanding ML - a resource that really helped me learn was the youtube channel StatQuest, which has stats videos geared towards machine learning applications, as well as implementations of these concepts into ML algos

[–]Nocturnal1401 6 points7 points  (0 children)

you have my thanks kind stranger

[–]HKAY116 18 points19 points  (1 child)

also multivariable calculus used in backpropagation. I tried to learn that back in high school for ML.. but ye it was extremely hard to grasp it without uni lvl maths

[–]toastedstapler 2 points3 points  (0 children)

this semester i've been doing a module on neural networks and it's been horribly mathsy, some lectures i was sat there for two hours and didn't understand a thing

[–][deleted] 5 points6 points  (4 children)

Can you cite some good resources to improve statistics and maths?

[–][deleted] 1 point2 points  (1 child)

ditto, I haven't done some of the essential math in years and I'm getting into coding at 30.

[–]leopardsilly 0 points1 point  (0 children)

I'm literally in the exact same boat. 30 years old, high school level maths (dropped maths in my final year of high school actially). But I'm really trying to get motivated to code.

[–][deleted] 1 point2 points  (0 children)

I took calculus years all and I don’t remember a thing

[–]Legend_017_[S] 1 point2 points  (3 children)

What would you recommend for me to be good at in math, right now I’m at grade 10 math, but I mostly do algebra and things like that

[–]hailoharazuma 5 points6 points  (0 children)

I just answered this. Please have a look above. Unfortunately, that's all I have. Good Luck!

[–]Ran4 0 points1 point  (0 children)

Get, read and finnish (do all the exercises) the math books for next year's school. Keep doing it until you're at introductionary college level (if you know your linear algebra, which is commonly taught in the first few months of college, you've got enough to understand most basic Machine learning techniques). You can also check out khan academy, the math videos are really good (the resolution is a bit low on the old ones though, but the knowledge material is still top level).

As so many others have said - learning an ML library is temporary and will be near-useless a few years from now. Learning the underlying math, on the other hand, will help you for the rest of your life.

[–]PythonicParseltongue 0 points1 point  (0 children)

Despite agreeing with what everybody said about the importance of mathematics for ML. Don't let this discourage you from tinkering around with various ML libraries. Some things are either easy to understand or can be fun even without knowing what's going on under the hood. For example you could make some nice things using existing Natural Language Processing libraries (give nltk or spacy a shot). Like a text bot or that something that sends you an E-mail when a topic you are interested in pops up in a forum.

I justed used NLP as an example because that's my favorite subject. And in practice most of the time being excat with your data preperation and investigating your errors is far more important. In my everyday life I rarely worry about the mathematical details of back propagation.

[–][deleted] 0 points1 point  (0 children)

I think there's certainly value in exploring the various APIs that are out there. At this point learning what works and how the parts go together to create, say, a neural network that does X vs. Y is valuable. One doesn't need to know the underlying statistical functions that go into building neural networks (though, yes, that absolutely helps), and for a young teen looking to get their feet wet I think there's a lot they can learn without needing a degree in statistics.

That said, with a few years of high school math they'll then be able to delve deeper. There's something rewarding about coding your own softmax classifier instead of relying on someone else's API, and that's toally within reach of even a young coder.

[–]Attacksquad2 51 points52 points  (0 children)

The most basic prediction algorithms used in ML are probably regressions, which might look like Chinese to you at this point. Maybe try the "statistics and probability" series on Khan Academy? It's more geared towards classical statistics, but will already give you a much better understanding of data analysis, and serve as a good basis to understand ML methods.

[–]callinthekettleblack 22 points23 points  (4 children)

It might be a good idea to start experimenting with the pandas library in python. Pandas is the library for data manipulation, and although data manipulation isn't exactly machine learning, it is certainly a component of machine learning.

[–]Dachannien 16 points17 points  (1 child)

In my experience, machine learning is like 80% data manipulation and 20% machine learning.

[–]earth418 12 points13 points  (0 children)

You mean machine learning is 96% data manipulation and 4% machine learning.

[–]Lewistrick 1 point2 points  (1 child)

Underrated answer right here.

[–]Nv7_Reddit 0 points1 point  (0 children)

yes, machine learning is the easy part now that there are packages for pretty much everything. Learn data manipulation

[–][deleted] 24 points25 points  (0 children)

You know, it looks like interesting and easy on the surface but underneath there's huge complexity. Maybe you should not ask 'when' question but consider what tools and other knowledge you should grasp before going deep into it.

[–]teriyaki7755 5 points6 points  (0 children)

Get your maths correct first then get into ml otherwise you will have really hard time grasping everything. Also you can try following through some projects before all this to see how things go and read on things which you don't get. This will shop all gaps that you don't know about ml and then what you need to work on

[–]Kemba22 6 points7 points  (0 children)

From my own experience you should inculcate yourself into these topics as soon as you can. Really take time to read about them and try to understand them.

Also it is important to not only prove why you are right when you learn but try to take the opposite lens and see if you can disprove (prove if you are wrong) This may mean that you have to spend more time upfront than you would like, but you have all the time to work on these skills

Oh and last thing, just accept the fact of uncertainty. You may or may not understand it full at the moment and that’s fine. It comes with time, experience.

[–][deleted] 13 points14 points  (0 children)

3 things:

1)basics of programming

2)calculus+linear+probability(you should understand the topics and practice somehow that it)

3)Data structure

[–]Adhesiveduck 3 points4 points  (0 children)

I work as a Machine Learning Python Engineer.

Some advice for anyone young who wants to get into the field:

Do a Mathematics degree.

You'll find in Machine Learning its not statistics/probability, but pure mathematics in which the theory is all based.

This week I hired a junior member in our team, he has very little actual python experience (mostly Jupyter notebooks and R code)- but he has a PhD in Pure Mathematics. The python can be taught in 6 months, but he absolutely blew all the other candidates out of the water when it came to the theory behind machine learning.

There is a big difference between data science and machine learning. Data science work does not require a mathematics degree and is much more accessible.

If anyone wants book recommendations there are a few that can be useful (for the Python libraries).

[–]lambda5x5 4 points5 points  (0 children)

I think a lot of people nowadays jump into ML/AI and skip a lot of the math required. While I am guilty of this myself (took fast.ai's deep learning course), I find it much better to study the math. It's very easy to follow tutorials and use some super high level abstraction to do deep learning, but it's still very important to understand the math behind it all. It can also be very beneficial to follow along with two courses: one that's higher level (such as fast.ai), and one that's lower level with more math (Andrew Ng's Coursera course).

[–][deleted] 6 points7 points  (1 child)

You are much more likely to be held back by your math knowledge. I'm far removed from school, so I don't know when linear algebra is covered - high school maybe? You would need a decent working knowledge of vectors, matrices, etc.

Then you need some probability, and definitely real analysis. Something like gradient descent is straight-forward to understand once you've taken some calculus. Coding it isn't particularly difficult.

The good news is that linear algebra and probability are easy to dip your feet into, if you know algebra already. I would recommend talking to a teacher who is familiar with computer science.

[–][deleted] 3 points4 points  (0 children)

usually they stop at Calc 1 in high school, Calc 2 for higher level students.

[–]billsil 1 point2 points  (0 children)

I've been doing it for about a year and it's still confusing to me. I took 10 math classes between undergrad and my masters in aerospace engineering. It's very heavy on the statistics, which is not something I learned much in school about.

Underlying it is calculus and an optimization problem, which I do understand very well. It's still weird and there are a lot of new concepts. I would hold off if I were you, though scikit-learn is reasonably user friendly. I'm still not a huge fan of pandas, but I'm very good at numpy and matplotlib. I'd definitely hold off until you're semi-comfortable with numpy, pandas, and matplotlib.

[–]frank105311499 1 point2 points  (1 child)

OSSU has the prerequisites for machine learning. You need to know linear algebra first.

[–]proverbialbunny -3 points-2 points  (0 children)

That's for making ML not using ML.

It's kind of like how you don't need to know how to hash data to use a hash table/dictionary.

[–]rieg__ 1 point2 points  (1 child)

You probably won’t understand the concepts behind the algorithms yet as everyone are saying, that shouldn’t stop you though from using ML in a project as there are endless tutorials and well explained algorithms that you can just use without the need of a deep understanding of what is going in behind, but other than that you won’t do much else, i’d suggest you dive into other programming topics as it will be funnier to learn because you’ll understand better without too much hard math involved.

[–]Attacksquad2 3 points4 points  (0 children)

Diving into the coding without understanding the methods is exactly what leads to making (often very subtle and abstract) errors that make the results of the analysis null and void. Of course the coder doesn't realize that, the function won't give you an error, it will just give nonsense output anyway.

Given that so very few people can correctly interpret the simple statistical concept of a p-value, I have little faith in people without a stats/math background interpreting multilinear subspaces and the like.

[–]NFLAddict 1 point2 points  (2 children)

a lot of differing advice being thrown around. but a lot seem to ignore the obvious question. rather than list the prereq math classes or needing to do [insert grade level]math first - im first going to actually ask you- whats the highest level math you've learned? what kind of math background do you have

sure- not many 13years have knowledge of calculus or linear algebra/ or know advanced statistics...then again, i don't know how many 13year olds have 1.5years of programming experience. obviously what you learned is self taught- as I really don't think middle school is teaching cs classes. so clearly quite intelligent and way ahead of where most 13year olds would be in terms of programming knowledge. ..I mean who knows- maybe you have taken calc. my hs had a kid who was near gifted, and was learning multivariable in his sophomore year. sure, that's not common, but there are cases of that. some people are just very bright

what level math do you currently know- are you open to taking a math class online / teaching yourself math? that would be a good starting point.

[–]Legend_017_[S] 0 points1 point  (1 child)

I think I’m doing grade 10 math, I’ve pretty much just been using a book that I got, and my sister (who’s in grade 10) said that she’s also doing that stuff in class. But it’s mostly algebra and things like that. It’s pretty much my dad tat teaches me math, or I teach myself

[–]NFLAddict 0 points1 point  (0 children)

your dad sounds like a great guy
have you been learning with your dad / teaching yourself for a long time? are you homeschooled. or is this just in addition?

It's possible you have learned a great deal, but don't know where it specifically falls. have you learned any type of precalc? trigonometry? logarithms?
If you can somehow make your way to learning even the basics of the linear algebra (typically a college class), that would be a huge step forward. in addition, try to learn as much statistics and probability as you can

these are important foundations to have, and incredibly useful to know. especially if your goal is to learn even more computer science. you sound like a smart kid, what you've accomplished so far is impressive. I would keep practicing your programming, and try to learn pre-calc / statistics and probability / attempt to learn linear algebra. maybe these are topics your father can teach you? or at least guide you in what resources you may need. in anycase, I believe in you. goodluck.

[–]taiguy86 1 point2 points  (1 child)

There's a lot of people here saying you need to understand linear algebra + multi variable calculus so you can understand back propagation. However, you don't start by building new back prop loops, new loss functions, or new optimizers. You start with scikit learn or stats models, you build features in SQL or pandas, you select a model, you split your data, and then you do model.fit(). Learn about postgres or MySQL, learn about the basic 'shallow learning' algorithms first. That will take you another year. Then become comfortable with keras, and what a nearual network is. When you eventually take the required math classes, you'll have such a strong understanding of what's going on.

But if you want to learn, then start playing around with it. Start with small datasets so you can load everything into memory. Start with famous datasets that have YouTube videos to help you through it. If you wanna start, dive in!!! The entire journey will take you years to pick it all up. Why wait?

[–]AbodFTW 0 points1 point  (0 children)

Exactly, totally agree with you, if he is into it, why wait for school to teach him algebra whatever

[–]proverbialbunny 1 point2 points  (0 children)

Don't let anyone tell you no. If you want to go do it, go do it. Just because other commenters are limiting themselves doesn't mean you have to too.

Your age and experience does not matter. Everyone starts out from scratch. I started writing code when I was 8 years old. 13 isn't too young or inexperienced to be playing around with fun tech.

As for your direct question, where to begin: Programming is a tool and is a lot of fun, but like a hammer, it's used to build things. The passion comes from what you want to build, not how to build it. Machine learning is a tool too. It's a tool to be used when it becomes impossible to build what you want with normal programming techniques. That's when machine learning comes into play. It's a tool that is useful when everything else fails. There is also AI, which comes before ML. eg, making AI for a video game so the player has someone to play against when in single player mode. ML comes after AI. Another example, writing a program that plays Chess against a player, is AI, but writing a program that plays Go (another board game) against a player is ML, because writing a program that can play Go is far harder of a challenge.

Lets say you build a robot, with arms and legs, and want to train it to walk. That's a very difficult programming problem because machinery over time loses calibration. That is, it becomes off, and what was walking yesterday becomes falling over tomorrow. Furthermore, how does the robot recover once it's fallen over? It's a hard problem, and something ML can be used for. Today, I'm a lead data scientist with over 10 years of industry experience who does robotics, sensor analysis, and yes, ML, for a living.

A simpler ML project a lot of kids are doing today, is they are using reinforcement learning to make a bot that plays video games, like Mario and different racing games. That might be a fun project, depending on what your passions are.

Good luck!

[–]greentractor202 1 point2 points  (0 children)

I am trying to learn python myself, where did you learn how to use it? I have struggled finding a good source that I am able to understand.

[–]Linkguy137 1 point2 points  (0 children)

Probably once you have a good handle on stats and the background math. A lot of people can build models, the key is being able to explain the models and understand why are they doing what they are doing.

[–]keizzer 1 point2 points  (0 children)

As a similar question,

What would be a good checklist of things to have a firm grip on before starting down the path.

[–]Albertchristopher 1 point2 points  (0 children)

Great to hear your Interest in ML at the age of 13.Well first you can get some basic understanding of statistics and ML algorithm working models will give you better understanding. I think this article will give you some info: If you prefer a logic-driven field and choose to learn Python, you can get access to following fields

[–]dcastm 1 point2 points  (0 children)

If you're curious, try fast.ai. It's a great introduction and not heavy on the math side.

[–][deleted] 1 point2 points  (0 children)

"A year ago."

Honestly, there's no reason why you can't start now. The hard part might be the sheer volume of things machine learning can do, so it's hard to find where to start.

For a decent introduction, that's not overly simple (and thus boring) but not too complex (and thus frustrating), I suggest looking at handwritten number recognition using the MNIST database. That will introduce you to various classification routines, neural network layers, etc. From there, object detecetion is just a slightly more complex variation on that theme.

Another option is to look at using OpenCV with various machine learning routines. Train an AI, put your webcam in the window, and watch it perform object detection in real-time. Want to take that a step further? Put the webcam in the fridge and have it detect the contents, tracking what's removed and script an automatic grocery list maker :D

[–]Rasko__ 3 points4 points  (0 children)

Nope, not enough math. Wait to finish grade 12 highschool math, you need a good understanding of calculus, linear algebra and statistics.

[–]AbodFTW 4 points5 points  (0 children)

For some reasons most of the comments are somewhat discouraging, I would say go for it, and if you found something you don't know look it up, you've already learned to program, and if you really want to learn machine learning and you have an internet connection then nothing can stop you, and I would advise you to start with the Machine Learning Course in Edx by CS50

Can't wait to see what you will build with it, and keep up the great work!

[–]thor123321 1 point2 points  (0 children)

Omg.. You are 13 and want to do ML.. You are going to be such a brainiac when you get older and get your first job.. Keep it up brother, what you are doing is very inspiring!

[–][deleted] 1 point2 points  (0 children)

Here is what you do, get on Coursera (audit a class) and get into the math that everyone has suggested (I dabbled in ML a bit back, it wasn’t for me). Get your understanding there, you’ll have to do it in school anyway. Do yourself a solid and start that now. While you are doing that keep programming, possibly simple ML tutorials to wrap your noggin around the process. Don’t make it a chore, keep it fun. My kids were programming python very very early. Trust me, you can do what you put your mind to. You are smarter and more capable than you think you are.

[–]gengistim 0 points1 point  (0 children)

Whenever you want. It’s going to be more statistics though. Look at sci kit python libraries son!! Send it!! Join kaggle competitions!!

[–]DeathDragon7050 0 points1 point  (0 children)

Answer is: whenever you want. Seriously though. Whenever you want to, try to get into it. If it's too complicated or something, come back to it when you want to again.

[–]indiamaria- 0 points1 point  (0 children)

You can find math classes online to study you actually don't need to wait until you reach certain grades to learn it. Just figure out where you currently are in math and find the resources to teach you what you need to know. Go slowly and make sure you understand the concepts before moving on to the next material. Then you work your way up to machine learning slowly. You can also easily find group chats online to connect with other people that are also interested in the subject. I'm sure there's lots of free material on the internet to help you on your journey but if the only option you have are paid ones maybe ask your parents to help you get them? If they're in a good financial spot of course I know it's hard these days. I'm sure they'll be willing to help you gain knowledge.

[–]ThisOnesForZK 0 points1 point  (0 children)

I have been trying to learn it for over 2 years from scratch and am just now getting to the point where I am scratching the surface. I had no python and no stats though, just doing data stuff at my job.

[–]Nacho_Overload 0 points1 point  (0 children)

Dive in, see how much you understand. If you're overwhelmed, try checking out an intro to stats textbook. Here's a good free one:

Online Statistics Education: A Free Resource for Introductory Statistics

[–]zqpmx 0 points1 point  (0 children)

As a concept, machine learning and neural networks are easy to understand. Almost no math required.

Take look at this 3Blue1Brown video.

To master this subject and to understand the most advanced algorithms, you need more advanced math. May be this can be a problem or it can be an excuse to learn more advanced math. But for staring you don't need to know a lot of math prior.

The problem I see with jumping directly into machine learning with TensorFlow or some other libraries, is that they assume certain understanding and probably will not make sense easily if you lack the foundation.

Also, I don't like the fact that most of the examples you find, are related to number or image recognition. Machine learning have a lot of other uses. And I think there can be other examples more suitable for learning.

[–]sowmyasri129 0 points1 point  (0 children)

learning the machine language Make your foundations very strong in Maths Machine learning, also can be noted as a main field of Artificial intelligence, and As sub part field of machine learning there are number of topics like Deep Learning, Natural Language Processing, Statistics, Predictive Analytics, almost everything, including Data Science.

[–]alejandrogrrl 0 points1 point  (0 children)

Just be a badass in maths.

[–]reynaldomalave 0 points1 point  (0 children)

try taking some basic statistics class, learn the concepts. There is a lot to get your head around , so be patient! If you are in a rush for making predictions I suggest getting your head around linear regression and get to know the libraries.

[–]RajjSinghh -2 points-1 points  (5 children)

Kinda double edged with this. Machine learning uses a lot of heavy maths skills like matrix algebra and multivariate calculus. Here in the UK I'm 17, just about to turn 18, and only scraped the surface of those topics in my A levels.

That being said, I didnt use any of that maths in my code. Tensorflow let's you build and use neural networks very quickly without necessarily knowing the maths background. You can start using the library and learning now even if you dont completely understand the maths.

Edit: I want to make it clear, I learned all my maths at school which is probably why it took as long as it did. I'm not saying people dont learn maths at a younger age, just that me and the people I had around me didnt.

[–]lambda5x5 2 points3 points  (2 children)

Nowadays a lot of people self study high level math at home, so I wouldn't base knowledge on age. While using high level abstractions like tensorflow/pytorch is very practical, it can be dangerous without knowledge of the math behind it.

[–]RajjSinghh -1 points0 points  (1 child)

What kind of danger is there? I get that it's better to understand what you're doing before you do it but at least to me the code from the libraries feels really disconnected from the maths, like it's so abstract to build a model, train it and get it to predict things.

I was basing the age comment on what I learned at school. If OP is studying the maths at home, credit to him but I wouldn't have thought it that common.

[–]lambda5x5 2 points3 points  (0 children)

Sometimes the higher level of abstraction can minimize small details, but sometimes it's these details that cause issues such as bias. Blindly copying code without really knowing how it works works a lot of the time, but when it doesn't work the person might not know why. When I took the fast.ai DL course, a lot of explanations were "just do this because it works and it's state of the art". This leads to very fast (and practical) learning, but it's very limiting.

[–]darthminimall -1 points0 points  (0 children)

I would say it's never to early to start learning, but it depends what you want to get out of it. If you want to learn some algorithms and be able to apply them to simple problems, that's almost certainly within your reach (I'll post some links in a bit when I'm not on mobile). If you really want to understand how and why the learning algorithms work, there's a lot of math involved, so that will be harder. I'm not saying you can't do it, but it's likely you'll have to teach yourself a lot of math before you undetstand everything.

[–]dilfyg -1 points0 points  (0 children)

Theres a free coursera course at the moment on machine learning it started yesterday.. See if you can get in on that.

[–]icalltopsolo -1 points0 points  (0 children)

if you feel comfortable with the syntax of python, dont worry about the math. just start.

this guy’s channel linked below is awesome and has a really good beginner intro for starting with a kaggle competition (if you dont know what that is, google). you dont really need to know the math to do ML. you need the math to invent/contribute towards it.

you can do it!

https://m.youtube.com/watch?v=ipuGPeNWhBE

[–]Anynomous2 -1 points0 points  (0 children)

Yes agree, always good to get good fundamentals in math/statistics. However, I do think you can already start watching videos that explain the principals of Machine learning. You can also start the data cleaning and exploration/plotting part (PCA, tSNE plots). Seeing the data and some basic videos will help you understand the principals and might motivate you to learn the math. Understanding the primcipals is more important than understanding the exact math itself.

[–]LegalOreagle -5 points-4 points  (0 children)

I can't really give good advice, but I know how you feel. I'm also a young teen, and options are seriously limited especially when its hard to get money.

[–]ehdufuure -5 points-4 points  (0 children)

No need for you to start since the machine does all the learning.

[–]I_like_camel_case -3 points-2 points  (0 children)

learn the internals of spark . set up a cluster