Repository navigation
constrained_lasso: the exact path with p > n, under constraints, and what a ridge costs - #66
Merged
Merged
Conversation
…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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.
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
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 smalllaminand writes four new numbers. The two existing c-lasso numbers are unchanged.One tolerance is looser:
test_wideallows 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
make_figures.py test: 15 passed.🤖 Generated with Claude Code