Exact Nonnegative Matrix Factorization via Cone-Ray Witnesses: Obtuseness Ranking, Saturation Curves, and an Augmented Alt-LP Breakthrough2


Abstract

We study exact nonnegative matrix factorization (NMF) of small exact-rank-\(r\) matrices through a cone-ray pipeline that combines the truncated singular value decomposition (SVD), the polyhedral cone of nonnegative preimages, the Double Description Method (DDM, realised via Fukuda’s cddlib), and an alternating linear program (alt-LP) for slack minimisation. Each column of the change-of-basis matrices \(Q, P\) is parameterised as a nonnegative combination of \(r\) cone rays. Under the uniform-support restriction the joint factorisation constraint \(Q P^{\!\top} = I_r\) reduces to the entrywise nonnegativity of an \(r \times r\) witness matrix \(M_T = R_T^{-1} (R_K^{\!\top})^{-1}\) for an \(r\)-subset pair \((T, K)\) of cone-ray indices. This closed-form witness recovers an exact NMF in microseconds whenever it is feasible.

We characterise when it is feasible. We rank candidate \(r\)-subsets by their geometric near-orthogonality (obtuseness, \(|\!\det(R_T)|/\prod_i \|R_{T_i}\|\)) and walk the top of each list. A \(100\)-trial Monte Carlo at \(m = n = 10\) sweeps the candidate budget through \(\mathrm{maxTries} \in \{5, 200, 400\}\) and exposes a clean saturation curve: the heuristic recovers \(44/32/8\) of \(100\) at the top-\(5\) tightening, \(79/85/58\) at top-\(200\), and only \(79/87/59\) at top-\(400\) for \(r = 4, 5, 6\). Beyond top-\(200\) the residual failures are not search-budget-limited but structural: the cones simply do not contain a near-orthogonal \(r\)-subset on at least one side. Increasing \(m, n\) at fixed \(r\) hurts rather than helps — a parallel \(100\)-trial sweep at \(m = n = 15\) collapses to \(37/7/0/0/0\) out of \(100\) at \(r = 4, \dots, 8\), and doubling the budget there to top-\(400\) recovers zero additional successes. On Olivetti faces (\(400 \times 4096\)) the DDM step itself becomes intractable: even at \(r = 8\) the \(n = 4096\) side times out at a one-hour cddlib budget.

Our principal new contribution is a hybrid that breaks through this ceiling. At each pair \((T, K)\) visited by the obtuseness walk we first attempt the closed-form \(M_T\). When \(M_T\) is infeasible we augment both supports by \(k = 2\) additional rays maximally angularly-separated from the existing ones, producing \(r \times (r + k)\) supports, and solve for \(\mu, \nu \in \mathbb{R}_{\ge 0}^{(r+k) \times r}\) with \(R_T \mu \nu^{\!\top} R_K^{\!\top} = I_r\) via a short slack-LP alternation on the restricted bases. On the same \(m = n = 10\) Monte Carlo this hybrid pushes success from \(79/85/58\) to \(\mathbf{99/95/75}\) of \(100\) at \(r = 4, 5, 6\) — gains of \(+20\), \(+10\), \(+17\) over the Mt-only top-\(200\) baseline. Cone reconstruction error stays at or near machine precision whenever the heuristic succeeds. We close with the four scaling walls the cone-ray pipeline faces (DDM ray-count blow-up, uniform-support restriction, numerical conditioning, and slack-LP plateau on the fully-non-uniform variant) and concrete next-step suggestions.

nonnegative matrix factorization, polyhedral cones, double description method, obtuseness, alternating linear programming, exact factorization

15A23, 15A48, 90C05, 90C26, 52B55

1 Introduction↩︎

Nonnegative matrix factorisation seeks \(W \in \mathbb{R}^{m \times r}_{\ge 0}\) and \(H \in \mathbb{R}^{n \times r}_{\ge 0}\) such that \(A \approx W H^{\!\top}\) for a given \(A \in \mathbb{R}^{m \times n}_{\ge 0}\) of nonnegative rank at most \(r\). Two distinct problems hide inside this template. The approximate problem, used in topic modelling, image decomposition and recommendation systems, is typically attacked by multiplicative updates [1], hierarchical alternating least squares [2], or block coordinate descent [3], and is NP-hard in the worst case [4]. The exact problem assumes the data \(A\) admits an \(r\)-factorisation with zero residual and asks for a certified \((W, H)\) recovering it; structural conditions such as separability [5][8] make this tractable. This paper is firmly on the exact side, but without imposing separability.

We develop a small, fully executable toolkit (svd.wl, svdGb.wl, svd_obtuse.wl) in Wolfram Language that combines four classical ingredients into one pipeline:

  1. a truncated SVD \(A = U_r S_r V_r^{\!\top}\),

  2. the polyhedral cone \(\mathop{\mathrm{cone}}(A_{\mathrm{orth}})\) of nonnegative preimages and its dual extreme-ray representation via the Double Description Method [9], [10] and cddlib,

  3. a uniform-support parameterisation of \(Q, P\) on \(r\)-subsets \(T, K\) of cone-ray indices whose joint constraint reduces to the entrywise nonnegativity of an \(r \times r\) witness matrix \(M_T\) (Proposition [prop:Mt]), and

  4. when \(M_T\) is infeasible, an augmented \(r \times (r + k)\) slack-LP alternation that recovers a witness on enlarged supports.

