Live data from Hacker News

The big six matrix factorizations

nhigham.com

51–60 of 84 posts

Re: The big six matrix factorizations

#51
post #28

Now apply them to the data used to identify the "Big Five" personality traits! This is an interesting application of factor analysis/matrix factorization: https://en.wikipedia.org/wiki/Big_Five_personality_traits

Where's the data? It could be indeed interesting.

Re: The big six matrix factorizations

#52

The article presents a note on the 6 well known matrix compositions. He states that all of them have cubic complexity, but practical algorithms with better exponents exist for all of them.

Could you link a practical algorithm with an exponent lower than 3? (I think of these things https://en.wikipedia.org/wiki/Computational_complexity_of_ma... as not being practical, but I'd love to be wrong. )

For something Strassen-ish you could look at https://jianyuhuang.com/papers/sc16.pdf and the GPU implementation https://apps.cs.utexas.edu/apps/sites/default/files/tech_rep...

Re: The big six matrix factorizations

#53
post #22

Earlier quoted context omitted.

This decomposition is not used much because it is not unique in any sense, it is not numerically stable, and it is fairly uninteresting: the matrix D can always be taken to consist of a diagonal of 1s of length rank(A) and the rest zeros. It is much more interesting once X and Y are constrained to something like unitary matrices (in which case we get SVD). This “rank decomposition” is a bit interesting algebraically…

It's not unique, but it can be implemented in a way that is stable. E.g. SVD does this (but is quite overkill for the requirements). It's highly relevant from an algebraic perspective, hence it's curious that it's not covered (at all) in the numeric literature.

Numerical linear algebra is very different from linear algebra.

Re: The big six matrix factorizations

#54
post #30

Earlier quoted context omitted.

It's always been very ambiguous in practice. To avoid ambiguity I usually use `flop/s` but not everyone likes that :)

> To avoid ambiguity I usually use `flop/s` but not everyone likes that :) Flop/s makes no sense and is outright wrong. The whole point of flops is to express how many floating point operations are required by an algorithm. How many operations are performed per second is a property of the hardware you're using to run an implementation of the algorithm. You want to express computational complexity in terms of floating…

The number of operations per second varies by at least an order of magnitude on the same hardware depending on the GEMM algorithm you use (reference or Goto), and you quote the performance of the implementation in terms of FLOP/s knowing the number of FLOPs required by the computation. That makes sense to people who implement and measure these things.

Re: The big six matrix factorizations

#55
post #4

Any suggestions on what to learn in Linear Algebra after Gilbert Strang’s 18.06SC? https://ocw.mit.edu/courses/18-06sc-linear-algebra-fall-2011... My goal is to learn the math behind machine learning.

The math used in ML papers is very diverse. There is too much to learn. It is easier if you pick a problem and learn the math for it. Find a group that is already working on that problem and ask them for best way to learn the math for it.

A strong foundation in linear algebra, multivariable calculus, probability, and statistics is going to be generally applicable almost no matter what problem you work on.

Re: The big six matrix factorizations

#56
post #43
post #4

Any suggestions on what to learn in Linear Algebra after Gilbert Strang’s 18.06SC? https://ocw.mit.edu/courses/18-06sc-linear-algebra-fall-2011... My goal is to learn the math behind machine learning.

If you want a beautiful abstract perspective on linear algebra to complement Strang's more down-to-earth, matrix- and linear equation-oriented lectures, pick up Axler's Linear Algebra Done Right .

He also released a lecture series recently (Axler himself!) which barely anyone seems to be talking about: https://www.youtube.com/playlist?list=PLGAnmvB9m7zOBVCZBUUmS...

Re: The big six matrix factorizations

#57

Earlier quoted context omitted.

It's always been very ambiguous in practice. To avoid ambiguity I usually use `flop/s` but not everyone likes that :)

Speaking of SVD doctors, I heard many years ago (from Alan Edelman) that Gene Golub's license plate used to be "DR SVD". Later he switched to "PROF SVD". I couldn't confirm the DR SVD part, but the PROF SVD story appears to be real: https://www.mathworks.com/company/newsletters/articles/profe...

I heard something very similar from some of his very close (ex-)colleagues, so it appears to be true :)

Re: The big six matrix factorizations

#58
post #45

Spectral decomposition is pretty cool. Application 1 - spectral clustering - an alternative to k-means for nonlinear clusters. Get a Distance matrix of your data, spectral decomp, run k-means on your k top eigen vectors and that's your clusters. Application 2 - graph clustering - (run spectral clustering on adj matrix!) There's some tricks to getting it to work in practice like normalizing but it's a simple and power…

I've never given a second thought about what the etymology of "spectral" in spectral decomposition is. Somewhere in the back of my mind (and I guess many students of physics have the same notion) subconsciously i assumed it originates from eigenvalues of the Hamiltonian determining the atomic spectral lines . But I've never followed up on it and actually looked it up .

Re: The big six matrix factorizations

#59
post #30

Earlier quoted context omitted.

It's always been very ambiguous in practice. To avoid ambiguity I usually use `flop/s` but not everyone likes that :)

> To avoid ambiguity I usually use `flop/s` but not everyone likes that :) Flop/s makes no sense and is outright wrong. The whole point of flops is to express how many floating point operations are required by an algorithm. How many operations are performed per second is a property of the hardware you're using to run an implementation of the algorithm. You want to express computational complexity in terms of floating…

Well, yeah, I use it in the context of floating-points-operations-per-seconds. That's the most common use in my field. I was replying to the parent comment. No need to use this kind of tone.
Post reply on HN