Hacker News new | ask | show | jobs
by hiddencost 4139 days ago
http://math.stackexchange.com/questions/344879/how-does-line...

Pretty much all of machine learning relies on linear algebra.

Most scientific computing relies on lI near algebra.

Graph algorithms often use linear algebra.

If you just want to be a Web Dev or an app developer, it probably doesn't matter, tho.

But if you just want to do Web Dev or mobile apps then you don't really need most of computer science.

1 comments

Well, if I remember my university's beginner linear algebra course, there were many topics on the syllabus only due to historic accident, ancestor worship, and theoretical necessities: I remember parallelepipeds, Cramer's rule, solving eigensystems by solving for a polynomial's zeros... Let me tell you how many times I've used parallelepipeds, Cramer's rule, or found eigenvalues via the quadratic formula in the 12 years since linear algebra (and a career in statistical signal processing and machine learning): zero, zero, and zero. Most things in college are important only to the extent that they're gatekeepers for what's really important. What hiddencost says is true, but very little of what you're learning in class is relevant to those important and interesting things. Sorry: college sucks.
I can point to people who used eigenvalues to make billions and change the world. So... maybe they're not useless.
It's not that eigenvalues per se are useless--they're plainly not--but that no one finds eigenvalues in practice by computing the characteristic polynomial and solving for its roots. Unfortunately, that computation is often found in HW and exams in US undergraduate linear algebra courses.
This is especially tragic because matrix factorization algorithms are so deep and interesting, theory and programming-wise! LU, Cholesky, QR, eigendecomposition, SVD, mmmm. Round-off error tolerance, convergence criteria, stability, yum.

Characteristic qualities and root finding: bleh.

What is interesting is obviously personal, and I know you don't mean to denigrate some topics in general, but I want to caution people that characteristic equations and root finding are complex and far from useless. Numerical computation of eigen decomposition starts from finding the roots of the characteristic equations (in altered form), the eigen values, without which there is no computation of SVD. How the behaviors of roots change as coefficients vary are fundamental in control engineering. Newton's method holds up half of numerical optimization. Undergraduates don't have to learn them because others have worked out the details and implemented them in software.

By the way, Cramer's rule is useless for numerical computation, but it is immensely useful in theoretical work. It belongs to the vast body of work dealing with determinants before the rise of linear algebra. Determinant is the only obvious connection to algebra left in an undergraduate's linear algebra course, so I can understand people are turned off by it.

Not to mention that when your matrix is 5x5 or more, there aren't even general solutions for roots if for some reason you're still insisting on the matrix->polynomial->eigenvalues route.
Sure there are (in many reasonable senses). Polynomial root extraction just isn't expressible in terms of addition, subtraction, multiplication, division, and nth roots alone. But that's ok; there's nothing magic about that particular set of operations, so as to make it the end-all, be-all.
People also don't only solve for eigenvalues computationally. Knowing about all the perspectives of eigenvalues helps. I agree the computations are dumb, but if you propose an intro linear algebra class with no computations to soak up test scores you will get far more protests.
Seconded. Same for discrete mathematics and differential equations. Interesting to learn about, but pretty much worthless as soon as you set foot off of campus. I'd love to see comments from anyone who has practically used any of the information from those classes as a part of their daily duties as a programmer of any kind.
I watched Gilbert Strang's video lectures on linear algebra (the MIT freshman course) for preparation for my PhD qualifier exam, and as a third year grad student, I could appreciate the relevance of almost every single topic in the class. That is, seven years after freshman linear algebra and with countless applications programmed, papers read and implemented, and theoretical/applied classes taken, it "all made sense" (don't ask me what a freshman is supposed to make of that material, other than to acquire it at a very abstract superficial level).

The early classes are the prerequisites for every and anything you might wind up doing with math. Including becoming a math prof, or a web dev, or dropping out. Nobody tells you, for every section of every textbook you have to read, what its myriad applications might be, and you can't get a customized build of just the topics you want.

But we're all startup people here right? Can this shortcoming be fixed? Can we make a detailed dependency graph of topics in applied mathematics, which could potentially be used to generate custom learning builds?

I use it every single day. In the past I did all kinds of simulations for avionics and flight. I've used it for epidemiology studies, signal processing, augmented reality, machine vision for factories, and nowadays I'm using it in computer vision. I couldn't get anywhere without differential equations, linear algebra, and so on.

Discrete mathematics includes graph theory, discrete statistics, topology, OR, and so on.

College isn't meant to be votech. It's meant to expand your horizons. How would you go off and build a robot, write code for the NIH, work for a VR firm, write code for oil&gas exploration, program a drone if you didn't know this math? My only regret is that I didn't take more math.

I guess it is all taste, but I want the ability to just go and do what I want, and frankly, this sort of work is deeply interesting because it requires you to solve interesting problems. By that I mean that learning the API to Qt or Unity or something is not deeply interesting - it difficult to the extent that it is opaque/poorly documented. Once you learn the pattern to put something together in those frameworks the work becomes quite pedestrian (can you put a button here that ... yes, I can do that, yawn).

Sure. I work in ML, in industry. Singular value decomposition and related methods are huge. Understanding basis vectors. Most of the notation I use every day. The intuitive understanding of linear algebra and ability to read papers that rely on it. a lot of ML relies on understanding data as points in high dimensional space.

a lot of the stuff you're mentioning is required for what I'd consider the really interesting topics in CS, stuff like ML, operations research, scientific computing.

I've used differential equations building a physics-based optimization system for an industrial process. Symbolically solving parts of the system really increased its accuracy and stability.
Sounds like your college sucked, but that doesn't make it a fair generalization.