The output is a certificate, not an estimate: when the toolkit succeeds it returns \((W, H)\) such that \(\|A - W H^{\!\top}\|_F / \|A\|_F\) is at machine precision.

1.0.0.1 Contributions.

The technical contributions of this paper are:

  1. Closed-form witness under uniform support. For exact-rank inputs, the joint nonnegativity constraint \(Q P^{\!\top} = I_r\) collapses to the entrywise condition \(M_T = R_T^{-1} (R_K^{\!\top})^{-1} \ge 0\) for an \(r\)-subset pair \((T, K)\). This is a microsecond test once \(R\) is known.

  2. Obtuseness-ranked support search and its saturation. Ranking \(r\)-subsets by their geometric near-orthogonality and walking the top of each list extends reach from \(r = 4\) (lex enumeration) to \(r = 4, 5, 6\) at \(m = n = 10\). We characterise the saturation curve in \(100\)-trial Monte Carlo at three budgets (top-\(5\), top-\(200\), top-\(400\)), and show the heuristic saturates at top-\(200\) and that the residual failures are structural rather than budget-limited.

  3. Scaling walls. We document where the pipeline breaks: at fixed \(r\) the success rate decreases as \(m, n\) grows (a \(100\)-trial sweep at \(m = n = 15\) collapses to \(37/7/0/0/0\) at \(r = 4, \dots, 8\)), and on Olivetti (\(400 \times 4096\)) cddlib itself does not finish in a one-hour budget on the \(n\)-side even at \(r = 8\).

  4. Augmented-support alt-LP fallback (new). At each pair where the closed-form \(M_T\) is infeasible we augment both supports by \(k = 2\) rays maximally angularly-separated from the existing ones and solve a short alt-LP on the resulting \(r \times (r + k)\) bases. This raises the same \(m = n = 10\) success counts from \(79/85/58\) to \(\mathbf{99/95/75}\) at \(r = 4, 5, 6\) — breaking the structural ceiling that top-\(400\) alone cannot.

The executable toolkit and JSON results of every Monte Carlo are released alongside the paper.

2 Preliminaries↩︎

2.0.0.1 SVD truncation.

For \(A \in \mathbb{R}^{m \times n}_{\ge 0}\) of nonnegative rank \(r\) we compute the thin SVD \(A = U S V^{\!\top}\) and form \[A_{\mathrm{orth}}= U_{:,1:r} \sqrt{S_{1:r, 1:r}}, \qquad A_{\mathrm{orth}1}= V_{:,1:r} \sqrt{S_{1:r, 1:r}}, \label{eq:Aorth}\tag{1}\] so that \(A = A_{\mathrm{orth}}A_{\mathrm{orth}1}^{\!\top}\) and any factorisation \(W = A_{\mathrm{orth}}Q\), \(H = A_{\mathrm{orth}1}P\) with \(Q P^{\!\top} = I_r\) reconstructs \(A\) exactly.

2.0.0.2 Cones and the double description method.

The set of \(x \in \mathbb{R}^r\) with \(A_{\mathrm{orth}}x \ge 0\) is a polyhedral cone \(\mathop{\mathrm{cone}}(A_{\mathrm{orth}}) \subset \mathbb{R}^r\). Its extreme rays form an \(r \times k_1\) matrix \(R_{\mathrm{orth}}\) obtainable from the \(m \times r\) matrix of facet normals by the Double Description Method (DDM) [9], [10]. Define \(R_{\mathrm{orth}1}\in \mathbb{R}^{r \times k_2}\) analogously for \(A_{\mathrm{orth}1}\). Any column of \(Q\) (resp. \(P\)) that yields nonnegative \(W\) (resp. \(H\)) must lie in \(\mathop{\mathrm{cone}}(R_{\mathrm{orth}})\) (resp. \(\mathop{\mathrm{cone}}(R_{\mathrm{orth}1})\)). We rely on cddlib [10] for the DDM and on Mathematica’s LinearProgramming, GroebnerBasis and Reduce [11], [12] for the LP and algebraic sub-problems.

2.0.0.3 Nonneg LPs and slack relaxation.

Throughout we use the standard slack-LP relaxation of a feasibility problem \(A x = b, \; x \ge 0\): introduce \(s_+, s_- \ge 0\) and minimise \(\mathbf{1}^{\!\top}(s_+ + s_-)\) subject to \(A x + s_+ - s_- = b\) and \(x, s_\pm \ge 0\). The optimum is zero iff the original system is feasible.

3 The Uniform-Support Witness↩︎

Pick an \(r\)-subset \(T \subset [k_1]\) of cone-ray indices on the \(A_{\mathrm{orth}}\)-side and an \(r\)-subset \(K \subset [k_2]\) on the \(A_{\mathrm{orth}1}\)-side, and restrict \(Q, P\) to be supported on \(T, K\): \(Q = R_T \mu\) and \(P = R_K \nu\) with \(\mu, \nu \in \mathbb{R}^{r \times r}_{\ge 0}\). The joint condition \(Q P^{\!\top} = I_r\) becomes \[R_T \, \mu \, \nu^{\!\top} R_K^{\!\top} = I_r. \label{eq:joint}\tag{2}\]

Assume \(R_T, R_K\) are invertible. Setting \(\nu = I_r\) in 2 forces \(\mu = M_T\) with \[M_T \;:=\; R_T^{-1} \, (R_K^{\!\top})^{-1}. \label{eq:Mt}\tag{3}\] The uniform-support pair \((T, K)\) is feasible iff \(M_T \ge 0\) componentwise.

