Find file
Fetching contributors…
Cannot retrieve contributors at this time
79 lines (72 sloc) 2.89 KB
Name: hmatrix-nipals
Version: 0.2
NIPALS method for Principal Components Analysis on large data-sets.
NIPALS -- Nonlinear Iterative Partial Least Squares
<>, is a method for iteratively
finding the left singular vectors of a large matrix. In other words
it discovers the largest principal component
<> of a set of
mean-centred samples, along with the score (the magnitude of the
principal component) for each sample, and the residual of each
sample that is orthogonal to the principal component. By repeating
the procedure on the residuals, the second principal component is
found, and so on.
The advantage of NIPALS over more traditional methods, like SVD, is
that it is memory efficient, and can complete early if only a small
number of principal components are needed. It is also simple to
implement correctly. Additionally, because it doesn't pre-condition
the sample matrix in any way, it can be implemented with only two
sequential passes per iteration through the sample data, which is
much more efficient than random accesses if the data-set is too
large to fit in memory.
NIPALS is not generally recommended because sample matrices where
the largest eigenvalues are close in magnitude will cause NIPALS to
converge very slowly. For sparse matrices, use Lanczos methods
<>, and for dense
matrices, random-projection methods
can be used. However, these methods are harder to implement in a
single pass. If you know of a good, single-pass, and
memory-efficient implementation of either of these methods, please
contact the author.
License: LGPL-2.1
License-file: LICENSE
Author: Alan Falloon
Copyright: Copyright (c) 2011 Alan Falloon
Stability: Experimental
Category: Math
Build-type: Simple
Cabal-version: >=1.6
Source-repository head
Type: git
Location: git://
Branch: master
Flag test
Description: Build unit-tests
Default: False
Hs-source-dirs: src
base >= 3 && < 5,
hmatrix >= 0.11
Executable test
Main-is: tests.hs
Hs-source-dirs: src test
if flag(test)
QuickCheck >= 2.4,
base >= 3 && < 5,
hmatrix >= 0.11,
test-framework >= 0.3,
test-framework-quickcheck2 >= 0.2.9
Buildable: False