I was trying to understand why the nonnegative least squares (NNLS) algorithm of Lawson & Hanson converges to a solution of $$ \min f_{0}(x) = \| Cx - d \|^{2}, \\ \text{s.t.} \ x \geq 0. $$ Pseudocode can be found here: https://en.wikipedia.org/wiki/Non-negative_least_squares or in the references below.
Useful references to me were:
- Lawson & Hanson, "Solving Least Squares Problems"
- Palomo & Guerrero-Garcia, "Solving a sequence of sparse least squares problems"
- Bro & De Jong, "A fast non-negativity-constrained least squares algorithm" (http://xrm.phys.northwestern.edu/research/pdf_papers/1997/bro_chemometrics_1997.pdf)
All the references above just mention that the algorithm converges because after every iteration the residual norm strictly decreases and therefore we have a different partition of the indices of $x$ into sets $P$ and $R$ everytime, giving only a finite number of possibilities. But I'm having difficulty in proving that the residual norm decreases in each step.
All I see so far are the following:
- At the end of each iteration $x$ is nonnegative
- $x$ restricted to the indices in the set $P$ is an ordinary least squares solution for the problem $\min \| C^{(P)}z^{(P)} - d \|^{2}$
- A lemma proofed in the book of Lawson & Hanson states that the variable index $j$ that enters $P$ at the beginning of each outer iteration will yield $s_{j} > 0$, where $s$ is the ordinary least squares solution to $\min \| [C^{(P)}, C_{*,j}] z - d \|^{2}$
I think the case where the inner loop is not executed is manageable to proof by using the uniqueness of least squares estimator for full column rank matrices:
Assume $x^{(i)}$ is the solution vector after iteration $i$ with sets $P = P^{(i)}$, $R = R^{(i)}$ and index $j \in R$ will be added to $P$ at beginning of iteration $i+1$. Let $s$ the OLS solution of $\min \| [C^{(P)}, C_{*,j}] z - d \|^{2}$. If we had $f_{0}(x^{(i)}) < f_{0}(s)$, then $\tilde{s} = \left( x^{(i)}, 0 \right)^{T} $ would yield $f_{0}(\tilde{s}) = f_{0}(x^{(i)}) < f_{0}(s)$ which contradicts minimality of $s$. Remains the case where $f_{0}(x^{(i)}) = f_{0}(s)$. Because of uniqueness of OLS minimizer we would get $s = x^{(i)}$ which is not possible since $s_{j} > 0 = x^{(i)}_{j}$ (j was in set $R^{(i)}$, meaning that $x$ at this position is 0) which leaves only $f_{0}(s) < f_{0}(x^{(i)})$ and $x^{(i+1)} = s$ which proves the claim.
But for the case where the inner loop is executed (possibly multiple times) I don't see how the proof could go.