Proof. With \(\nu = I_r\), equation 2 simplifies to \(R_T \mu R_K^{\!\top} = I_r\), hence \(\mu = R_T^{-1} (R_K^{\!\top})^{-1}\). Nonnegativity of \(\mu, \nu\) then reduces to \(M_T \ge 0\). ◻

Proposition [prop:Mt] is the engine of the toolkit. Given \(R_{\mathrm{orth}}, R_{\mathrm{orth}1}\) from the DDM step and a candidate index pair \((T, K)\), it takes one \(r \times r\) matrix inverse and one nonnegativity check to decide feasibility; if feasible the factorisation \((W, H) = (A_{\mathrm{orth}}R_T M_T, \; A_{\mathrm{orth}1}R_K)\) reconstructs \(A\) at machine precision (Section 5).

Remark 1 (Scope of uniform support). Equation 3 requires the same \(r\) rays to drive every column of \(Q\) (and likewise for \(P\)). For random rank-\(r\) inputs the uniform-support assumption is restrictive — it forces all \(r\) atoms in \(W\) to live in a single \(r\)-face of \(\mathop{\mathrm{cone}}(A_{\mathrm{orth}})\) — but it makes the search combinatorial in \(\binom{k_1}{r} \binom{k_2}{r}\) and the per-candidate test free. We lift it in Section 7 via a \(r \times (r + k)\) augmented* support and an alt-LP for \(\mu, \nu\).*

4 Obtuseness-Ranked Support Search↩︎

Because the candidate space \(\binom{k_1}{r} \times \binom{k_2}{r}\) quickly outgrows any enumeration budget, we must rank candidates. The geometric intuition behind Proposition [prop:Mt] is that \(M_T \ge 0\) is more likely for fat (near-orthogonal) sub-cones of \(R_{\mathrm{orth}}, R_{\mathrm{orth}1}\). We capture this with the obtuseness score: \[\mathrm{obtuseness}(T) \;:=\; \frac{|\det(R_T)|}{\prod_{i \in T} \|R_T[:, i]\|} \;\in\; [0, 1], \label{eq:obtuseness}\tag{4}\] which is \(1\) iff \(T\) is orthonormal and \(0\) iff \(T\) is rank-deficient.

Figure 1: Obtuseness-ranked uniform-support search(svd_obtuse.wl).

The default \(\mathrm{maxTries} = 200\) admits at most \(40{,}000\) candidate pairs per instance; we will sweep this budget below.

5 Monte Carlo Characterisation at \(m = n = 10\)↩︎

To turn the qualitative “the heuristic works at small \(r\)” into distributional evidence, we run a \(100\)-trial Monte Carlo at \(m = n = 10\), \(r \in \{4, 5, 6\}\). Each trial draws \(W, H \sim \mathrm{U}[0, 1]^{10 \times r}\) and sets \(A = W H^{\!\top}\) (exact rank-\(r\), nonnegative). Per-trial seeds \(1000 r + \mathrm{trial}\) ensure reproducibility.

5.1 Baseline at \(\mathrm{maxTries} = 200\)↩︎

Table 1 reports the Monte Carlo result with the default budget. Two baselines (multiplicative updates [1] and HALS [2], both \(500\) iterations) are run on the same per-trial seeds for comparison.

Table 1: \(100\)-trial Monte Carlo at \(m = n = 10\),\(\mathrm{maxTries} = 200\). Column 2 reports the median conereconstruction \(\|A - \widetilde W \widetilde H^{\!\top}\|_F /\|A\|_F\) over the successful trials together with the successcount out of \(100\). Min/max ranges over successes:\([2.65 \times 10^{-16}, 9.71 \times 10^{-15}]\) at \(r = 4\),\([1.78 \times 10^{-16}, 1.09 \times 10^{-14}]\) at \(r = 5\), and\([3.34 \times 10^{-16}, 1.04 \times 10^{-14}]\) at \(r = 6\) —always machine precision when the heuristic succeeds. Successcounts \(79, 85, 58\) peak at \(r = 5\) rather than monotonicallydecreasing in \(r\): at moderate \(r\) the cones are larger and theranking has more material to score, while at \(r = 6\) thenear-orthogonality budget tightens. The last column gives themedian best obtuseness over the no-feasible trials and shows thatfailed trials are exactly those with no near-orthogonal\(r\)-subset on either side.
\(r\) cone (obtuseness) MU median HALS median best obt.\(T / K\)
\(4\) \(\mathbf{4.95 \times 10^{-16}}\) (\(79/100\)) \(1.56 \times 10^{-5}\) \(2.67 \times 10^{-13}\) \(0.74 / 0.71\)
\(5\) \(\mathbf{6.58 \times 10^{-16}}\) (\(85/100\)) \(4.68 \times 10^{-5}\) \(3.44 \times 10^{-13}\) \(0.54 / 0.58\)
\(6\) \(\mathbf{1.15 \times 10^{-15}}\) (\(58/100\)) \(1.23 \times 10^{-4}\) \(1.42 \times 10^{-12}\) \(0.33 / 0.34\)

5.2 Saturation curve: top-\(5\), top-\(200\), top-\(400\)↩︎

Whether the obtuseness heuristic is search-budget limited or structurally limited is settled by sweeping \(\mathrm{maxTries}\). Table 2 reports the three-point sweep.

