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) (M by N), and an initial guess parameter (c0). If (c0) is a matrix of 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. The parameter (c0) can also be a scalar or a cell array. If it is a scalar then it represents the number of factors and will use the algorithm identified by the initialguessmethod option to choose the given number of items. If (c0) is a two-element cell array {k mode} then k is the number of factors and mode indicates which mode of the data (1=rows, 2=columns) to select.
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 and Plotting
- display: [ 'off' | {'on'} ] governs level of display to command window.
- plots: [ 'none' | {'final'} ] governs level of plotting.
Non-Negativity Constraints
- ccon: [ 'none' | 'reset' | {'fastnnls'} ] non-negativity on contributions. (fastnnls = true least-squares solution)
- cconind: [ ] For use with ccon='fastnnls' only; optionally indicates which factors or elements should be nonegatively controlled. Can be either a vector indicating which factors should be required to give non-negative concentration results or a logical matrix (same size as c) which indicates which elements should be non-negative. Default (empty) indicates that all elements and factors should be non-negative.
- scon: [ 'none' | 'reset' | {'fastnnls'} ] non-negativity on spectra. (fastnnls = true least-squares solution)
- sconind: [ ] Same as cconind above except an indication of which factors or elements of s should be non-negatively controlled. If a logical matrix, must be the same size as s. Used only if scon='fastnnls'.
Equality Constraints
- 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.
- NOTE: Soft constraints are imposed by augmenting an additional column onto X and a weight of 1 weights a given equality constraint so that it has an equal influence as the average single variable in X. 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.
- contrast: [ 'c' | 's' | 'a'| { ' ' } ] introduces a constraint to obtain contrast in spectra of contributions/images. This constraint biases the answer towards maximal contrast in spectra ('s') or concentrations ('c') within the feasible bounds of the data. When the assumption of pure variables is appropriate, as with MS data, high contrast in spectra is expected and ('s') should be chosen. When samples have distinct layers, such as with a polymer laminate, high contrast in the contributions is expected and ('c') should be chosen. The option ('a') (automatic) depends on the initial estimate c0, which is given by the user or by the use of initmode in the function MCR. This option results in:
- ('c') when (c0) is size (K by N) and MCR initmode==1
- ('s') when (c0) is size (M by K) and MCR initmode==2
- An empty string imposes no constraint.
- contrastweight: [ {0.05} ]weighting used for contrast constraint. The algorithm makes angles between vectors (spectra or contributions) smaller by adding a portion (contrastweight) to the vectors. For example, for one of the vectora (v1) it would calculate:
- (1-contrastweight)*v1 + contrastweight*mean(v)
Closure Constraints
- closure: [ ] indicates which factors should be constrained to sum to unit concentration (closure is a constraint where the sum of the columns of C must = 1). This option can be a scalar "true" value to indicate that all components should be constrained by closure, or a logical row vector indicating with a "1" for each component that should be constrained.
- e.g. [ 0 1 1 0 0 ] = constrain components 2 and 3 of a five factor model with closure.
- Additional rows can be added to constrain different sets of components.
- e.g. [ 0 1 1 0 0 ; 0 0 0 1 1 ] = constrain components 2 and 3 with closure and also components 4 and 5 (separately).
- Note that no checking is done to verify that these sets are not in conflict.
- closurewts: [ inf ] weighting for closure option. "inf" indicates hard closure constraint. Value of 1 gives closure constraint equal weight as one variable.
Convergence and Conditions
- 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.
Automatic Initial Guess
- initialguessmethod: [ 'distslct' | {'exteriorpts'} ] method used to find initial guess for C or S:
- distslct - Selects samples on outside of data space based on Euclidian distance,
- exteriorpts - Selects samples on outside of data space based after normalizing the samples.
- initialguessminnorm: [ 0.03 ] value passed to exteriorpts option 'minnorm'.
Other
- 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.
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);
See Also
MCR and contrast
- When resolving mixture data into pure component spectra and their contributions a range of solutions is possible. In order to narrow down or eliminate this range constraints are used in MCR, of which the requirement of positivity is the most obvious and widely used constraint. The solution is also be influenced by the starting estimate of MCR. For example, when samples of the required pure components are likely to be present in the data set one would initialize the MCR process with the ‘purest’ spectra available in the data set with the MCR option initmode set to 1, the default. In this way one obtains resolved spectra with a maximum contrast. Conversely, when pure variables (variables with contributions from only one of the components in the mixtures) are expected to be available in the data set, for example in mass spectrometry, the option initmode should be changed to 2, leading to maximum contrast in the spectra. The problem is that even with the proper initialization the solution often does not show maximum contrast (in spectra or contributions) when only the positivity constraint is used. Newly added ALS options can be used as a contrast constraint. In short, when maximum contrast in spectra need to be achieved, the angle between their vectors is maximal. So by manipulating angles contrast can be achieved.
- The new constraint will be discussed with energy dispersive X-ray spectrometry (EDS) of a sample described in Figure 1. For complete details about the new constraint and the data analysis example shown below (1).
File:C:\data\image\Picture1.jpg
Figure 1. (a) An SEM image of the wires sample consisting of metal wires embedded in an epoxy matrix, together with the composition key. (b) The mean EDS spectrum computed from the data set. A 1024-channel spectrum was acquired each pixel in the 128-pixel x 128-pixel image (c) A single-pixel spectrum from the Cu/Mn/Ni wire.
- In order to reduce to the noise and speed up calculations the data set was reduced image was calculated by averaging 3×3 block of pixels. The goal of MCR analysis is to discriminate the six alloys, which should lead to six resolved components with each a row of replicate samples. In other words, we want images (contributions with maximum contrast). Analysis of this sample with MCR with its default settings results in 8 components: in addition to the six components there are two background components, see Figure 2 under MCR.
Figure 2. The resolved images and spectra of regular MCR and of MCR with contribution contrast. The results are ordered to show the subsequent alloys.
- Although 5 of the 6 images of the MCR results show single alloys, the first image is more complex. The highest contribution in the first image is Cu, the other two sets of replicates of alloys also contain a high amount of Cu: 83% an70%. Although this obviously reflects the proper relation between the samples it does not show the relation we want: single alloys. In order obtain maximum contrast MCR is called again with the he following option change.
- >> options=mcr('options');
- >> options.alsoptions.contrast='a';
- MCR will achieve contrast in the current initmode, which is 1. As the results under image contrast show, this achieves the goal of separating the alloys. For more examples, including enhancing contrast in the resolved spectra, see (1).
- 1 M.R. Keenan, “Multivariate Analysis of Spectral Images Composed of Count Data” in Techniques and applications of hyperspectral image analysis, H.F. Grahn and P. Geladi, Eds (Wiley, Chichester, UK, 2007) , pp. 89-126.