Als: Difference between revisions
imported>Neal |
imported>Neal |
||
Line 69: | Line 69: | ||
===Examples=== | ===Examples=== | ||
To decompose a matrix x without non-negativity constraints use: | To decompose a matrix (x) without non-negativity constraints use: | ||
:options = als('options'); | :options = als('options'); |
Revision as of 10:41, 25 September 2008
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) (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 = K then, (c0) is assumed to be the initial guess for C.
An optional input (options) is described below.
The outputs are the estimated matrices C, (c), (M by K) and S, (s), (K by N). For a typical decomposition, (c) is a matrix of contributions 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. To include other constraints, use the (options) input 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
- display: [ 'off' | {'on'} ] governs level of display to command window.
- plots: [ 'none' | {'final'} ] governs level of plotting.
- ccon: [ 'none' | 'reset' | {'fastnnls'} ] non-negativity on contributions. (fastnnls = true least-squares solution)
- scon: [ 'none' | 'reset' | {'fastnnls'} ] non-negativity on spectra. (fastnnls = true least-squares solution)
- cc: [ ] contributions equality constraints, must be a matrix with M rows and up to K columns with NaN where equality constraints are not applied and real value of the constraint where they are applied. If fewer than K columns are supplied, the missing columns will be filled in as unconstrained,
- ccwts: [inf] a scalar value or a 1xK vector with elements corresponding to weightings on constraints (0, no constraint, 0<wt<inf imposes constraint "softly", and inf is hard constrained). If a scalar value is passed for (ccwts), that value is applied for all K factors. For additional information see P.J. Gemperline and E. Cash, “Advantages of Soft versus Hard Constraints in Self–Modeling Curve Resolution Problems. Alternating Least Squares with Penalty Functions”, Anal. Chem., 75(16), 4236–4243 (2003).
- sc: [ ] spectra equality constraints, must be a matrix with N columns and up to K rows with NaN where equality contraints are not applied and real value of the constraint where they are applied. If fewer than K rows are supplied, the missing rows will be filled in as unconstrained.
- scwts: [inf] weighting for spectral equality constraints (see ccwts) above.
- sclc: [ ] contributions scale axis, vector with M elements otherwise 1:M is used.
- scls: [ ] spectra scale axis, vector with N elements otherwise 1:N is used.
- condition: [{'none'}| 'norm' ] type of conditioning to perform on S and C before each regression step. 'norm' uses conditioning which can help stabilize the regression when factors are significantly different in magnitude.
- tolc: [ {1e-5} ] tolerance on non-negativity for contributions.
- 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 1/2 of total signal in X
- [c,s] = als(x,c0,options);