Table 2: Saturation of the obtuseness walk at \(m = n = 10\). Top-\(5\)restricts the walk to the \(5\) most-obtuse \(r\)-subsets on each side(\(\le 25\) pairs per trial); top-\(200\) is the default; top-\(400\)doubles the budget. Cone rel.err.on successful trials ismachine precision at every budget (medians \(\le 1.2 \times 10^{-15}\)).At every \(r\), the heuristic is severely budget-starved below thetop-\(50\) but essentially saturates by the top-\(200\): doubling totop-\(400\) adds at most \(+2\) successes. The median attempt countamong successful trials at top-\(400\) roughly doubles (\(11 \to 11\)at \(r=4\); \(402 \to 802\) at \(r=5\); \(1{,}135 \to 2{,}401\) at \(r=6\)),confirming that the few extra wins genuinely lie beyond rank\(200\) on at least one side — not new searches recovering tophits the smaller budget missed.
\(r\) top-\(5\) (\(\le 25\) pairs) top-\(200\) (\(\le 40{,}000\) pairs) top-\(400\) (\(\le 160{,}000\) pairs)
\(4\) \(44/100\) \(\mathbf{79/100}\) \(79/100\)
\(5\) \(32/100\) \(85/100\) \(\mathbf{87/100}\)
\(6\) \(\,8/100\) \(58/100\) \(\mathbf{59/100}\)

5.2.0.1 Reading.

The saturation message is unambiguous: top-\(200\) is at the structural ceiling of what the closed-form \(M_T\) test can recover at this size. The remaining failures are not pairs hiding deep in the ranking but pairs whose cones intrinsically lack any near-orthogonal \(r\)-subset on at least one side (median best obtuseness in no-feasible trials drops monotonically from \(0.74\) at \(r=4\) to \(0.33\) at \(r=6\)). Pushing the budget further is not the right lever; lifting the uniform-support restriction is. We come back to this in Section 7.

6 Where the Pipeline Breaks↩︎

6.1 Larger \(m, n\) at fixed \(r\)↩︎

A natural conjecture is that \(m, n \gg r\) should help the cone toolkit: more rows in \(A\) give more facets of the cone and hence more rays from which to draw a near-orthogonal sub-basis. We test this with a parallel \(100\)-trial Monte Carlo at \(m = n = 15\), \(r \in \{4, \dots, 8\}\) (otherwise identical parameters to Table 1).

Table 3: \(m = n = 15\), \(100\) trials per \(r\), with the obtusenesswalk at \(\mathrm{maxTries} = 200\) and \(\mathrm{maxTries} = 400\).The success-rate curve is shifted left by one \(r\) compared to\(m = n = 10\) (Table [tbl:tab:saturation]): only \(r = 4, 5\) remainreachable, and even at \(r = 4\) the heuristic misses \(63\%\) ofinstances. Doubling the budget to top-\(400\) recovers zeroadditional successes at any \(r\). Geometric cause: the median bestobtuseness on no-feasible trials drops from \(0.85\) at \(r = 4\) to\(0.15\) at \(r = 8\). Enlarging \(m, n\) at fixed \(r\) does not help thetoolkit; it crowds the dual cone with narrower rays.
\(r\) cone (top-\(200\)) cone (top-\(400\)) MU median HALS median best obt.\(T / K\)
\(4\) \(\mathbf{4.79 \times 10^{-16}}\) (\(37/100\)) \(4.89 \times 10^{-16}\) (\(37/100\)) \(2.63 \times 10^{-5}\) \(2.29 \times 10^{-11}\) \(0.85 / 0.85\)
\(5\) \(\mathbf{1.25 \times 10^{-15}}\) (\(7/100\)) \(1.25 \times 10^{-15}\) (\(7/100\)) \(6.75 \times 10^{-5}\) \(3.82 \times 10^{-12}\) \(0.69 / 0.68\)
\(6\) no feasible (\(0/100\)) no feasible (\(0/100\)) \(1.15 \times 10^{-4}\) \(1.73 \times 10^{-12}\) \(0.46 / 0.46\)
\(7\) no feasible (\(0/100\)) no feasible (\(0/100\)) \(1.97 \times 10^{-4}\) \(2.09 \times 10^{-11}\) \(0.29 / 0.28\)
\(8\) no feasible (\(0/100\)) no feasible (\(0/100\)) \(2.57 \times 10^{-4}\) \(4.94 \times 10^{-11}\) \(0.15 / 0.15\)

6.2 Olivetti faces (\(400 \times 4096\)): DDM stops working↩︎

We tried the same pipeline on the canonical NMF benchmark, the Olivetti faces dataset (\(A \in \mathbb{R}^{400 \times 4096}_{\ge 0}\)) at \(r = 25\) and \(r = 8\). The toolkit never reaches the obtuseness step — the prerequisite DDM on the \(n = 4096\) side exceeds budget even at the smallest \(r\) we tried:

  • At \(r = 25\), \(\mathrm{ddmBudget} = 600\,\mathrm{s}\): cdd on \(A_{\mathrm{orth}}\) (a \(400 \times 25\) inequality system) times out; cdd on \(A_{\mathrm{orth}1}\) (\(4096 \times 25\)) is even larger.

  • At \(r = 8\), \(\mathrm{ddmBudget} = 3{,}600\,\mathrm{s}\) (\(1\) hour) per cdd call: cdd on \(A_{\mathrm{orth}}\) (\(400 \times 8\)) finishes in \(\sim\!3\) minutes; cdd on \(A_{\mathrm{orth}1}\) (\(4096 \times 8\)) times out at \(3{,}600\,\mathrm{s}\) with \(\sim\)​32 MB resident memory and no sign of blowup but no completion either.

The bottleneck on Olivetti is the number of inequalities, not the rank: cdd handles \(400\) inequalities in \(8\)-dim space within \(\sim\)​200 s, while \(4096\) inequalities in the same \(8\)-dim space exhausts \(3{,}600\,\mathrm{s}\). Any successor pipeline that intends to handle the \(m, n \gg r\) regime must either (i) sub-sample the rows passed to DDM, (ii) replace exact extreme-ray enumeration by random sampling, or (iii) abandon the dual representation entirely.

7 Augmented Support and Alt-LP Fallback↩︎

The saturation evidence in Sections 5.2 and 6.1 shows that the obtuseness walk on closed-form \(M_T\) has a structural ceiling. The failing trials have no \(r\)-subset on either side whose \(M_T\) is componentwise nonneg. They are not unreachable by virtue of search budget; they are unreachable by virtue of the uniform-support restriction. We now lift that restriction in the smallest way that still admits a tractable search.

7.1 Augmenting the obtuse cone with \(k = 2\) farthest rays↩︎

For each candidate pair \((T, K)\) visited by the walk, we augment both supports by \(k = 2\) additional ray indices chosen for maximum angular separation from the existing rays of \(T\) (resp. \(K\)). Concretely, for an index \(i \notin T\) we score \[\mathrm{maxcos}(i; T) \;:=\; \max_{j \in T} \frac{|\langle R[:, i], R[:, j] \rangle|}{\|R[:, i]\| \, \|R[:, j]\|}, \label{eq:maxcos}\tag{5}\] and pick the two \(i \notin T\) with the smallest \(\mathrm{maxcos}\) (most isolated from \(T\)). The augmented index set \(T' = T \cup \{i_1, i_2\}\) has size \(r + 2\); we extract the corresponding \(r \times (r + 2)\) basis \(R_{T'} = R_{\mathrm{orth}}[:, T']\). Symmetrically for \(K'\) on the other side.

7.2 Alt-LP for \(\mu, \nu \in \mathbb{R}^{(r+k) \times r}_{\ge 0}\)↩︎

On the augmented bases the witness coefficients become \(\mu, \nu \in \mathbb{R}^{(r+k) \times r}_{\ge 0}\), and the joint factorisation constraint takes the bilinear form \[R_{T'} \, \mu \, \nu^{\!\top} R_{K'}^{\!\top} \;=\; I_r, \label{eq:joint-aug}\tag{6}\] with \(r^2\) scalar equations in \(2(r + k) r\) unknowns. We solve 6 by alternation: fix \(\nu\), solve the linear system for \(\mu\) via slack-LP (Section 2); fix \(\mu\), solve for \(\nu\) similarly. Each subsolve is an LP of size \(r^2\) equations in \((r + k) r\) variables plus \(2 r^2\) slack variables — e.g.\(16\) equations in \(24 + 32 = 56\) variables at \(r = 4, k = 2\). We initialise \(\mu^{(0)} = [\max(M_T, 0); \mathbf{0}]\), \(\nu^{(0)} = [I_r; \mathbf{0}]\) so iteration \(0\) is the original uniform-support solution; the alt-LP only deviates from it as needed.

7.3 Hybrid algorithm↩︎

The full hybrid embeds the alt-LP as a fallback inside the obtuseness walk, used only when the closed-form \(M_T\) is infeasible at the current pair. A per-trial cap \(\mathrm{maxAltLpAttempts} = 1{,}000\) bounds worst-case wall time on instances where many pairs need to be tried.

Figure 2: Hybrid obtuseness walk with augmented alt-LP fallback(svd_obtuse_m10_aug2_top200.wl).

7.4 Empirical result↩︎

We rerun the \(m = n = 10\), \(r \in \{4, 5, 6\}\), \(100\)-trial Monte Carlo with Algorithm 2 and compare against every prior variant in Table 4.

Table 4: Success counts (out of \(100\)) for the six pipelinevariants on the same \(m = n = 10\) Monte Carlo. “Mt” columnswalk the top-\(N\) obtuseness ranking with the closed-form \(M_T\)test. “aug2 + alt-LP (top-\(1\))” augments only the top-\(1\)obtuse \(r\)-subset on each side with \(k = 2\) farthest rays andruns alt-LP on the resulting \(r \times (r + 2)\) support (nowalk). The hybrid (Algorithm [alg:hybrid]) walkstop-\(200\) and falls back to augmented alt-LP whenever\(M_T\) is infeasible at a visited pair. Compared to the Mt-onlytop-\(200\) baseline the hybrid gains \(+20, +10, +17\) successes at\(r = 4, 5, 6\) — breaking the structural ceiling thattop-\(400\) alone cannot.
\(r\) top-\(5\) Mt top-\(200\) Mt top-\(400\) Mt aug2+altLP (top-\(1\)) hybrid
\(4\) \(44/100\) \(79/100\) \(79/100\) \(54/100\) \(\mathbf{99/100}\)
\(5\) \(32/100\) \(85/100\) \(87/100\) \(26/100\) \(\mathbf{95/100}\)
\(6\) \(\,8/100\) \(58/100\) \(59/100\) \(14/100\) \(\mathbf{75/100}\)

7.4.0.1 Breakdown.

