We have uploaded to CRAN a new version of glmpath, a package
which fits the L1 regularization path for generalized linear models.
The revision includes:
- coxpath, a function for fitting the L1-regularization path for the Cox
ph model;
- bootstrap functions for analyzing sparse solutions;
- the ability to mix in L2 regularization along with L1 (elasticnet).
We have also completed a report that describes these methods in detail:
http://www-stat.stanford.edu/~hastie/Papers/glmpath.pdf
The lars package in R fits the entire piecewise-linear L1 regularization
path for
the lasso. The coefficient paths for L1 regularized glms, however,
are not piecewise linear.
glmpath uses convex optimization - in particular predictor-corrector
methods -
to fit the coefficient path at important junctions. These junctions
are at the "knots" in |beta|
where variables enter/leave the active set; i.e. nonzero/zero values.
Users can request greater resolution at a cost of more computation,
and compute values
on a fine grid between the knots.
The code is fast, and can handle largish problems efficiently.
it took just over 4 sec system cpu time to fit the logistic
regression path for
the "spam" data from UCI with 3065 training obs and 57 predictors.
For a microarray example with 5000 variables and 100 observations, 11
seconds cpu time.
Currently glmpath implements binomial, poisson and gaussian families.
The additional coxpath algorithm
extends the concepts to survival data via the L1-regularized Cox
proportional hazards model.
We have added bootstrap functions, which help make sense of
automatically chosen models (via AIC). Shake up the data,
and a different model might be chosen. The bootstrap is a natural way of
measuring the strength (significance) of variables,
and more.
Mixing in a small amount of L2 regularization brings a lot of stability
to the lasso; for example, without it the limiting
sequence for a logistic regression model with separable data is
undefined. We have added this option to
glmpath and coxpath
Mee Young Park and Trevor Hastie
Update details:
### glmpath 0.90 -> glmpath 0.91 ###
1. Elastic net penalty added
2. Coxpath functions: coxpath, cv.coxpath, plot.coxpath, predict.coxpath
2. Bootstrap functions: bootstrap.path, plot.bootpath
glmpath:
actions[[1]] label
subtract 1 from every id number in actions
bshoot.threshold = 0.1 instead of 0.5
relax.lambda = 1e-8 instead of 1e-9
re-center the intercept in b.corrector/b.predictor
fix gaussian AIC/BIC
corrector1:
fix the first element of AIC/BIC
[[alternative HTML version deleted]]