Learn R Programming

glinternet (version 0.9.0)

glinternet: Fit a linear interaction model with group-lasso regularization that enforces strong hierarchy in the estimated coefficients

Description

The regularization path is computed along a grid of values for the regularization parameter lambda. Can deal with categorical variables with arbitrary numbers of levels, continuous variables, and combinations of the two. Accommodates squared error loss and logistic loss.

Usage

glinternet(X, Y, numLevels, lambda = NULL, nLambda = 50, lambdaMinRatio = 0.01,
 screenLimit = NULL, numToFind = NULL, family = c("gaussian","binomial"),
tol = 1e-05, maxIter=5000, verbose=FALSE, numCores = 1)

Arguments

X
Matrix of features or predictors with dimension nobs x nvars; each row is an observation vector. Categorical variables must be coded as 0, 1, 2, ...
Y
Target variable of length nobs. Continuous for squared error loss, 0-1 for logistic loss.
numLevels
Number of levels for each variable, of length nvars. Set to 1 for continuous variables.
lambda
A user supplied lambda sequence. Typical usage is to have the program compute its own lambda sequence based on nLambda and lambdaMinRatio. Supplying a value of lambda overrides t
nLambda
The number of lambda values. Default is 50.
lambdaMinRatio
Smallest value for lambda, as a fraction of lambdaMax, the (data derived) entry value (i.e. the smallest value for which all coefficients are zero). The default is 0.01.
screenLimit
If not null (the default), limits the size of the interaction search space to screenLimit x nvars by only considering interactions with the best screenLimit candidate main effects at each point along the regularizatio
numToFind
Stops the program after numToFind interaction pairs are found. Default is null - fit all values of lambda.
family
A character string describing the target variable: "gaussian" for continuous (the default), "binomial" for logistic.
tol
Convergence tolerance in the adaptive FISTA algorithm.
maxIter
Maximum number of iterations in adaptive FISTA. Default 5000.
verbose
Prints progress. False by default.
numCores
Number of threads to run. For this to work, the package must be installed with OpenMP enabled. Default is 1 thread.

Value

  • An object of class glinternet with the components
  • callThe user function call.
  • fittedThe fitted values, with dimension nobs x nLambda. If numToFind is specified, the program is likely to stop before all nLambda models have been fit.
  • lambdaThe actual lambda sequence used.
  • objValueObjective values for each lambda.
  • activeSetA list (of length nLambda) of the variables found. Internally, the categorical and continuous variables are separated into two groups, and each has their own indexing system (1-based). For example, the categorical-continuous interaction c(i, j) refers to the interaction between the i-th categorical variable with the j-th continuous variable.
  • betahatList (of length lambda) of coefficients for the variables in activeSet. The first component is the intercept. Subsequent entries correspond to the variables in activeSet. For example, if the first variable in activeSet is a 3-level categorical variable, then components 2-4 of betahat are the coefficients for this variable.
  • numLevelsThe number of levels for each variable.
  • familyThe target variable type.

Details

The sequence of models implied by lambda is fit by FISTA (fast iterative soft thresholding) with adaptive step size and adaptive momentum restart. The continuous features are standardized to have unit norm and mean zero before computing the lambda sequence and fitting. The returned coefficients are unstandardized. Categorical variables are not standardized.

References

Michael Lim and Trevor Hastie (2013)Learning interactions via hierarchical group-lasso regularization, http://arxiv.org/abs/1308.2719

See Also

glinternet.cv, predict.glinternet, predict.glinternet.cv, plot.glinternet.cv, coef.glinternet

Examples

Run this code
# gaussian response, continuous features
Y = rnorm(100)
X = matrix(rnorm(100*10), nrow=100)
numLevels = rep(1, 10)
fit = glinternet(X, Y, numLevels)

#binary response, continuous features
Y = rbinom(100, 1, 0.5)
fit = glinternet(X, Y, numLevels, family="binomial")

#binary response, categorical variables
X = matrix(sample(0:2, 100*10, replace=TRUE), nrow=100)
numLevels = rep(3, 10)
fit = glinternet(X, Y, numLevels, family="binomial")

Run the code above in your browser using DataLab