Within the hybrid, the path that closed each successful trial splits as \(32\) Mt-path \(+ 67\) alt-LP-path at \(r = 4\); \(23 + 72\) at \(r = 5\); \(14 + 61\) at \(r = 6\). The Mt-path count is lower than the Mt-only top-\(200\) baseline (\(79, 85, 58\)) because alt-LP often succeeds at an earlier-ranked pair before the walk reaches the Mt-feasible one later in the order; the alt-LP “steals” wins from Mt. The total (\(99, 95, 75\)) is what matters.

7.4.0.2 Cost.

The hybrid is dominated by the alt-LP fallback at \(r = 6\), where the median number of alt-LP attempts per trial is \(238.5\) (max \(1{,}000\), the cap). Per-trial wall is \(\sim 1\,\mathrm{s}\) at \(r = 4\), \(\sim 41\,\mathrm{s}\) at \(r = 5\), and \(\sim 51\,\mathrm{s}\) at \(r = 6\). Total sweep time was \(\sim 2\,\mathrm{h}\,39\,\mathrm{m}\) on a \(2024\) Apple-silicon laptop. Cone reconstruction error stays at or near machine precision when the hybrid succeeds: medians \(1.3 \times 10^{-15}\), \(5.5 \times 10^{-15}\), \(1.9 \times 10^{-14}\) at \(r = 4, 5, 6\); minima \(\sim 3 \times 10^{-16}\) at every \(r\); maxima \(4 \times 10^{-13}\), \(1.6 \times 10^{-12}\), \(1.2 \times 10^{-11}\) (the alt-LP-path successes can settle right at the \(10^{-10}\) feasibility tolerance rather than to full machine precision).

7.4.0.3 Reading.

The augmented + alt-LP fallback is the first variant in our sequence of experiments that pushes any \(r\) above \(\sim 90\%\) success at this size. The geometric story is simple: a trial in which no \(r\)-subset is near-orthogonal can still have a \((r + 2)\)-subset that admits a feasible \(\mu, \nu\) once we let both sides slacken to \((r + 2)\) atoms per column-bundle. This makes the heuristic substantially more robust, at the cost of introducing an iterative inner LP solve.

7.5 The hybrid at \(m = n = 15\)↩︎

Does the same hybrid recover the failures of the Mt-only \(m = n = 15\) sweep (Table 3)? We ran Algorithm 2 unchanged at \(m = n = 15\) for \(r \in \{4, 5, 6\}\), with the same \(100\)-trial Monte Carlo and \(\mathrm{maxTries} = 200\), \(\mathrm{maxAltLpAttempts} = 1{,}000\) caps used at \(m = n = 10\). Results in Table 5.

Table 5: Hybrid scheme (Algorithm [alg:hybrid]) at \(m = n =15\). Compared to the Mt-only baseline of Table [tbl:tab:m15], theaugmented alt-LP fallback recovers \(+41\) and \(+21\) successes at\(r = 4\) and \(r = 5\) respectively, lifting the toolkit from\(37/7\) of \(100\) to \(78/28\). At \(r = 6\) the fallback recoversnothing: all \(100\) trials spend the full \(1{,}000\) alt-LPattempts per trial without finding a feasible \(\mu, \nu\). Theaugmentation depth \(k = 2\) is insufficient to bridge thestructural wall at \(m = n = 15, r = 6\) (median best obtuseness onno-feasible trials in Table [tbl:tab:m15] is only \(0.46\)). The\(r = 7, 8\) sweeps were not run: the wall already observed at\(r = 6\) makes them redundant for the current \(k = 2\) depth, andthe experiment is much better spent on \(k \in \{3, 4, 5\}\)(Section [sec:sec:open]). Block times: r=4 in \(598\) s, r=5 in\(5{,}453\) s, r=6 in \(10{,}583\) s; total wall \(\sim 4\) h\(44\) m.
\(r\) Mt-only top-\(200\) (\(m{=}15\)) Hybrid (\(m{=}15\)) Hybrid (\(m{=}10\), context)
\(4\) \(37/100\) \(\mathbf{78/100}\) (\(+41\)) \(99/100\)
\(5\) \(\,7/100\) \(\mathbf{28/100}\) (\(+21\)) \(95/100\)
\(6\) \(\,0/100\) \(\,0/100\) (\(+0\)) \(75/100\)
\(7\) \(\,0/100\) not run
\(8\) \(\,0/100\) not run

The reading is that the hybrid breaks the structural ceiling at the saturation curve’s edge (\(m = n = 10, r = 4, 5, 6\) and \(m = n = 15, r = 4, 5\)), but does not extend the curve into regimes where the underlying cones are uniformly skinny (\(m = n = 15, r \ge 6\)). For the latter, a deeper augmentation (\(k > 2\)) or a fundamentally different relaxation of the uniform-support assumption is needed.

8 Computational Cost Summary↩︎

Table 6: Stage-by-stage cost. The DDM step is the only one witha combinatorial worst case; everything downstream is polynomialin \(r\) and the cone size \(k_i\). The cone size \(k_i\), however, canbe super-polynomial in \(m\) (McMullen upper bound): this is thewall exposed by the Olivetti experiment(Section [sec:sec:olivetti]).
Stage Method Asymptotic cost
SVD on \(A \in \R^{m \times n}\) LAPACK dgesvd \(O(mn \min(m,n))\)
DDM on \(\Aorth\) (\(m\) ineqs.in \(\R^r\)) cddlib \(O\bigl(\binom{m}{r-1}\bigr)\) worst case
Obtuseness ranking on \(\Rorth\) exhaustive or sampled \(O(K \cdot r^3)\), \(K \le 5{,}000\)
\(M_T\) test for one \((T, K)\) pair \(r \times r\) inverse + min \(O(r^3)\)
alt-LP step on \(r \times (r + k)\) support one \(r^2 \times (r+k)r\) LP polynomial in \(r\)

