Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/lucasmaystre/svdlibc
A fork of Doug Rohde's SVD C Library.
https://github.com/lucasmaystre/svdlibc
Last synced: about 1 month ago
JSON representation
A fork of Doug Rohde's SVD C Library.
- Host: GitHub
- URL: https://github.com/lucasmaystre/svdlibc
- Owner: lucasmaystre
- Created: 2012-03-28T13:16:28.000Z (over 12 years ago)
- Default Branch: master
- Last Pushed: 2015-09-01T13:47:20.000Z (over 9 years ago)
- Last Synced: 2024-10-02T18:45:22.435Z (2 months ago)
- Language: C
- Homepage: http://tedlab.mit.edu/~dr/SVDLIBC/
- Size: 160 KB
- Stars: 48
- Watchers: 7
- Forks: 19
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-topic-models - SVDlibc - C implementation of SVD by Doug Rohde (Models / Truncated Singular Value Decomposition (SVD) / Latent Semantic Analysis (LSA) / Latent Semantic Indexing (LSI))
README
Doug Rohde's SVD C library
==========================**Good news: as of version 1.4, SVDLIBC is [explicitly available under a BSD
license][5].**[SVDLIBC][1] is a fast implementation of SVD matrix decomposition by Doug Rohde.
It works particularly efficiently in the following cases:- the matrix is sparse,
- only a few singular values are needed.These properties make it particularly well suited for [latent semantic
analysis][2], for example.I ran an experiment on an Amazon EC2 [m2.xlarge][3] instance - which might be
way overkill - with a 70k × 500k matrix containing 8M entries (density: 0.02%).
Here is the running time for different values of `d` (= dimensions = number of
singular values):- `-d 50`: 39s wall time
- `-d 300`: 4m53s wall time
- `-d 1000`: 31m48s wall timeWhy this fork ?
---------------The latest official release of the library (version 1.34) dates back from 2005.
It has a few quirks, such as:- `make` / `make install` don't work "as expected"
- it doesn't compile on Mac OS X out of the box
- some bugs have been found, e.g. by [piskvorky][4]A caveat
--------I'm not a release engineer, and have only limited knowledge of the different
languages (C, Makefile) and tools (`make`, `gcc`) involved. The modifications in
this fork are working for me, but nothing guarantees they'll work for you.If you find a bug and fix it yourself, I'd be happy to get a pull your changes
over.Installation instructions
-------------------------Easy as pie:
# Download the code. Alternatively you can also download the zip file.
git clone git://github.com/lucasmaystre/svdlibc.git
cd svdlibc# Just like any other sane program...
make
make install# You're done. Start using it!
svd -o result -d 10 THE_MATRIX[1]: http://tedlab.mit.edu/~dr/SVDLIBC/
[2]: http://en.wikipedia.org/wiki/Latent_semantic_analysis
[3]: http://aws.amazon.com/ec2/instance-types/
[4]: https://github.com/piskvorky/sparsesvd/commit/4ad18096334636e0eae180964284c6dd7b7749c3
[5]: http://tedlab.mit.edu/~dr/SVDLIBC/license.html