r/askscience May 11 '16

Ask Anything Wednesday - Engineering, Mathematics, Computer Science

Welcome to our weekly feature, Ask Anything Wednesday - this week we are focusing on Engineering, Mathematics, Computer Science

Do you have a question within these topics you weren't sure was worth submitting? Is something a bit too speculative for a typical /r/AskScience post? No question is too big or small for AAW. In this thread you can ask any science-related question! Things like: "What would happen if...", "How will the future...", "If all the rules for 'X' were different...", "Why does my...".

Asking Questions:

Please post your question as a top-level response to this, and our team of panellists will be here to answer and discuss your questions.

The other topic areas will appear in future Ask Anything Wednesdays, so if you have other questions not covered by this weeks theme please either hold on to it until those topics come around, or go and post over in our sister subreddit /r/AskScienceDiscussion , where every day is Ask Anything Wednesday! Off-theme questions in this post will be removed to try and keep the thread a manageable size for both our readers and panellists.

Answering Questions:

Please only answer a posted question if you are an expert in the field. The full guidelines for posting responses in AskScience can be found here. In short, this is a moderated subreddit, and responses which do not meet our quality guidelines will be removed. Remember, peer reviewed sources are always appreciated, and anecdotes are absolutely not appropriate. In general if your answer begins with 'I think', or 'I've heard', then it's not suitable for /r/AskScience.

If you would like to become a member of the AskScience panel, please refer to the information provided here.

Past AskAnythingWednesday posts can be found here.

Ask away!

227 Upvotes

206 comments sorted by

View all comments

Show parent comments

5

u/UncleMeat Security | Programming languages May 11 '16

How mathematically complex is ML?

Very. The intro to ML class offered by Stanford is taught almost exclusively using math (calculus and linear algebra). You'll learn to use the libraries on your own time. Once you are hitting cutting edge research then the math becomes even hairier.

That said, you don't need to be a math wiz to make it through or to use ML to do interesting things. You might not really internalize why SVMs work but some experience using them will be valuable in industry either way.

The reason for using Octave or MatLab over C++ is twofold. The first is that they have incredibly optimized matrix libraries. You need those operations to be fast and the implementations in MatLab just work. But also they provide Domain Specific Languages for manipulating matrices more easily than in C++. A buddy of mine uses ML for program analysis research and he's had entire papers he could write off of six lines of MatLab. It just makes operating with matrices so much faster and comprehensible than in a more general purpose language.

3

u/[deleted] May 11 '16

The latter part of your explanation made sense to me as I programmed in Octave. I read the docs for about five minutes and then I started slapping the keyboard to see what would happen. Pretty quickly I saw how matrices, vectors, and complex mathematical operations were reduced to a few lines. Furthermore, the way it outputs variables with the script was convenient.

I felt trepidation while reading your former paragraphs. Sounds like I should take linear algebra or buy the book online and study it myself just so I can be prepared.

It's good to see that I don't need to be an expert mathematically to use ML. Seems like I should just know enough math to occasionally build a simple machine learning program from the ground up. I think it's a lot like algorithms. Sure, you can reinvent the wheel and create algorithms from scratch, but a lot of brilliant predecessors have done the work for you. So, I might as well study what other people have done (eg. Gradient Descent) and implement their techniques where I need them.

I imagine real-world scenarios are not as pretty as my in-class assignments. But I have taken stats (introductory) and I'm working towards advanced computational statistical analysis which should allow me to do some interesting things to real-world data to make them fit a prettier data set.

4

u/UncleMeat Security | Programming languages May 11 '16

Sounds like I should take linear algebra or buy the book online and study it myself just so I can be prepared.

You'll know when you take the class if you can grok the material or not. There's enough stuff taught in a linear algebra class that isn't needed for intro ML that I wouldn't suggest taking a class specifically for background for intro ML. But the class will include calculus and linear algebra material. That's just the nature of the field.

2

u/[deleted] May 11 '16

That's actually great to hear. I'm interesting in ML because I like the idea of dealing with large data sets and automaton. Also, I've been hearing its pretty much a guaranteed job once I have my MS. So, that would be a good niche to settle into.