PLS_Toolbox Documentation: als< alignmat analysis >

als

Purpose

Alternating Least Squares computational engine for multivariate curve resolution (MCR).

Synopsis

 

[c,s] = als(x,c0,options);

Description

ALS decomposes a matrix X as CS such that X = CS + E where E is minimized in a least squares sense.

Inputs are the matrix to be decomposed x (size m by n), and the initial guess c0. If c0 is size m by k, where k is the number of factors, then it is assumed to be the initial guess for C. If c0 is size k by n then it is assumed to be the initial guess for S (If m=n then, c0 is assumed to be the initial guess for C).

An optional input options is described below.

The outputs are the estimated matrix c (m by k) and s (k by n). Usually c is a matrix of concentrations and s is a matrix of spectra. The function

 

[c,s] = als(x,c0)

will decompose x using an non-negatively constrained alternating least squares calculation. To include other constraints, use the options described below.

Note that if no non-zero equality constraints are imposed on a factor the spectra are normalized to unit length. This can lead to significant scaling differences between factors that have non-zero equality constraints and those that do not.


Options

          name:  'options', name indicating that this is an options structure,

               display:   [ 'off' | {'on'} ]   governs level of display to command window,

          plots:   [ 'none' | {'final'} ]  governs level of plotting,

                     ccon:   [ 'none' | 'reset' | {'fastnnls'} ] non-negativity on concentrations,                (fastnnls = true least-squares solution)

                     scon:   [ 'none' | 'reset' | {'fastnnls'} ] non-negativity on spectra,                           (fastnnls = true least-squares solution)

                         cc:   [ ] concentration equality constraints, MxK matrix with NaN where equality constraints are not applied and real value of the constraint where they are applied,

                   ccwts:   [inf] weighting for equality constraints. Use inf for hard equality constraints and values < inf for soft equality constraints. Soft constraints weightings are given a fraction of the total sum-squared signal in X. If a scalar value is supplied, this value is used as the weighting for all factors. Otherwise, a vector K elements in length specifies the specific weighting to be use on each factor and may be a mix of hard (inf) and soft (<inf) constraints.

                         sc:   [ ] spectral equality constraints, KxN matrix with NaN where equality constraints are not applied and real value of the constraint where they are applied,

                   scwts:   [inf] weighting for spectral equality constraints (see ccwts)

                     sclc:   [ ]  concentration scale axis, vector with M elements otherwise 1:M is used,

                     scls:   [ ]  spectra scale axis, vector with N elements otherwise 1:N is used,

                     tolc:   [ {1e-5} ]  tolerance on non-negativity for concentrations,

                     tols:   [ {1e-5} ]  tolerance on non-negativity for spectra,

                   ittol:   [ {1e-8} ]  convergence tolerance,

                   itmax:   [ {100} ]   maximum number of iterations,

               timemax:   [ {3600} ]  maximum time for iterations,

             rankfail:   [ 'drop' |{'reset'}| 'random' | 'fail' ]  how are rank deficiencies handled:

                                 drop   - drop deficient components from model

                                 reset  - reset deficient components to initial guess

                                 random - replace deficient components with random vector

                                 fail   - stop analysis, give error


Examples

To decompose a matrix x without non-negativity constraints use:

 

options = als('options');

options.ccon = 'none';

options.scon = 'none';

[c,s] = als(x,c0,options);

The following shows an example of using soft-constraints on the second spectral component of a three-component solution assuming that the variable softs contains the spectrum to which component two should be constrained.

 

[m,n] = size(x);

options = als('options');

options.sc = NaN*ones(3,n);  %all 3 unconstrained

options.sc(2,:) = softs;     %constrain component 2

options.scwts = 0.5;         %consider as ½ of total signal in X

[c,s] = als(x,c0,options);

See Also

mcr, parafac, pca


< alignmat analysis >