Type: | Package |
Title: | Parametric Simplex Method for Sparse Learning |
Version: | 1.0.2 |
Date: | 2020-01-21 |
Author: | Zichong Li, Qianli Shen |
Maintainer: | Zichong Li <zichongli5@gmail.com> |
LinkingTo: | Rcpp, RcppEigen |
Description: | Implements a unified framework of parametric simplex method for a variety of sparse learning problems (e.g., Dantzig selector (for linear regression), sparse quantile regression, sparse support vector machines, and compressive sensing) combined with efficient hyper-parameter selection strategies. The core algorithm is implemented in C++ with Eigen3 support for portable high performance linear algebra. For more details about parametric simplex method, see Haotian Pang (2017) https://papers.nips.cc/paper/6623-parametric-simplex-method-for-sparse-learning.pdf. |
Imports: | Matrix |
License: | GPL-2 | GPL-3 [expanded from: GPL (≥ 2)] |
NeedsCompilation: | yes |
Packaged: | 2020-01-22 09:22:31 UTC; lizichong |
RoxygenNote: | 6.1.1 |
Repository: | CRAN |
Date/Publication: | 2020-01-22 11:10:02 UTC |
Parametric Simplex Method for Sparse Learning
Description
A package for parametric simplex method for sparse learning
Details
Package: | PRIMAL |
Type: | Package |
Version: | 1.0.0 |
Date: | 2019-08-15 |
The package "PRIMAL" provides 5 main functions:
(1) The dantzig selector solver applying simplex method. Please refer to Dantzig_solver
.
(2) The sparse SVM solver applying simplex method. Please refer to SparseSVM_solver
.
(3) The compressed sensing solver. Please refer to CompressedSensing_solver
.
(4) The quantile regression solver. Please refer to QuantileRegression_solver
.
(5) The solver for standard formulation of parametric simplex method. Please refer to PSM_solver
.
Author(s)
Qianli Shen, Zichong Li
See Also
plot.primal
, print.primal
, coef.primal
Solve given compressed sensing problem in parametric simplex method
Description
Solve given compressed sensing problem in parametric simplex method
Usage
CompressedSensing_solver(X, y, max_it = 50, lambda_threshold = 0.01)
Arguments
X |
|
y |
|
max_it |
This is the number of the maximum path length one would like to achieve. The default length is |
lambda_threshold |
The parametric simplex method will stop when the calculated parameter is smaller than lambda. The default value is |
Value
An object with S3 class "primal"
is returned:
data |
The |
response |
The length |
beta |
A matrix of regression estimates whose columns correspond to regularization parameters for parametric simplex method. |
df |
The degree of freedom (number of nonzero coefficients) along the solution path. |
value |
The sequence of optimal value of the object function corresponded to the sequence of lambda. |
iterN |
The number of iteration in the program. |
lambda |
The sequence of regularization parameters |
type |
The type of the problem, such as |
See Also
primal-package
, Dantzig_solver
Examples
## Compressed Sensing
## We set X to be standard normal random matrix and generate Y using gaussian noise.
## Generate the design matrix and coefficient vector
n = 100 # sample number
d = 250 # sample dimension
c = 0.5 # correlation parameter
s = 20 # support size of coefficient
set.seed(1024)
X = scale(matrix(rnorm(n*d),n,d)+c*rnorm(n))/sqrt(n-1)*sqrt(n)
beta = c(rnorm(s), rep(0, d-s))
## Generate response using Gaussian noise, and solve the solution path
noise = rnorm(n)
Y = X%*%beta + noise
## Compressed Sensing solved with parametric simplex method
fit.compressed = CompressedSensing_solver(X, Y, max_it = 100, lambda_threshold = 0.01)
###lambdas used
print(fit.compressed$lambda)
## number of nonzero coefficients for each lambda
print(fit.compressed$df)
## Visualize the solution path
plot(fit.compressed)
Solve given Dantzig selector problem in parametric simplex method
Description
Solve given Dantzig selector problem in parametric simplex method
Usage
Dantzig_solver(X, y, max_it = 50, lambda_threshold = 0.01)
Arguments
X |
|
y |
|
max_it |
This is the number of the maximum path length one would like to achieve. The default length is |
lambda_threshold |
The parametric simplex method will stop when the calculated parameter is smaller than lambda. The default value is |
Value
An object with S3 class "primal"
is returned:
data |
The |
response |
The length |
beta |
A matrix of regression estimates whose columns correspond to regularization parameters for parametric simplex method. |
df |
The degree of freedom (number of nonzero coefficients) along the solution path. |
value |
The sequence of optimal value of the object function corresponded to the sequence of lambda. |
iterN |
The number of iteration in the program. |
lambda |
The sequence of regularization parameters |
type |
The type of the problem, such as |
See Also
Examples
## Dantzig
## We set X to be standard normal random matrix and generate Y using gaussian noise.
## Generate the design matrix and coefficient vector
n = 100 # sample number
d = 250 # sample dimension
c = 0.5 # correlation parameter
s = 20 # support size of coefficient
set.seed(1024)
X = scale(matrix(rnorm(n*d),n,d)+c*rnorm(n))/sqrt(n-1)*sqrt(n)
beta = c(rnorm(s), rep(0, d-s))
## Generate response using Gaussian noise, and solve the solution path
noise = rnorm(n)
Y = X%*%beta + noise
## Dantzig selection solved with parametric simplex method
fit.dantzig = Dantzig_solver(X, Y, max_it = 100, lambda_threshold = 0.01)
###lambdas used
print(fit.dantzig$lambda)
## number of nonzero coefficients for each lambda
print(fit.dantzig$df)
## Visualize the solution path
plot(fit.dantzig)
Solve given problem in parametric simplex method
Description
Solve given problem in parametric simplex method
Usage
PSM_solver(A, b, b_bar, c, c_bar, B_init = NULL, max_it = 50,
lambda_threshold = 0.01)
Arguments
A |
|
b |
|
b_bar |
|
c |
|
c_bar |
|
B_init |
|
max_it |
This is the number of the maximum path length one would like to achieve. The default length is |
lambda_threshold |
The parametric simplex method will stop when the calculated parameter is smaller than lambda. The default value is |
Value
An object with S3 class "primal"
is returned:
data |
The |
response |
The length |
beta |
A matrix of regression estimates whose columns correspond to regularization parameters for parametric simplex method. |
beta0 |
A vector of regression estimates whose index correspond to regularization parameters for parametric simplex method. |
df |
The degree of freecom (number of nonzero coefficients) along the solution path. |
value |
The sequence of optimal value of the object function corresponded to the sequence of lambda. |
iterN |
The number of iteration in the program. |
lambda |
The sequence of regularization parameters |
type |
The type of the problem, such as |
See Also
Examples
## This example show how to use PSM_solver() to solve dantzig problem.
## Generate the design matrix and coefficient vector
n = 100 # sample number
d = 250 # sample dimension
c = 0.5 # correlation parameter
s = 20 # support size of coefficient
set.seed(1024)
X = scale(matrix(rnorm(n*d),n,d)+c*rnorm(n))/sqrt(n-1)*sqrt(n)
beta = c(rnorm(s), rep(0, d-s))
## Generate response using Gaussian noise, and solve the solution path
noise = rnorm(n)
Y = X%*%beta + noise
## Define parameters for dantzig problem
XtX = t(X)%*%X
A = cbind(cbind(rbind(XtX,-XtX),-rbind(XtX,-XtX)),diag(rep(1,2*d)))
b = rbind(t(X)%*%Y,-t(X)%*%Y)
c = c(rep(-1,2*d),rep(0,2*d))
c_bar = rep(0,4*d)
b_bar = rep(1,2*d)
B_init = seq(2*d,4*d-1)
## Dantzig selection solved with parametric simplex method
fit.dantzig = PSM_solver(A, b, b_bar, c, c_bar, B_init, max_it = 50, lambda_threshold = 0.01)
###lambdas used
print(fit.dantzig$lambda)
## number of nonzero coefficients for each lambda
print(fit.dantzig$df)
## Visualize the solution path
plot(fit.dantzig)
Solve given quantile regression problem in parametric simplex method
Description
Solve given quantile regression problem in parametric simplex method
Usage
QuantileRegression_solver(X, y, max_it = 50, lambda_threshold = 0.01,
tau = 0.5)
Arguments
X |
|
y |
|
max_it |
This is the number of the maximum path length one would like to achieve. The default length is |
lambda_threshold |
The parametric simplex method will stop when the calculated parameter is smaller than lambda. The default value is |
tau |
The quantile number you want. The default quantile is |
Value
An object with S3 class "primal"
is returned:
data |
The |
response |
The length |
beta |
A matrix of regression estimates whose columns correspond to regularization parameters for parametric simplex method. |
df |
The degree of freedom (number of nonzero coefficients) along the solution path. |
value |
The sequence of optimal value of the object function corresponded to the sequence of lambda. |
iterN |
The number of iteration in the program. |
lambda |
The sequence of regularization parameters |
type |
The type of the problem, such as |
See Also
primal-package
, Dantzig_solver
Examples
## Quantile Regression
## We set X to be standard normal random matrix and generate Y using gaussian noise
## with default quantile number to be 0.5.
## Generate the design matrix and coefficient vector
n = 100 # sample number
d = 250 # sample dimension
c = 0.5 # correlation parameter
s = 20 # support size of coefficient
set.seed(1024)
X = scale(matrix(rnorm(n*d),n,d)+c*rnorm(n))/sqrt(n-1)*sqrt(n)
beta = c(rnorm(s), rep(0, d-s))
## Generate response using Gaussian noise, and solve the solution path
noise = rnorm(n)
Y = X%*%beta + noise
## Quantile Regression problem solved with parametric simplex method
fit.quantile = QuantileRegression_solver(X, Y, max_it = 100, lambda_threshold = 0.01)
###lambdas used
print(fit.quantile$lambda)
## number of nonzero coefficients for each lambda
print(fit.quantile$df)
## Visualize the solution path
plot(fit.quantile)
Solve given Sparse SVM problem in parametric simplex method
Description
Solve given Sparse SVM problem in parametric simplex method
Usage
SparseSVM_solver(X, y, max_it = 50, lambda_threshold = 0.01)
Arguments
X |
|
y |
|
max_it |
This is the number of the maximum path length one would like to achieve. The default length is |
lambda_threshold |
The parametric simplex method will stop when the calculated parameter is smaller than lambda. The default value is |
Value
An object with S3 class "primal"
is returned:
data |
The |
response |
The length |
beta |
A matrix of regression estimates whose columns correspond to regularization parameters for parametric simplex method. |
beta0 |
A vector of regression estimates whose index correspond to regularization parameters for parametric simplex method. |
df |
The degree of freecom (number of nonzero coefficients) along the solution path. |
value |
The sequence of optimal value of the object function corresponded to the sequence of lambda. |
iterN |
The number of iteration in the program. |
lambda |
The sequence of regularization parameters |
type |
The type of the problem, such as |
See Also
Examples
## SparseSVM
## We set the X matrix to be normal random matrix and Y is a vector consists of -1 and 1
## with the number of iteration to be 1000.
## Generate the design matrix and coefficient vector
n = 200 # sample number
d = 100 # sample dimension
c = 0.5 # correlation parameter
s = 20 # support size of coefficient
set.seed(1024)
X = matrix(rnorm(n*d),n,d)+c*rnorm(n)
## Generate response and solve the solution path
Y <- sample(c(-1,1),n,replace = TRUE)
## Sparse SVM solved with parametric simplex method
fit.SVM = SparseSVM_solver(X, Y, max_it = 1000, lambda_threshold = 0.01)
## lambdas used
print(fit.SVM$lambda)
## Visualize the solution path
plot(fit.SVM)
Coef function for S3 class "primal"
Description
Print the estimated solution correspond to a specific parameter.
Usage
## S3 method for class 'primal'
coef(object, n = NULL, ...)
Arguments
object |
An object with S3 class |
n |
The index of the wanted parameter. |
... |
System reserved (No specific usage) |
See Also
Dantzig_solver
, SparseSVM_solver
Plot function for S3 class "primal"
Description
Plot regularization path and parameter obtained from the algorithm.
Usage
## S3 method for class 'primal'
plot(x, n = NULL, ...)
Arguments
x |
An object with S3 class |
n |
If |
... |
System reserved (No specific usage) |
See Also
Dantzig_solver
, SparseSVM_solver
Print function for S3 class "primal"
Description
Print the information about the model usage, the parameter path, degree of freedom of the solution path.
Usage
## S3 method for class 'primal'
print(x, ...)
Arguments
x |
An object with S3 class |
... |
System reserved (No specific usage) |