Ask HN: what linear algebra do you use most often for practical problems?
Linear algebra comes up in almost every area of modern research, but what applications have you made most often? Is it SVD for latent semantic analysis or computing eigenvector for PageRank or something else? Discuss.
30 comments
[ 5.4 ms ] story [ 74.5 ms ] threadhttp://en.wikipedia.org/wiki/Simplex_algorithm
I have a different problem - I would like to compute an approximate SVD of a very large sparse matrix, (for spectral clustering) but I can't find a good implementation which works for datasets too large to fit in core. This is a hadoop scale problem. What's the best way to do this?
Of course, finding all the singular values/vectors is out of the question, but I just need the top hundred or so.
Does anyone here have any suggestions for how to do this? The obvious strategy is just to construct a rank-100 approximation and optimize the singular values and vectors so that they get as close as possible to the real matrix. I guess gradient descent or something like that would work. Are there existing packages that do this with hadoop?
I'm sure there are better methods, but this one is easy and is producing great results. If you have any questions, you can shoot me an email at sbuss at cise dot ufl dot edu.
As for hadoop, I don't know of any parallel implementations of this that exist, but I don't think it would be /too/ hard to parallelize the gradient descent approach. Just split up the error calculation into several smaller chunks. If you get it running in parallel, let me know.
*edit: changed "vectors" to "values" in first paragraph.
I've used this, it works pretty quickly and produces exact results, unlike a gradient descent approach. Unfortunately, assuming I did everything correctly, it doesn't ignore the zeros in the data. I think this because after centering the data (subtracting the mean and dividing by the standard deviation for each row in the matrix), it just doesn't finish. I must have left it running for two days before I gave up on it. My assumption is that it was trying to approximate all the zeros which, due to centering, now were seen as the average rating for that user. I'm sure you could modify it to ignore those values, though.
edit: Please note that I could be way off in that my interpretation of the program not finishing. If someone knows I'm wrong, please tell me.
http://tinyurl.com/d99779 [PDF]
You just have to provide a matrix-vector product function, specify a few parameters (how many singular values to find, should it compute the singular vectors, maximum number of iterations, etc) and it takes care of the rest. It uses the Lanczos iteration approach mentioned in sibling comments, and it seems like a far nicer implementation than SVDPACK and SVDLIBC.
Let me know if you want a copy of my C interface to PROPACK.
Cheers
http://en.wikipedia.org/wiki/Knapsack_problem
I'm currently looking for a good Partial Least Squares algorithm in C/C++. Any suggestions? I know R has a popular PLS algorithm, but I was hoping to avoid the learning curve.