Changelog
Source:NEWS.md
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 makescss()measurably faster while returning the same selected features as the refit it replaced (#125).-
cssLasso()now reads its coefficients at the penaltyglmnetreported 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 around1e-17and is selected onabs(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 ofcssSelect()andcssPredict()should know it, because the aggregation steps abovecssLasso()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 amax_num_cluststie returns more clusters and warns, soselected_clustscan widen, theReturning more than max_num_clustswarning can fire where it did not before, and underoptions(warn = 2)a call that returned can now error. - A within-cluster tie in the prototype weighting widens
selected_featswith no warning at all, and withselected_clustsunchanged. 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.