| Title: | Fast Algorithm for Support Vector Machine |
|---|---|
| Description: | Implements an efficient algorithm for fitting the entire regularization path of support vector machine models with elastic-net penalties using a generalized coordinate descent scheme. The framework also supports SCAD and MCP penalties. It is designed for high-dimensional datasets and emphasizes numerical accuracy and computational efficiency. This package implements the algorithms proposed in Tang, Q., Zhang, Y., & Wang, B. (2022) <https://openreview.net/pdf?id=RvwMTDYTOb>. |
| Authors: | Yikai Zhang [aut, cre], Qian Tang [aut], Boxiang Wang [aut] |
| Maintainer: | Yikai Zhang <[email protected]> |
| License: | GPL-2 |
| Version: | 1.0.2 |
| Built: | 2026-05-29 10:02:34 UTC |
| Source: | https://github.com/cran/hdsvm |
Retrieves coefficients from a cross-validated 'hdsvm()' model, using the stored '"hdsvm.fit"' object and the optimal 'lambda' value determined during cross-validation.
## S3 method for class 'cv.hdsvm' coef(object, s = c("lambda.1se", "lambda.min"), ...)## S3 method for class 'cv.hdsvm' coef(object, s = c("lambda.1se", "lambda.min"), ...)
object |
A fitted 'cv.hdsvm()' object from which coefficients are to be extracted. |
s |
Specifies the value(s) of the penalty parameter 'lambda' for which coefficients are desired. The default is 's = "lambda.1se"', which corresponds to the largest value of 'lambda' such that the cross-validation error estimate is within one standard error of the minimum. Alternatively, 's = "lambda.min"' can be used, corresponding to the minimum of the cross-validation error estimate. If 's' is numeric, these are taken as the actual values of 'lambda' to use. |
... |
Not used. |
Returns the coefficients at the specified 'lambda' values.
set.seed(315) n <- 100 p <- 400 x1 <- matrix(rnorm(n / 2 * p, -0.25, 0.1), n / 2) x2 <- matrix(rnorm(n / 2 * p, 0.25, 0.1), n / 2) x <- rbind(x1, x2) beta <- 0.1 * rnorm(p) prob <- plogis(c(x %*% beta)) y <- 2 * rbinom(n, 1, prob) - 1 cv.fit <- cv.hdsvm(x, y, lam2 = 0.01) coef(cv.fit, s = c(0.02, 0.03))set.seed(315) n <- 100 p <- 400 x1 <- matrix(rnorm(n / 2 * p, -0.25, 0.1), n / 2) x2 <- matrix(rnorm(n / 2 * p, 0.25, 0.1), n / 2) x <- rbind(x1, x2) beta <- 0.1 * rnorm(p) prob <- plogis(c(x %*% beta)) y <- 2 * rbinom(n, 1, prob) - 1 cv.fit <- cv.hdsvm(x, y, lam2 = 0.01) coef(cv.fit, s = c(0.02, 0.03))
Retrieves coefficients at specified values of 'lambda' from a fitted 'cv.nc.hdsvm()' model. Utilizes the stored '"nchdsvm.fit"' object and the optimal 'lambda' values determined during the cross-validation process.
## S3 method for class 'cv.nc.hdsvm' coef(object, s = c("lambda.1se", "lambda.min"), ...)## S3 method for class 'cv.nc.hdsvm' coef(object, s = c("lambda.1se", "lambda.min"), ...)
object |
A fitted 'cv.nc.hdsvm()' object from which coefficients are to be extracted. |
s |
Specifies the 'lambda' values at which coefficients are requested. The default is 's = "lambda.1se"', representing the largest 'lambda' such that the cross-validation error estimate is within one standard error of the minimum. Alternatively, 's = "lambda.min"' corresponds to the 'lambda' yielding the minimum cross-validation error. If 's' is numeric, these values are directly used as the 'lambda' values for coefficient extraction. |
... |
Not used. |
Returns a vector or matrix of coefficients corresponding to the specified 'lambda' values.
cv.nc.hdsvm, predict.cv.nc.hdsvm
set.seed(315) n <- 100 p <- 400 x1 <- matrix(rnorm(n / 2 * p, -0.25, 0.1), n / 2) x2 <- matrix(rnorm(n / 2 * p, 0.25, 0.1), n / 2) x <- rbind(x1, x2) beta <- 0.1 * rnorm(p) prob <- plogis(c(x %*% beta)) y <- 2 * rbinom(n, 1, prob) - 1 lam2 <- 0.01 lambda <- 10^(seq(1,-4, length.out = 30)) cv.nc.fit <- cv.nc.hdsvm(x = x, y = y, lambda = lambda, lam2 = lam2, pen = "scad") coef(cv.nc.fit, s = c(0.02, 0.03))set.seed(315) n <- 100 p <- 400 x1 <- matrix(rnorm(n / 2 * p, -0.25, 0.1), n / 2) x2 <- matrix(rnorm(n / 2 * p, 0.25, 0.1), n / 2) x <- rbind(x1, x2) beta <- 0.1 * rnorm(p) prob <- plogis(c(x %*% beta)) y <- 2 * rbinom(n, 1, prob) - 1 lam2 <- 0.01 lambda <- 10^(seq(1,-4, length.out = 30)) cv.nc.fit <- cv.nc.hdsvm(x = x, y = y, lambda = lambda, lam2 = lam2, pen = "scad") coef(cv.nc.fit, s = c(0.02, 0.03))
Retrieves the coefficients at specified values of 'lambda' from a fitted 'hdsvm()' model.
## S3 method for class 'hdsvm' coef(object, s = NULL, type = c("coefficients", "nonzero"), ...)## S3 method for class 'hdsvm' coef(object, s = NULL, type = c("coefficients", "nonzero"), ...)
object |
Fitted 'hdsvm()' object. |
s |
Values of the penalty parameter 'lambda' for which coefficients are requested. Defaults to the entire sequence used during the model fit. |
type |
Type of prediction required. Type '"coefficients"' computes the coefficients at the requested
values for 's'. Type '"nonzero"' returns a list of the indices of the nonzero coefficients for each
value of |
... |
Not used. |
This function extracts coefficients for specified 'lambda' values from a 'hdsvm()' object. If 's', the vector of 'lambda' values, contains values not originally used in the model fitting, the 'coef' function employs linear interpolation between the closest 'lambda' values from the original sequence to estimate coefficients at the new 'lambda' values.
Returns a matrix or vector of coefficients corresponding to the specified 'lambda' values.
set.seed(315) n <- 100 p <- 400 x1 <- matrix(rnorm(n / 2 * p, -0.25, 0.1), n / 2) x2 <- matrix(rnorm(n / 2 * p, 0.25, 0.1), n / 2) x <- rbind(x1, x2) beta <- 0.1 * rnorm(p) prob <- plogis(c(x %*% beta)) y <- 2 * rbinom(n, 1, prob) - 1 lam2 <- 0.01 fit <- hdsvm(x, y, lam2=lam2) coefs <- coef(fit, s = fit$lambda[3:5])set.seed(315) n <- 100 p <- 400 x1 <- matrix(rnorm(n / 2 * p, -0.25, 0.1), n / 2) x2 <- matrix(rnorm(n / 2 * p, 0.25, 0.1), n / 2) x <- rbind(x1, x2) beta <- 0.1 * rnorm(p) prob <- plogis(c(x %*% beta)) y <- 2 * rbinom(n, 1, prob) - 1 lam2 <- 0.01 fit <- hdsvm(x, y, lam2=lam2) coefs <- coef(fit, s = fit$lambda[3:5])
Retrieves the coefficients at specified values of 'lambda' from a fitted 'nc.hdsvm()' model.
## S3 method for class 'nc.hdsvm' coef(object, s = NULL, type = c("coefficients", "nonzero"), ...)## S3 method for class 'nc.hdsvm' coef(object, s = NULL, type = c("coefficients", "nonzero"), ...)
object |
Fitted 'nc.hdsvm()' object. |
s |
Values of the penalty parameter 'lambda' for which coefficients are requested. Defaults to the entire sequence used during the model fit. |
type |
Type of prediction required. Type '"coefficients"' computes the coefficients at the requested
values for 's'. Type '"nonzero"' returns a list of the indices of the nonzero coefficients for each
value of |
... |
Not used. |
This function extracts coefficients for specified 'lambda' values from a 'nc.hdsvm()' object. If 's', the vector of 'lambda' values, contains values not originally used in the model fitting, the 'coef' function employs linear interpolation between the closest 'lambda' values from the original sequence to estimate coefficients at the new 'lambda' values.
Returns a matrix or vector of coefficients corresponding to the specified 'lambda' values.
set.seed(315) n <- 100 p <- 400 x1 <- matrix(rnorm(n / 2 * p, -0.25, 0.1), n / 2) x2 <- matrix(rnorm(n / 2 * p, 0.25, 0.1), n / 2) x <- rbind(x1, x2) beta <- 0.1 * rnorm(p) prob <- plogis(c(x %*% beta)) y <- 2 * rbinom(n, 1, prob) - 1 lam2 <- 0.01 lambda <- 10^(seq(1,-4, length.out = 30)) nc.fit <- nc.hdsvm(x = x, y = y, lambda = lambda, lam2 = lam2, pen = "scad") nc.coefs <- coef(nc.fit, s = nc.fit$lambda[3:5])set.seed(315) n <- 100 p <- 400 x1 <- matrix(rnorm(n / 2 * p, -0.25, 0.1), n / 2) x2 <- matrix(rnorm(n / 2 * p, 0.25, 0.1), n / 2) x <- rbind(x1, x2) beta <- 0.1 * rnorm(p) prob <- plogis(c(x %*% beta)) y <- 2 * rbinom(n, 1, prob) - 1 lam2 <- 0.01 lambda <- 10^(seq(1,-4, length.out = 30)) nc.fit <- nc.hdsvm(x = x, y = y, lambda = lambda, lam2 = lam2, pen = "scad") nc.coefs <- coef(nc.fit, s = nc.fit$lambda[3:5])
Performs k-fold cross-validation for hdsvm.
cv.hdsvm(x, y, lambda = NULL, nfolds = 5L, foldid, ...)cv.hdsvm(x, y, lambda = NULL, nfolds = 5L, foldid, ...)
x |
A numerical matrix with |
y |
Response variable. |
lambda |
Optional; a user-supplied sequence of |
nfolds |
Number of folds for cross-validation. Defaults to 5. |
foldid |
Optional vector specifying the indices of observations in each fold.
If provided, it overrides |
... |
Additional arguments passed to |
This function computes the average cross-validation error and provides the standard error.
An object with S3 class cv.hdsvm consisting of
lambda |
Candidate |
cvm |
Mean cross-validation error. |
cvsd |
Standard error of the mean cross-validation error. |
cvup |
Upper confidence curve: |
cvlo |
Lower confidence curve: |
lambda.min |
|
lambda.1se |
Largest |
cv.min |
Cross-validation error at |
cv.1se |
Cross-validation error at |
hdsvm.fit |
a fitted |
nzero |
Number of non-zero coefficients at each |
set.seed(315) n <- 100 p <- 400 x1 <- matrix(rnorm(n / 2 * p, -0.25, 0.1), n / 2) x2 <- matrix(rnorm(n / 2 * p, 0.25, 0.1), n / 2) x <- rbind(x1, x2) beta <- 0.1 * rnorm(p) prob <- plogis(c(x %*% beta)) y <- 2 * rbinom(n, 1, prob) - 1 lam2 <- 0.01 fit <- cv.hdsvm(x, y, lam2=lam2)set.seed(315) n <- 100 p <- 400 x1 <- matrix(rnorm(n / 2 * p, -0.25, 0.1), n / 2) x2 <- matrix(rnorm(n / 2 * p, 0.25, 0.1), n / 2) x <- rbind(x1, x2) beta <- 0.1 * rnorm(p) prob <- plogis(c(x %*% beta)) y <- 2 * rbinom(n, 1, prob) - 1 lam2 <- 0.01 fit <- cv.hdsvm(x, y, lam2=lam2)
Conducts k-fold cross-validation for the nc.hdsvm function.
cv.nc.hdsvm(x, y, lambda = NULL, nfolds = 5L, foldid, ...)cv.nc.hdsvm(x, y, lambda = NULL, nfolds = 5L, foldid, ...)
x |
A numerical matrix with dimensions ( |
y |
Response variable. |
lambda |
Optional user-supplied sequence of |
nfolds |
Number of folds in the cross-validation, default is 5. |
foldid |
An optional vector that assigns each observation to a specific fold.
If provided, this parameter overrides |
... |
Additional arguments passed to |
This function estimates the average cross-validation error and its standard error across folds. It is primarily used to
identify the optimal lambda value for fitting nonconvex penalized SVM models.
An object of class cv.nc.hdsvm is returned,
which is a list with the ingredients of the cross-validated fit.
lambda |
the values of |
cvm |
the mean cross-validated error - a vector of length |
cvsd |
estimate of standard error of |
cvupper |
upper curve = |
cvlower |
lower curve = |
nzero |
number of non-zero coefficients at each |
name |
a text string indicating type of measure (for plotting purposes). |
nchdsvm.fit |
a fitted |
lambda.min |
The optimal value of |
lambda.1se |
The largest value of |
set.seed(315) n <- 100 p <- 400 x1 <- matrix(rnorm(n / 2 * p, -0.25, 0.1), n / 2) x2 <- matrix(rnorm(n / 2 * p, 0.25, 0.1), n / 2) x <- rbind(x1, x2) beta <- 0.1 * rnorm(p) prob <- plogis(c(x %*% beta)) y <- 2 * rbinom(n, 1, prob) - 1 lam2 <- 0.01 lambda <- 10^(seq(1,-4, length.out=30)) cv.nc.fit <- cv.nc.hdsvm(x=x, y=y, lambda=lambda, lam2=lam2, pen="scad")set.seed(315) n <- 100 p <- 400 x1 <- matrix(rnorm(n / 2 * p, -0.25, 0.1), n / 2) x2 <- matrix(rnorm(n / 2 * p, 0.25, 0.1), n / 2) x <- rbind(x1, x2) beta <- 0.1 * rnorm(p) prob <- plogis(c(x %*% beta)) y <- 2 * rbinom(n, 1, prob) - 1 lam2 <- 0.01 lambda <- 10^(seq(1,-4, length.out=30)) cv.nc.fit <- cv.nc.hdsvm(x=x, y=y, lambda=lambda, lam2=lam2, pen="scad")
Fits a penalized support vector machine (SVM) model using a range of lambda values,
allowing for detailed control over regularization parameters and model complexity.
hdsvm( x, y, nlambda = 100, lambda.factor = ifelse(nobs < nvars, 0.01, 1e-04), lambda = NULL, lam2 = 0, hval = 1, pf = rep(1, nvars), pf2 = rep(1, nvars), exclude, dfmax = nvars + 1, pmax = min(dfmax * 1.2, nvars), standardize = TRUE, eps = 1e-08, maxit = 1e+06, sigma = 0.9, is_exact = FALSE )hdsvm( x, y, nlambda = 100, lambda.factor = ifelse(nobs < nvars, 0.01, 1e-04), lambda = NULL, lam2 = 0, hval = 1, pf = rep(1, nvars), pf2 = rep(1, nvars), exclude, dfmax = nvars + 1, pmax = min(dfmax * 1.2, nvars), standardize = TRUE, eps = 1e-08, maxit = 1e+06, sigma = 0.9, is_exact = FALSE )
x |
Matrix of predictors, with dimensions ( |
y |
Response variable vector of length |
nlambda |
Number of |
lambda.factor |
The factor for getting the minimal value
in the |
lambda |
A user-supplied |
lam2 |
Regularization parameter |
hval |
Smoothing parameter for the smoothed hinge loss, default is 1. |
pf |
L1 penalty factor of length |
pf2 |
L2 penalty factor of length |
exclude |
Indices of variables to be excluded from the model. Default is none. Equivalent to an infinite penalty factor. |
dfmax |
The maximum number of variables allowed in the model.
Useful for very large |
pmax |
Maximum count of non-zero coefficients across the solution path. |
standardize |
Logical flag for variable standardization,
prior to fitting the model sequence. The coefficients are
always returned to the original scale. Default is |
eps |
Convergence criterion for stopping the algorithm. |
maxit |
Maximum number of iterations permitted. |
sigma |
Penalty parameter in the quadratic term of the augmented Lagrangian. |
is_exact |
If |
The function utilizes the hinge loss function combined with elastic net penalization:
where denotes the Hadamard product.
For faster computation, if the algorithm is not converging or
running slow, consider increasing eps, increasing
sigma, decreasing nlambda, or increasing
lambda.factor before increasing maxit.
An object with S3 class hdsvm consisting of
call |
the call that produced this object |
b0 |
intercept sequence of length |
beta |
a |
lambda |
the actual sequence of |
df |
the number of nonzero coefficients for each value
of |
npasses |
the number of iterations for every lambda value |
jerr |
error flag, for warnings and errors, 0 if no error. |
set.seed(315) n <- 100 p <- 400 x1 <- matrix(rnorm(n / 2 * p, -0.25, 0.1), n / 2) x2 <- matrix(rnorm(n / 2 * p, 0.25, 0.1), n / 2) x <- rbind(x1, x2) beta <- 0.1 * rnorm(p) prob <- plogis(c(x %*% beta)) y <- 2 * rbinom(n, 1, prob) - 1 lam2 <- 0.01 fit <- hdsvm(x, y, lam2=lam2)set.seed(315) n <- 100 p <- 400 x1 <- matrix(rnorm(n / 2 * p, -0.25, 0.1), n / 2) x2 <- matrix(rnorm(n / 2 * p, 0.25, 0.1), n / 2) x <- rbind(x1, x2) beta <- 0.1 * rnorm(p) prob <- plogis(c(x %*% beta)) y <- 2 * rbinom(n, 1, prob) - 1 lam2 <- 0.01 fit <- hdsvm(x, y, lam2=lam2)
This function fits the penalized SVM using nonconvex penalties such as SCAD or MCP. It allows for flexible control over the regularization parameters and offers advanced options for initializing and optimizing the fit.
nc.hdsvm( x, y, lambda, pen = "scad", aval = NULL, lam2 = 1, ini_beta = NULL, lla_step = 3, ... )nc.hdsvm( x, y, lambda, pen = "scad", aval = NULL, lam2 = 1, ini_beta = NULL, lla_step = 3, ... )
x |
Matrix of predictors, with dimensions (nobs * nvars); each row represents an observation. |
y |
Response variable, with length |
lambda |
Optional user-supplied sequence of |
pen |
Specifies the type of nonconvex penalty: "SCAD" or "MCP". |
aval |
The parameter value for the SCAD or MCP penalty. Default is 3.7 for SCAD and 2 for MCP. |
lam2 |
Regularization parameter |
ini_beta |
Optional initial coefficients to start the fitting process. |
lla_step |
Number of Local Linear Approximation (LLA) steps. Default is 3. |
... |
Additional arguments passed to |
An object with S3 class nc.hdsvm consisting of
call |
the call that produced this object |
b0 |
intercept sequence of length |
beta |
a |
lambda |
the actual sequence of |
df |
the number of nonzero coefficients for each value
of |
npasses |
the number of iterations for every lambda value |
jerr |
error flag, for warnings and errors, 0 if no error. |
#'
set.seed(315) n <- 100 p <- 400 x1 <- matrix(rnorm(n / 2 * p, -0.25, 0.1), n / 2) x2 <- matrix(rnorm(n / 2 * p, 0.25, 0.1), n / 2) x <- rbind(x1, x2) beta <- 0.1 * rnorm(p) prob <- plogis(c(x %*% beta)) y <- 2 * rbinom(n, 1, prob) - 1 lam2 <- 0.01 lambda <- 10^(seq(1,-4, length.out = 30)) nc.fit <- nc.hdsvm(x = x, y = y, lambda = lambda, lam2 = lam2, pen = "scad")set.seed(315) n <- 100 p <- 400 x1 <- matrix(rnorm(n / 2 * p, -0.25, 0.1), n / 2) x2 <- matrix(rnorm(n / 2 * p, 0.25, 0.1), n / 2) x <- rbind(x1, x2) beta <- 0.1 * rnorm(p) prob <- plogis(c(x %*% beta)) y <- 2 * rbinom(n, 1, prob) - 1 lam2 <- 0.01 lambda <- 10^(seq(1,-4, length.out = 30)) nc.fit <- nc.hdsvm(x = x, y = y, lambda = lambda, lam2 = lam2, pen = "scad")
Generates predictions using a fitted 'cv.hdsvm()' object. This function utilizes the stored 'hdsvm.fit' object and an optimal value of 'lambda' determined during the cross-validation process.
## S3 method for class 'cv.hdsvm' predict( object, newx, s = c("lambda.1se", "lambda.min"), type = c("class", "loss"), ... )## S3 method for class 'cv.hdsvm' predict( object, newx, s = c("lambda.1se", "lambda.min"), type = c("class", "loss"), ... )
object |
A fitted 'cv.hdsvm()' object from which predictions are to be made. |
newx |
Matrix of new predictor values for which predictions are desired. This must be a matrix and is a required argument. |
s |
Specifies the value(s) of the penalty parameter 'lambda' at which predictions are desired. The default is 's = "lambda.1se"', representing the largest value of 'lambda' such that the cross-validation error estimate is within one standard error of the minimum. Alternatively, 's = "lambda.min"' can be used, corresponding to the minimum of the cross-validation error estimate. If 's' is numeric, these are taken as the actual values of 'lambda' to use for predictions. |
type |
Type of prediction required. Type '"class"' produces the predicted binary class labels and
type '"loss"' returns the fitted values. Default is |
... |
Not used. |
Returns a matrix or vector of predicted values corresponding to the specified 'lambda' values.
set.seed(315) n <- 100 p <- 400 x1 <- matrix(rnorm(n / 2 * p, -0.25, 0.1), n / 2) x2 <- matrix(rnorm(n / 2 * p, 0.25, 0.1), n / 2) x <- rbind(x1, x2) beta <- 0.1 * rnorm(p) prob <- plogis(c(x %*% beta)) y <- 2 * rbinom(n, 1, prob) - 1 cv.fit <- cv.hdsvm(x, y, lam2 = 0.01) predict(cv.fit, newx = x[50:60, ], s = "lambda.min")set.seed(315) n <- 100 p <- 400 x1 <- matrix(rnorm(n / 2 * p, -0.25, 0.1), n / 2) x2 <- matrix(rnorm(n / 2 * p, 0.25, 0.1), n / 2) x <- rbind(x1, x2) beta <- 0.1 * rnorm(p) prob <- plogis(c(x %*% beta)) y <- 2 * rbinom(n, 1, prob) - 1 cv.fit <- cv.hdsvm(x, y, lam2 = 0.01) predict(cv.fit, newx = x[50:60, ], s = "lambda.min")
Generates predictions using a fitted 'cv.nc.hdsvm()' object. This function utilizes the stored 'nchdsvm.fit' object and an optimal value of 'lambda' determined during the cross-validation process.
## S3 method for class 'cv.nc.hdsvm' predict( object, newx, s = c("lambda.1se", "lambda.min"), type = c("class", "loss"), ... )## S3 method for class 'cv.nc.hdsvm' predict( object, newx, s = c("lambda.1se", "lambda.min"), type = c("class", "loss"), ... )
object |
A fitted 'cv.nc.hdsvm()' object from which predictions are to be made. |
newx |
Matrix of new predictor values for which predictions are desired. This must be a matrix and is a required argument. |
s |
Specifies the value(s) of the penalty parameter 'lambda' at which predictions are desired. The default is 's = "lambda.1se"', representing the largest value of 'lambda' such that the cross-validation error estimate is within one standard error of the minimum. Alternatively, 's = "lambda.min"' can be used, corresponding to the minimum of the cross-validation error estimate. If 's' is numeric, these are taken as the actual values of 'lambda' to use for predictions. |
type |
Type of prediction required. Type '"class"' produces the predicted binary class labels and
type '"loss"' returns the fitted values. Default is |
... |
Not used. |
Returns a matrix or vector of predicted values corresponding to the specified 'lambda' values.
cv.nc.hdsvm, predict.cv.nc.hdsvm
set.seed(315) n <- 100 p <- 400 x1 <- matrix(rnorm(n / 2 * p, -0.25, 0.1), n / 2) x2 <- matrix(rnorm(n / 2 * p, 0.25, 0.1), n / 2) x <- rbind(x1, x2) beta <- 0.1 * rnorm(p) prob <- plogis(c(x %*% beta)) y <- 2 * rbinom(n, 1, prob) - 1 lam2 <- 0.01 lambda <- 10^(seq(1,-4, length.out = 30)) cv.nc.fit <- cv.nc.hdsvm(x = x, y = y, lambda = lambda, lam2 = lam2, pen = "scad") predict(cv.nc.fit, newx = x[50:60, ], s = "lambda.min")set.seed(315) n <- 100 p <- 400 x1 <- matrix(rnorm(n / 2 * p, -0.25, 0.1), n / 2) x2 <- matrix(rnorm(n / 2 * p, 0.25, 0.1), n / 2) x <- rbind(x1, x2) beta <- 0.1 * rnorm(p) prob <- plogis(c(x %*% beta)) y <- 2 * rbinom(n, 1, prob) - 1 lam2 <- 0.01 lambda <- 10^(seq(1,-4, length.out = 30)) cv.nc.fit <- cv.nc.hdsvm(x = x, y = y, lambda = lambda, lam2 = lam2, pen = "scad") predict(cv.nc.fit, newx = x[50:60, ], s = "lambda.min")
Produces fitted values for new predictor data using a fitted 'hdsvm()' object.
## S3 method for class 'hdsvm' predict(object, newx, s = NULL, type = c("class", "loss"), ...)## S3 method for class 'hdsvm' predict(object, newx, s = NULL, type = c("class", "loss"), ...)
object |
Fitted 'hdsvm()' object from which predictions are to be derived. |
newx |
Matrix of new predictor values for which predictions are desired. This must be a matrix and is a required argument. |
s |
Values of the penalty parameter 'lambda' for which predictions are requested. Defaults to the entire sequence used during the model fit. |
type |
Type of prediction required. Type '"class"' produces the predicted binary class labels and
type '"loss"' returns the fitted values. Default is |
... |
Not used. |
This function generates predictions at specified 'lambda' values from a fitted 'hdsvm()' object. It is essential to provide a new matrix of predictor values ('newx') at which these predictions are to be made.
Returns a vector or matrix of predicted values corresponding to the specified 'lambda' values.
set.seed(315) n <- 100 p <- 400 x1 <- matrix(rnorm(n / 2 * p, -0.25, 0.1), n / 2) x2 <- matrix(rnorm(n / 2 * p, 0.25, 0.1), n / 2) x <- rbind(x1, x2) beta <- 0.1 * rnorm(p) prob <- plogis(c(x %*% beta)) y <- 2 * rbinom(n, 1, prob) - 1 lam2 <- 0.01 fit <- hdsvm(x, y, lam2=lam2) preds <- predict(fit, newx = tail(x), s = fit$lambda[3:5])set.seed(315) n <- 100 p <- 400 x1 <- matrix(rnorm(n / 2 * p, -0.25, 0.1), n / 2) x2 <- matrix(rnorm(n / 2 * p, 0.25, 0.1), n / 2) x <- rbind(x1, x2) beta <- 0.1 * rnorm(p) prob <- plogis(c(x %*% beta)) y <- 2 * rbinom(n, 1, prob) - 1 lam2 <- 0.01 fit <- hdsvm(x, y, lam2=lam2) preds <- predict(fit, newx = tail(x), s = fit$lambda[3:5])
Produces fitted values for new predictor data using a fitted 'nc.hdsvm()' object.
## S3 method for class 'nc.hdsvm' predict(object, newx, s = NULL, type = c("class", "loss"), ...)## S3 method for class 'nc.hdsvm' predict(object, newx, s = NULL, type = c("class", "loss"), ...)
object |
Fitted 'nc.hdsvm()' object from which predictions are to be derived. |
newx |
Matrix of new predictor values for which predictions are desired. This must be a matrix and is a required argument. |
s |
Values of the penalty parameter 'lambda' for which predictions are requested. Defaults to the entire sequence used during the model fit. |
type |
Type of prediction required. Type '"class"' produces the predicted binary class labels and
type '"loss"' returns the fitted values. Default is |
... |
Not used. |
This function generates predictions at specified 'lambda' values from a fitted 'nc.hdsvm()' object. It is essential to provide a new matrix of predictor values ('newx') at which these predictions are to be made.
Returns a vector or matrix of predicted values corresponding to the specified 'lambda' values.
set.seed(315) n <- 100 p <- 400 x1 <- matrix(rnorm(n / 2 * p, -0.25, 0.1), n / 2) x2 <- matrix(rnorm(n / 2 * p, 0.25, 0.1), n / 2) x <- rbind(x1, x2) beta <- 0.1 * rnorm(p) prob <- plogis(c(x %*% beta)) y <- 2 * rbinom(n, 1, prob) - 1 lam2 <- 0.01 lambda <- 10^(seq(1,-4, length.out = 30)) nc.fit <- nc.hdsvm(x = x, y = y, lambda = lambda, lam2 = lam2, pen = "scad") nc.preds <- predict(nc.fit, newx = tail(x), s = nc.fit$lambda[3:5])set.seed(315) n <- 100 p <- 400 x1 <- matrix(rnorm(n / 2 * p, -0.25, 0.1), n / 2) x2 <- matrix(rnorm(n / 2 * p, 0.25, 0.1), n / 2) x <- rbind(x1, x2) beta <- 0.1 * rnorm(p) prob <- plogis(c(x %*% beta)) y <- 2 * rbinom(n, 1, prob) - 1 lam2 <- 0.01 lambda <- 10^(seq(1,-4, length.out = 30)) nc.fit <- nc.hdsvm(x = x, y = y, lambda = lambda, lam2 = lam2, pen = "scad") nc.preds <- predict(nc.fit, newx = tail(x), s = nc.fit$lambda[3:5])