9 Related Work↩︎

9.0.0.1 Separable / geometric NMF.

The separability assumption, that each cone ray is itself a column of \(A\), makes exact NMF polynomially tractable [5][8]. The Successive Projections Algorithm [13] and its descendants exploit this structure. Our toolkit makes no separability assumption; on separable inputs it is overkill, but on the non-separable random rank-\(r\) inputs of Section 5 those algorithms do not return exact witnesses.

9.0.0.2 Algebraic NMF.

The nonneg-rank decision problem is in the first-order theory of real-closed fields [11], [12], [14], [15] and admits Gröbner-basis attacks [16]. The squared-variable substitution we use (\(u_{i,j}^2 \to \alpha_{i,j}\)) is a standard real-algebraic device. The geometric prefilter via Proposition [prop:Mt] is, to our knowledge, original to this work as a way of cutting the combinatorial enumeration cost. The fixed-points of the Mathematica Reduce solver on these systems have been studied geometrically [17], [18].

9.0.0.3 Alternating algorithms.

Multiplicative updates [1], HALS [2], and block coordinate descent [3], [19] are the workhorses of approximate NMF. Our alt-LP differs in two respects: it is applied to an \(r \times (r + k)\) augmented support rather than the full \(m \times r\) matrix, and it minimises slack rather than reconstruction error. The slack-LP plateau noted by [2] for \(\ell_1\)-loss alternating algorithms reappears in our fully-unrestricted alt-LP (Section 10) but is largely avoided in the augmented variant where most of the work is still done by the closed-form \(M_T\).

10 Limitations and Open Problems↩︎

  1. DDM scalability. Our pipeline calls cddlib on \(m \times r\) and \(n \times r\) inequality systems. At \(m \sim 400\) and \(r = 8\) this is tractable (\(\sim 200\,\mathrm{s}\)); at \(n = 4096\) and \(r = 8\) it is not (Section 6.2). Replacing the exact DDM by random ray sampling or an incremental partial enumeration is the most pressing item.

  2. Augmentation depth \(k\). We set \(k = 2\) throughout. Sweeping \(k \in \{1, 3, 4, 5\}\) at \(r = 6\) to characterise the marginal value of each extra augmentation ray is a clean next experiment. The trade-off is per-pair alt-LP cost (polynomial in \(k\)) against the number of pairs successfully rescued.

  3. Initialisation of alt-LP. Our initial \((\mu^{(0)}, \nu^{(0)})\) is the clipped-\(M_T\) embedding of the uniform-support solution. Replacing this by NNLS or a damped Lagrangian inner solve might break the slack-LP plateau on trials where the current alt-LP fails (the \(75\%\) ceiling at \(r = 6\) may not be the geometric ceiling).

  4. Lifting the \(r\)-subset structure entirely. A blind per-column LP support discovery (svd_nonuniform.wl) was prototyped: derive per-column supports \(T_j = \mathrm{supp}(\mathrm{lpNN}(R_{\mathrm{orth}}, R_{\mathrm{orth}}[:, j]))\) via \(r\) blind LPs, then iterate full \(k_1 \times r\) and \(k_2 \times r\) \(\mu, \nu\) slack-LPs without support restriction. On the \(r = 4\) sweep this prototype plateaus at residual \(0.35\)\(1.12\) and rel.err.\(0.054\)\(0.55\), worse than every baseline. Replacing the slack-LP by NNLS or a damped Lagrangian is the most direct fix.

  5. The joint Gröbner basis at \(r = 4\). The companion script svdGb.wl encodes the bilinear system as a Gröbner-basis problem and admits a one-day budget per surviving \((T, K)\) pair after Mt prefiltering. On the \(r = 4\) instance we left running for \(\sim 20\) hours of CPU time, the first surviving pair’s \(\mathrm{GroebnerBasis}+\mathrm{Reduce}\) pipeline has not completed and the memory footprint oscillates between \(0.25\) GB and \(1.0\) GB. A clean characterisation of which \((T, K)\) pairs admit a polynomial-time GB is open.

11 Conclusion↩︎

This paper develops and characterises a cone-ray pipeline for exact NMF on small-\(m, n\) inputs. The closed-form witness \(M_T = R_T^{-1} (R_K^{\!\top})^{-1}\) under uniform support is the cheap test that anchors everything; the obtuseness-ranked walk gives a principled order in which to try \((T, K)\) candidates; and the \(100\)-trial Monte Carlo characterises this walk’s reach precisely. Top-\(200\) is the structural ceiling for closed-form \(M_T\); doubling to top-\(400\) adds \(\le 2\) successes per \(r\), and enlarging \(m\) to \(15\) makes things worse, not better.

The main contribution beyond characterisation is the augmented + alt-LP fallback: at each pair where \(M_T\) is infeasible, augment both supports by \(k = 2\) farthest rays and alt-LP for \(\mu, \nu \in \mathbb{R}^{(r+k) \times r}_{\ge 0}\). This lifts \(m = n = 10\) success counts from \(79/85/58\) to \(\mathbf{99/95/75}\) at \(r = 4, 5, 6\) — the first variant we have found that decisively breaks the structural ceiling. The remaining failures (one at \(r = 4\), five at \(r = 5\), twenty-five at \(r = 6\)) are good targets for the next augmentation depth or for the NNLS/damped-Lagrangian inner solver improvements suggested in Section 10.

