Some Examples of "Non-negative Matrix Factorization" and
"Spectrum Decomposition":


Toy raw data curves:

EGnmfP01RawColorToySpecP1D1.ps
   simple example, substance A  --->  substance B (only)

EGnmfP01RawColorToySpecP2D31.ps
   much righer, several components, "more like real data"???


Principal Component Views:

   simple example not shown, since data lie in 1-d subspace

EGnmfP02PCAToySpecP2D31DP2d.ps
   richer example, data lie in higher d subspace


First attempt at Non-negative Matrix Factorization (using
approach suggested in papers).  Problem was answers too
heavily dirven by starting values, as in: 

EGnmfP11nc3RepToySpecP2D21.ps


Second attempt at Non-negative Matrix Factorization.   This
was based on SVD (like PCA, but don't subtract the mean) to
find initial directions.  Except for SV1, these have
negative component, so they were "rotated back to non-
negative vectors".  Then a set of these were used to form a
basis of this space, by "maximal distance from mean".  This 
gave good decomposition, but residuals are not non-negative 
(so don't see how to do further decomposition):

EGnmfP61NMF1nc2ColorToySpecP1D1.ps
EGnmfP61NMF1nc2ColorToySpecP2D31.ps


Attempt at iterative search, one direction at a time (chosen
by SVD), with both projections and residuals non-negative.
This is done by first projecting on direction vector, then
shrinking towards origin, until residual is non-negative.
Problem is ended up with "separate pieces".  Apparently
caused by residuals from these directions naturally having
"two regimes".  These are not very interpretable, since 
believe in "continuous time", not "piecewise time".  Conclude
that need a more clever choice of directions:

nsvdSMbuildP5R12sumToySpecP1D1.ps
nsvdSMbuildP5R12sumToySpecP2D31.ps


"Spectrum Decomposition", this combines ideas above, using
"pair of directions at a time approach", starting with 2nd
NMF, but using the shrinkage approach (one direction at a
time) to give non-negative residuals:

Two Component Spectrum Decomposition:

specdecSMbuildP51nc2nmf2ToySpecP1D1.ps
    Excellent performance for this simple example, note
final residual "looks bad", but note axes, this is "very
small".

specdecSMbuildP51nc2nmf2ToySpecP2D31.ps
    Again excellent performance, except first curve is not
fully captured in first component, what is left becomes
large residual at the end.

Four Component Spectrum Decomposition:

(doesn't make sense for simpler example)

specdecSMbuildP52nc4nmf2ToySpecP2D31.ps
   First 2 components again excellent.  First curve is now
not so low, so relative size of this residual is less.  3rd
and 4th components seem to be "capturing additional
spectral structure in data", but again this is split into
two pieces, perhaps needed to preserve non-negativity after 
removing first two components.  Maybe need to consider
simultaneous 4 component optimization.



Real data flop:
CS5P02SpecDecZoom1NC2CnNu.ps
    Seems to have "two regmies plus noise"?

May try:
 - Zooming into a particular range
 - removing a large part of the "common signal"
