Repository navigation
constrained_lasso: results at a glance, constraints in Table 2, subsections in Section 5 - #70
Merged
Conversation
…ctions in Section 5 - Section 1 ends with a 'results at a glance' box: one row per kind of constraint tested, the encoding that takes it, the outcome, and the references that confirm it. Unnumbered, like Algorithm 1, so no table is renumbered. - Table 2 gains a constraint column, written by make_figures.py (CONSTRAINTS), and the paragraph that defined each problem in prose keeps only data, design and behaviour. - Section 5 has subsections: test problems and checks, accuracy, scale and cost, hostile problems, more predictors than observations, and three independent path algorithms. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
tschm
added a commit
that referenced
this pull request
Oct 25, 2026
* constrained_lasso: second-round review fixes 1. Section 5: the three path algorithms trace the CLA's path once started at the exact first knot (Gaines et al. as shipped do not). 2. Section 1: the two encodings are the general one and the direct one for homogeneous constraints, not both needed (Appendix B). 3. Section 3: the penalty form's start includes the rows C S z <= h, which move it off z = 0 when some h_r < 0. 4. Section 2: inequality rows fit Markowitz's form as equality rows with a nonnegative slack, cited, instead of 'a standard extension'. 5. Scale: the cost ratios are the one set of results, not numbers, the script does not write. 6. Section 6: only the largest zero sum needed a retry, as cvxcla 2.6.0, which tried only the first relaxation, shows. 7. Section 1: the CLA gives exact paths or stops with an error. 8. Tables 3-5 follow the paragraphs that cite them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * constrained_lasso: a 'When to use which encoding' box At the end of Section 6, in the style of Algorithm 1 and the companion note's 'When to use it': which encoding cvxcla.Lasso picks for which constraints, and what each costs - the budget form in one run for homogeneous equality rows with signs, the penalty form in one run from a nondegenerate start, two or more relaxed runs and a certificate for homogeneous rows with caps or rows, either form with p > n, and an error on two nearly identical columns. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * constrained_lasso: results at a glance, constraints in Table 2, subsections in Section 5 (#70) - Section 1 ends with a 'results at a glance' box: one row per kind of constraint tested, the encoding that takes it, the outcome, and the references that confirm it. Unnumbered, like Algorithm 1, so no table is renumbered. - Table 2 gains a constraint column, written by make_figures.py (CONSTRAINTS), and the paragraph that defined each problem in prose keeps only data, design and behaviour. - Section 5 has subsections: test problems and checks, accuracy, scale and cost, hostile problems, more predictors than observations, and three independent path algorithms. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
tschm
added a commit
that referenced
this pull request
Oct 25, 2026
* constrained_lasso: second-round review fixes 1. Section 5: the three path algorithms trace the CLA's path once started at the exact first knot (Gaines et al. as shipped do not). 2. Section 1: the two encodings are the general one and the direct one for homogeneous constraints, not both needed (Appendix B). 3. Section 3: the penalty form's start includes the rows C S z <= h, which move it off z = 0 when some h_r < 0. 4. Section 2: inequality rows fit Markowitz's form as equality rows with a nonnegative slack, cited, instead of 'a standard extension'. 5. Scale: the cost ratios are the one set of results, not numbers, the script does not write. 6. Section 6: only the largest zero sum needed a retry, as cvxcla 2.6.0, which tried only the first relaxation, shows. 7. Section 1: the CLA gives exact paths or stops with an error. 8. Tables 3-5 follow the paragraphs that cite them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * constrained_lasso: a 'When to use which encoding' box At the end of Section 6, in the style of Algorithm 1 and the companion note's 'When to use it': which encoding cvxcla.Lasso picks for which constraints, and what each costs - the budget form in one run for homogeneous equality rows with signs, the penalty form in one run from a nondegenerate start, two or more relaxed runs and a certificate for homogeneous rows with caps or rows, either form with p > n, and an error on two nearly identical columns. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * constrained_lasso: results at a glance, constraints in Table 2, subsections in Section 5 (#70) - Section 1 ends with a 'results at a glance' box: one row per kind of constraint tested, the encoding that takes it, the outcome, and the references that confirm it. Unnumbered, like Algorithm 1, so no table is renumbered. - Table 2 gains a constraint column, written by make_figures.py (CONSTRAINTS), and the paragraph that defined each problem in prose keeps only data, design and behaviour. - Section 5 has subsections: test problems and checks, accuracy, scale and cost, hostile problems, more predictors than observations, and three independent path algorithms. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * constrained_lasso: one home for each repeated argument - p > n and the ridge: argued in Section 6, measured in Section 5.6. Section 1 now says it in two sentences and points to both; the 0.58 figure appears where it is measured and where the argument uses it. - The relaxation: Related work no longer repeats the sentence just above it, and the encodings list no longer repeats Section 4's opening. - The near-duplicate decline: Section 5.4 gives the result and points to Section 6, which explains why. 18 pages, down from 19; no evidence or number removed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * constrained_lasso: third-round review fixes 1. Section 2: Markowitz's algorithm handles general linear constraints, as its title says; the note writes them as equality rows, inequality rows and bounds. Replaces a claim about the 1956 paper's exact form that could not be checked against the source. 2. Cross-references: Monotone is described in Appendix A; comlasso's agreement on Wide, zero-sum is in Section 5.6. 3. Table 2 is placed with Section 5.1 (page 9), not after Figure 3. 4. Competing interests: comlasso is named among the checks. 5. The encoding box's second bullet separates its two conditions. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * constrained_lasso: plainer sentences where the text read machine-written Measured against the companion LASSO note, published in the same journal, the note's voice already matched (sentence length, parentheses, contrasts). It ran heavier on two habits: a short claim, a colon, then the explanation, and sentences that announce a count before the content. Those are rewritten: - 'certified, not trusted:' and 'a candidate path, not a proof' after Lemma 1 become one plain statement of what cvxcla accepts; - 'Bounds that exclude zero are not a limit: they enter as rows' and 'The practical consequence is simple:' lose the colon; - 'it is an example, not a proof' (Appendix A) and the 'one set of results' sentence (Scale) are rephrased; - Section 6's opening no longer announces what the section says; 'Two things stop the run', 'Two other starts' open on the content; - the encodings paragraph no longer summarises the list right below it; - Appendix D's closing line, which the conclusion already carries, goes. No number, citation or claim changes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * constrained_lasso: fold Appendix D into a cited sentence The two CLA defects the checks exposed (a tied maximum return, a low-rank covariance) are cvxcla's own fixes, and the cvxcla paper already documents both. Section 1 now names them and cites it; Appendix D and its table go. The conclusion keeps its one-sentence summary. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * constrained_lasso: drop the portfolio problems, now tested in cvxcla The note no longer reports them (Appendix D was folded into a cited sentence), and the test moved to cvxcla's own suite (cvxgrp/cvxcla#988), where the problems belong. Removes portfolio_problems, portfolios, portfolios_tex, test_portfolios, the figures/portfolios.tex output and the now-unused CLA import. 16 tests pass. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- 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.
Three readability changes to the constrained-LASSO note. Stacked on #69; review that first.
1. Results at a glance (end of Section 1)
A boxed table with one row per kind of constraint the note tests. For each it gives the encoding that takes it, whether the path is exact or declined, and which references confirm it. A reader gets the whole result before the method.
* With c-lasso's ridge set to 1e-12.
The box is unnumbered, like Algorithm 1. A numbered table would renumber Tables 2–7, which about 25 comments in the code, the README and the Julia check cite by number.
2. Constraints in Table 2
|β_j| ≤ uor1ᵀβ = 0, β_2j ≥ 0.make_figures.pywrites it from a newCONSTRAINTSmap, andtest_table_texchecks every problem has one.3. Subsections in Section 5
Run-in paragraphs become numbered subsections:
Checks
make_figures.py test: 17 passed. Every table is regenerated, and no number changes.arraypackage is added for the box's ragged-right columns.🤖 Generated with Claude Code