| Nonlinear PCA toolbox for MATLAB | by Matthias Scholz |
nlpca |
|
[pc, net] = nlpca(data, k) pc = nlpca_get_components(net, data) data_reconstruction = nlpca_get_data(net, pc)
The nonlinear PCA is based on an auto-associative neural network (autoencoder), see also: www.nlpca.org .
pc = nlpca(data,k) extracts k nonlinear components from the data set. pc represents the estimated component values (scores).
net is a data structure explaining the neural network parameters for the nonlinear transformation from data space to component space and reverse.
net can be used in
nlpca_get_components and nlpca_get_data to obtain component values (scores) for new data or reconstructed data for any component value.
In this example nonlinear PCA (circular PCA) is applied to artificial data of a noisy circle.
% generate circular data
t=linspace(-pi , +pi , 100); % angular value t=-pi,...,+pi
data = [sin(t);cos(t)]; % circle
data = data + 0.2*randn(size(data)); % add noise
% nonlinear PCA (circular PCA, inverse network architecture)
[c,net]=nlpca(data, 1, 'type','inverse', 'circular','yes' );
% plot components
nlpca_plot(net)
See also the demos of the toolbox below.
The NLPCA toolbox is distributed under the
GNU General Public License.
NLPCA can be downloaded as single package or individual files:
| NLPCA-0.88.zip | NLPCA package (all files), version 0.88 |
| | |
| package contains: | |
| | |
| nlpca.m | main program - component extraction |
| nlpca_get_data.m | to reconstruct data from new component values |
| nlpca_get_components.m | to estimate component values from new data |
| nlpca_plot.m | to plot the components |
| | |
| demo_hierarchical_NLPCA_StarData.m | demo of hierarchical nonlinear PCA |
| demo_circular_PCA.m | demo of circular units (Circular PCA) |
| demo_inverse_NLPCA.m | demo of inverse network architecture |
| demo_missing_data.m | demo of missing data estimation |
| Validation: |
Validation of nonlinear PCA Matthias Scholz Neural Processing Letters, 2012 [ pdf (pre-print) | pdf (Neural Process Lett) | poster RECOMB 2012 | Matlab code] |
| review (book chapter): |
Nonlinear principal component analysis: neural network models and applications. Matthias Scholz, Martin Fraunholz, and Joachim Selbig. In Principal Manifolds for Data Visualization and Dimension Reduction, edited by Alexander N. Gorban, Balázs Kégl, Donald C. Wunsch, and Andrei Zinovyev. Volume 58 of LNCSE, pages 44-67. Springer Berlin Heidelberg, 2007. [ pdf (all book chapters) | pdf (Springer) | entire book (Springer)] |
| Circular PCA: |
Analysing periodic phenomena by circular PCA. Matthias Scholz. In S. Hochreiter and R. Wagner, editors, Proceedings of the Conference on Bioinformatics Research and Development BIRD'07, LNCS/LNBI Vol. 4414, pages 38-47. Springer-Verlag Berlin Heidelberg, 2007. [ pdf (final version at Springer) | pdf (author's pre-version)] |
| Inverse model, missing data: |
Non-linear PCA: a missing data approach. Matthias Scholz, Fatma Kaplan, Charles L. Guy, Joachim Kopka, and Joachim Selbig. Bioinformatics 21(20):3887-3895. 2005. [ pdf (final version) | pdf (pre-version in colour) ] |
| Hierarchical NLPCA: |
Nonlinear PCA: a new hierarchical approach. Matthias Scholz and Ricardo Vigário. In M. Verleysen, editor, Proceedings ESANN. 2002. [ pdf (pre-print version) | pdf (ESANN) ] |
| www.nlpca.org |