Skip to contents

cssr 0.4.7.9000 (development version)

  • cssLasso() now fits its second lasso path over a shortened, anchored penalty grid rather than refitting the whole path, which makes css() measurably faster while returning the same selected features as the refit it replaced (#125).

  • cssLasso() now reads its coefficients at the penalty glmnet reported rather than at the one it was asked for, so a feature whose coefficient is floating-point debris from interpolating between two lasso-path columns is no longer selected (#199). This supersedes the identity above, which held against the refit as it then behaved. It is uncommon, and most likely where the penalty sits near the top of the lasso path fitted to a single subsample.

    At the cssLasso() level the change removes features and does not add them. Two things have to hold: a feature carried only by the adjacent column leaks into the blend at around 1e-17 and is selected on abs(x) > 0, so the blend’s support is a superset of the solved column’s; and a feature the solved column carries survives the blend, since its contribution is scaled by a weight indistinguishable from 1, or from 0, at double precision. The second can fail only by exact cancellation between two opposite-signed contributions. No such case was found in 239,004 runs, and no sign flip in 541,750 adjacent-column pairs, so this is a well-tested empirical claim rather than a proof.

    At the css() level the change can go either way, and callers of cssSelect() and cssPredict() should know it, because the aggregation steps above cssLasso() are not order-preserving. A removal lowers a cluster’s selection proportion, and a lowered proportion can reach a tie that is resolved by returning more. Two distinct routes, only one of which announces itself:

    • getSelectedClusters() resolving a max_num_clusts tie returns more clusters and warns, so selected_clusts can widen, the Returning more than max_num_clusts warning can fire where it did not before, and under options(warn = 2) a call that returned can now error.
    • A within-cluster tie in the prototype weighting widens selected_feats with no warning at all, and with selected_clusts unchanged. This is the route to know about if you rely on warnings to notice a change, since there is nothing to catch.

This file starts here rather than covering the package’s whole history; for changes before this point, see the closed pull requests and the commit log.