Acknowledgments↩︎

The author thanks Anthropic’s Claude (Opus 4.7, 1M context) for help with software drafts, prose, and the Monte-Carlo characterisation pipeline; all errors and design choices are the author’s responsibility. The full executable toolkit, including all reproducible examples and per-trial JSON results, is released alongside this paper as svd.wl, svd_obtuse.wl, svd_obtuse_m10.wl, svd_obtuse_m10_top5.wl, svd_obtuse_m10_top400.wl, svd_obtuse_m10_aug2.wl, svd_obtuse_m10_aug2_top200.wl, svd_obtuse_m15.wl, svd_obtuse_m15_top400.wl, svd_obtuse_m15_aug2_top200.wl, svd_obtuse_olivetti.wl, svdGb.wl, and svd_nonuniform.wl. The complete repository is publicly available at https://github.com/mithilr-sys/cone-nmf-exact.

References↩︎

[1]
D. D. Leeand H. S. Seung, Algorithms for non-negative matrix factorization, in Advances in Neural Information Processing Systems 13 (NeurIPS), 2000, pp. 556–562.
[2]
A. Cichocki, R. Zdunek, A. H. Phan, and S.-I. Amari, Nonnegative Matrix and Tensor Factorizations: Applications to Exploratory Multi-way Data Analysis and Blind Source Separation, Wiley, 2009.
[3]
H. Kimand H. Park, Nonnegative matrix factorization based on alternating nonnegativity constrained least squares and active set method, SIAM Journal on Matrix Analysis and Applications, 30 (2008), pp. 713–730.
[4]
S. A. Vavasis, On the complexity of nonnegative matrix factorization, SIAM Journal on Optimization, 20 (2009), pp. 1364–1377.
[5]
D. Donohoand V. Stodden, When does non-negative matrix factorization give a correct decomposition into parts?, in Advances in Neural Information Processing Systems 16 (NeurIPS), 2003.
[6]
S. Arora, R. Ge, R. Kannan, and A. Moitra, Computing a nonnegative matrix factorization — provably, in Proceedings of the 44th Symposium on Theory of Computing (STOC), 2012, pp. 145–162.
[7]
N. Gillisand S. A. Vavasis, Fast and robust recursive algorithms for separable nonnegative matrix factorization, IEEE Transactions on Pattern Analysis and Machine Intelligence, 36 (2014), pp. 698–714.
[8]
B. Recht, C. Re, J. Tropp, and V. Bittorf, Factoring nonnegative matrices with linear programs, in Advances in Neural Information Processing Systems 25 (NeurIPS), 2012.
[9]
T. S. Motzkin, H. Raiffa, G. L. Thompson, and R. M. Thrall, The double description method, in Contributions to the Theory of Games, Volume II, Princeton University Press, 1953, pp. 51–73.
[10]
K. Fukudaand A. Prodon, Double description method revisited, in Combinatorics and Computer Science, Lecture Notes in Computer Science 1120, Springer, 1996, pp. 91–111.
[11]
G. E. Collins, Quantifier elimination for real closed fields by cylindrical algebraic decomposition, in Automata Theory and Formal Languages, Lecture Notes in Computer Science 33, Springer, 1975, pp. 134–183.
[12]
S. Basu, R. Pollack, and M.-F. Roy, Algorithms in Real Algebraic Geometry, vol. 10 of Algorithms and Computation in Mathematics, Springer, 2nd ed., 2006.
[13]
M. C. U. Araújo, T. C. B. Saldanha, R. K. H. Galvão, T. Yoneyama, H. C. Chame, and V. Visani, The successive projections algorithm for variable selection in spectroscopic multicomponent analysis, Chemometrics and Intelligent Laboratory Systems, 57 (2001), pp. 65–73.
[14]
P. A. Parrilo, Semidefinite programming relaxations for semialgebraic problems, Mathematical Programming, 96 (2003), pp. 293–320.
[15]
J. B. Lasserre, Global optimization with polynomials and the problem of moments, SIAM Journal on Optimization, 11 (2001), pp. 796–817.
[16]
M. Bardet, J.-C. Faugère, and B. Salvy, On the complexity of the F5 Gröbner basis algorithm, Journal of Symbolic Computation, 70 (2015), pp. 49–70.
[17]
K. Kubjas, E. Robeva, and B. Sturmfels, Fixed points of the EM algorithm and nonnegative rank boundaries, Annals of Statistics, 43 (2015), pp. 422–461.
[18]
D. Mond, J. Smith, and D. van Straten, Stochastic factorizations, sandwiched simplices and the topology of the space of explanations, Proceedings of the Royal Society A, 459 (2003), pp. 2821–2845.
[19]
F. Pedregosaet al., Scikit-learn: Machine learning in Python, Journal of Machine Learning Research, 12 (2011), pp. 2825–2830.

  1. Principal Engineer / Manager, Automotive AI Software, Qualcomm India Private Limited. Emails: mramteke@qti.qualcomm.com, mithilr@gmail.com.↩︎

  2. Software drafts and prose for this manuscript were prepared with the assistance of Anthropic’s Claude, an AI coding assistant. The author bears full responsibility for the content.↩︎