Home

NNLS

NNLS stands for nonnegative least squares, a form of constrained least squares optimization. The problem seeks a vector x in R^n that minimizes the squared Euclidean norm ||Ax - b||_2^2 subject to x >= 0, where A is an m-by-n matrix and b is in R^m. The objective is the standard L2 error, but the nonnegativity constraint yields a solution with nonnegative components, which is often desirable in interpretable modeling such as abundances or concentrations.

The problem was formalized with notable algorithms by Lawson and Hanson in 1974, introducing an active-set

Applications of NNLS span several fields. In spectroscopic analysis and chemometrics, it is used to estimate

Software implementations are widely available. In MATLAB, lsqnonneg implements NNLS; in Python, scipy.optimize.nnls provides a standard

method
for
efficiently
handling
the
nonnegativity
constraints.
Since
then,
numerous
methods
have
been
developed,
including
projected
gradient
approaches,
fast
NNLS
variants,
block-pivoting
algorithms,
and
primal-dual
interior-point
techniques.
The
optimization
problem
is
convex,
and
if
A
has
full
column
rank,
the
solution
is
unique;
otherwise,
multiple
optimal
solutions
may
exist
on
a
face
of
the
nonnegative
orthant.
constituent
concentrations.
In
image
and
signal
processing,
NNLS
appears
in
deconvolution
and
reconstruction
tasks.
It
also
serves
as
a
nonnegative
regression
tool
in
statistics
and
is
a
common
subproblem
within
nonnegative
matrix
factorization
and
related
decompositions.
routine.
Large-scale
variants
and
customization
for
sparsity
or
additional
constraints
are
present
in
various
scientific
computing
libraries.