pca

PURPOSE ^

principal components analysis (alternative to princomp).

SYNOPSIS ^

function [ U, mu, variances ] = pca( X )

DESCRIPTION ^

 principal components analysis (alternative to princomp).

 A simple dimensionality reduction technique.  Use this function to create an orthonormal
 basis for the space R^N.  This basis has the property that the coordinates of a vector x
 in R^N are of decreasing importance.  Hence instead of using all N coordinates to
 specify the location of x, using only the first k<N still gives a vector xhat that is
 very close to x with high probability.  

 Use this function to retrieve the basis U.  Use pca_apply.m to retrieve that basis
 coefficients for a novel vector x.  Also, use pca_visualize(X,...) for visualization of
 the approximated X. 

 This function operates on arrays of arbitrary dimension, by first converting the array
 to a vector.  That is if X is n dimensional, say of dims d1 x d2 x...x dn-1 x dn.  Then
 the first n-1 dimensions of X are comined. That is X is flattened to be 2 dimensional:
 (d1 * d2 * ...* dn-1) x dn.  

 Once X is converted to 2 dimensions of size Nxn, each column represents a single 
 observation, and each row is a different variable.  Note that this is the opposite of
 many matlab functions such as princomp.  So if X is MxNxK, then X(:,:,i) representes the
 ith observation.  This is useful if X is a stack of images (each image will
 automatically get vectorized).  Likewise if X is MxNxKxR, then X(:,:,:,i) becomes the
 ith observation, which is useful if X is a collection of videos each of size MxNxK.

 If X is very large, it is samlped before running PCA, using randomsample.

 To calculate residuals: 
   residuals = variances / sum(variances); 
   residuals = cumsum(residuals); plot( residuals, '- .' )

 INPUTS
   X           - n-dim array of size (d1 x d2 x...x dn-1) x dn (treated as dn elements)

 OUTPUTS
   U           - 2D array of size (d1 * d2 * ...* dn-1) x r, where each column represents 
               - a principal component of X (after X is flattened).
   mu          - Array of size d1 x d2 x...x dn-1 which represents the mean of X.
   variances   - sorted eigenvalues corresponding to eigenvectors in U 

 EXAMPLE
   load pca_data;  
   [ U, mu, variances ] = pca( I3D1(:,:,1:12) );
   [ Y, Xhat, pe ] = pca_apply( I3D1(:,:,1), U, mu, variances, 5 );
   figure(1); im(I3D1(:,:,1));  figure(2); im(Xhat);
   pca_visualize( U, mu, variances, I3D1, 13, [0:12], [], 3 );

 DATESTAMP
   29-Nov-2005  2:00pm

 See also PRINCOMP, PCA_APPLY, PCA_VISUALIZE, VISUALIZE_DATA, RANDOMSAMPLE

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:
Generated on Wed 03-May-2006 23:48:50 by m2html © 2003