Skip to content

constrained_lasso: the exact path with p > n, under constraints, and what a ridge costs - #66

Merged
tschm merged 1 commit into
mainfrom
constrained-lasso-wide
Oct 24, 2026
Merged

tschm merged 1 commit into
mainfrom
constrained-lasso-wide

Conversation

@tschm

@tschm tschm commented Oct 24, 2026

Copy link
Copy Markdown
Member

With more predictors than observations, the path algorithms for general constraints (Gaines et al., CLASSO, c-lasso) add a ridge to XᵀX; the CLA needs none. The note claimed this on a single problem. This PR backs it with evidence and measures what the ridge costs.

New evidence

  • Table 5 (new): Wide (n = 40, p = 100, three seeds) under nonnegativity, a box, two binding inequality rows, a nonhomogeneous row, and a zero sum with signs or caps.

    Wide with knots gap (IPM) KKT
    nonnegative 56–100 2.2e-9 2.5e-15
    box 92–228 2.6e-8 8.2e-16
    inequality rows 54–62 8.0e-8 1.8e-14
    pinned 61–73 2.9e-8 1.8e-15
    zero-sum, signs 44–56 4.7e-9 2.7e-13
    zero-sum, caps 88–245 8.7e-7 1.6e-13

    None declined; KKT is checked along whole segments.

  • What the ridge costs, measured: c-lasso on Wide, zero-sum, run down to 1e-9·λ_max so it reaches the end of the path. As shipped it lies 0.41–0.58 × the largest coefficient from the exact path, against 6.1e-5 when n ≥ p. With the ridge at 1e-12 the gap is 5.8e-12, so the ridge is the whole difference: with p > n it decides where the path ends.

  • CLASSO's own figures: its Table 3 reports objectives up to 4e-2 above the unregularised ones at its default ridge.

Claim narrowed

  • comlasso (Jeon et al., CSDA 148, 2020, doi:10.1016/j.csda.2020.106958) traces the exact zero-sum path with p > n and no ridge. It is now cited, and the claim is limited to general constraints (bounds, signs, inequality rows).
  • Monotone fits with p > n are not claimed: one seed in three is declined.

Text

The abstract, Section 1 (new paragraph), Section 5 (new paragraph, Table 5, c-lasso result), Section 6 and the conclusion. The encodings and portfolio tables become Tables 6 and 7.

Code

  • make_figures.py: wide_problems, stress() takes the problem set, Table 5 and its numbers, test_wide, and the p > n paths saved for the c-lasso check.
  • classo_check.py: runs the p > n paths with a small lamin and writes four new numbers. The two existing c-lasso numbers are unchanged.

One tolerance is looser: test_wide allows the IPM objective to beat the path by 1e-11 (Table 4 uses 1e-12). The IPM gets ahead only near the end of a path, where the objective has fallen to about 1e-4 of its value at β = 0. Measured against that starting value, the 4.9e-12 excess is about 1e-14, which is rounding.

Checks

🤖 Generated with Claude Code

…what a ridge costs

With more predictors than observations the path algorithms for general
constraints (Gaines et al., CLASSO, c-lasso) add a ridge; the CLA needs none.
The note claimed this on one problem, Wide, zero-sum. It now shows it:

- Table 5 (new): Wide (n = 40, p = 100, three seeds) under nonnegativity, a
  box, two binding inequality rows, a nonhomogeneous row, and a zero sum with
  signs or caps. None declined; KKT 2.7e-13 or better along every segment;
  interior-point gap 8.7e-7 or less.
- c-lasso on Wide, zero-sum, its grid carried down to 1e-9 of lambda_max:
  as shipped it lies 0.41 to 0.58 times the largest coefficient from the
  exact path, against 6.1e-5 when n >= p; with the ridge at 1e-12, 5.8e-12.
  With p > n the ridge decides where the path ends.
- comlasso (Jeon et al., CSDA 2020) traces the exact zero-sum path with p > n
  and no ridge; cited, and the claim narrowed to general constraints.
- CLASSO's own Table 3: objectives up to 4e-2 above the unregularised ones at
  its default ridge.

Abstract, Section 1, Section 5, Section 6 and the conclusion say so. Monotone
fits with p > n are not claimed: one seed in three is declined.

test_wide allows the IPM objective to beat the path by 1e-11 rather than
Table 4's 1e-12: near the end of a p > n path the objective falls to 1e-4 of
its value at beta = 0, and the excess, 4.9e-12, is 1e-14 of that value.

make_figures.py test: 15 passed. The note compiles to 16 pages, no overfull
lines.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@tschm
tschm merged commit 2b76f48 into main Oct 24, 2026
5 checks passed
@tschm
tschm deleted the constrained-lasso-wide branch October 24, 2026 15:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant