Updated the bundled Eigen headers from 3.3.5 to 3.4.0 so the package
compiles cleanly under the C++20 default of recent R-devel toolchains
(GCC 14/16), removing the -Wdeprecated-enum-enum-conversion
install warnings that originated in the older Eigen sources. No package
API or numerical behavior changes.
picasso 2.0.0
New models and solver
controls
Added multinomial logistic regression for L1, MCP, and SCAD
penalties in the R and Python interfaces. The solver uses class-coupled
active-set Proximal Newton/IRLS updates, pathwise warm starts, strong
screening, full KKT checks, and deviance-tail early stopping for
automatically generated paths.
MCP/SCAD binomial, Poisson, square-root-lasso, and multinomial fits
now use adaptive local linear approximation (LLA).
lla.max.stages = 3L is the default maximum, including the
initial L1 master; larger budgets are available when stricter
stationarity is required.
Added opt-in fast.mode. The default remains high
precision. Fast mode uses benchmark-calibrated achieved-accuracy
tolerances of 4e-4 for Poisson and 1e-4 for
binomial, square-root-lasso, and multinomial; Gaussian retains
1e-7.
Gaussian fits now default to type.gaussian = "auto". A
calibrated, memory-bounded policy selects between residual-based naive
updates and lazy covariance updates using the design shape and
lambda-path reuse. Explicit "naive" and
"covariance" requests retain their previous behavior.
Added dfmax path-size stopping consistently across
families.
Interfaces and diagnostics
Native path fitting is now interruptible: every family polls for a
pending user interrupt (Ctrl-C) at each lambda boundary and re-raises it
as a standard R interrupt condition instead of running the
full path to completion.
Added binomial and Poisson offsets throughout fitting, prediction,
assessment, and cross-validation. New-data offsets are applied on the
link scale and are required whenever prediction or assessment evaluates
the linear predictor; nonzero-support extraction does not need
them.
Added cv.picasso(), assess.picasso(), and
confusion.picasso() support for all applicable families,
including stratified categorical folds and stable class maps for factor
and multinomial responses.
Prediction methods now support response, link, class, and nonzero
outputs as applicable, plus interpolation by lambda value through
s.
Versioned native solvers now report termination status and failure
location. Gaussian iteration-limit failures retain only the previously
converged path prefix. Non-Gaussian fits additionally report per-lambda
runtime, objective, KKT residual, stationarity, and LLA stage counts;
usable stage-budget termination remains distinct from a hard
failure.
Gaussian fit objects record both requested and resolved solver
modes. Multinomial fits record the requested path length and whether a
saturated generated-path tail was omitted.
Correctness,
performance, and portability
Categorical class prediction now compares finite link-scale scores
directly, matching glmnet while avoiding probability-rounding ties and
unnecessary sigmoid/softmax temporaries. Confusion tables use predicted
classes in rows, observed classes in columns, and retain every fitted
class level.
Fixed binomial response/class prediction for requests containing
multiple lambda values.
Scalar coefficient and prediction defaults now select at most the
first three available path points or coefficients, so short paths and
low- dimensional models no longer fail with out-of-range default
indices.
Scalar prediction row selectors now use NULL for all
rows. Explicit Y.pred.idx or p.pred.idx values
are always applied instead of treating 1:5 as a hidden
default sentinel.
Invalid MCP/SCAD concavity parameters now fail instead of being
silently replaced by 3; every family validates the documented LLA stage
budget. Square-root-lasso reports its algorithm as active-set quadratic
MM.
Moved scalar and multinomial path-loss evaluation into the native
solvers, avoiding repeated R-side matrix products after fitting.
Cached fixed weighted column norms inside scalar active-set
subproblems, compacted active working sets, vectorized multinomial
curvature/KKT kernels, and reduced temporary allocations in prediction
and path rescaling.
Scalar-family assessment now keeps small paths on one matrix
multiplication and evaluates larger paths in approximately 8 MiB
link-predictor blocks, reducing peak memory without changing metric
values.
Strengthened validation for numeric matrix storage, finite inputs,
decreasing lambda paths, dimensions, class maps, offsets, and
no-intercept standardization. Constant-response and zero-gradient paths
now have explicit finite behavior.
Kept R-package and standalone native source mirrors under build-time
parity checks and added scalar, multinomial, interface, and
numerical-stability regression coverage.
Removed the unused MASS attachment from the R package
dependency surface; only Matrix is attached at load
time.