Finds the optimal regulariztion parameters using cross-validation for edgenet. We use the BOBYQA algorithm to find the optimial regularization parameters in a cross-validation framework.
cv_edgenet(
X,
Y,
G.X = NULL,
G.Y = NULL,
lambda = NA_real_,
psigx = NA_real_,
psigy = NA_real_,
thresh = 1e-05,
maxit = 1e+05,
learning.rate = 0.01,
family = gaussian,
optim.thresh = 0.01,
optim.maxit = 100,
lambda_range = seq(0, 2, length.out = 10),
psigx_range = seq(0, 500, length.out = 10),
psigy_range = seq(0, 500, length.out = 10),
nfolds = 2,
cv_method = c("grid_search", "grid_search_lsf", "optim"),
tempdir = "."
)
# S4 method for matrix,numeric
cv_edgenet(
X,
Y,
G.X = NULL,
G.Y = NULL,
lambda = NA_real_,
psigx = NA_real_,
psigy = NA_real_,
thresh = 1e-05,
maxit = 1e+05,
learning.rate = 0.01,
family = gaussian,
optim.thresh = 0.01,
optim.maxit = 100,
lambda_range = seq(0, 2, length.out = 10),
psigx_range = seq(0, 500, length.out = 10),
psigy_range = seq(0, 500, length.out = 10),
nfolds = 2,
cv_method = c("grid_search", "grid_search_lsf", "optim"),
tempdir = "."
)
# S4 method for matrix,matrix
cv_edgenet(
X,
Y,
G.X = NULL,
G.Y = NULL,
lambda = NA_real_,
psigx = NA_real_,
psigy = NA_real_,
thresh = 1e-05,
maxit = 1e+05,
learning.rate = 0.01,
family = gaussian,
optim.thresh = 0.01,
optim.maxit = 100,
lambda_range = seq(0, 2, length.out = 10),
psigx_range = seq(0, 500, length.out = 10),
psigy_range = seq(0, 500, length.out = 10),
nfolds = 2,
cv_method = c("grid_search", "grid_search_lsf", "optim"),
tempdir = "."
)
input matrix, of dimension (n
x p
)
where n
is the number of observations and p
is the number
of covariables. Each row is an observation vector.
output matrix, of dimension (n
x q
)
where n
is the number of observations and q
is the number
of response variables Each row is an observation vector.
non-negativ affinity matrix for X
, of dimensions
(p
x p
) where p
is the number of covariables.
Providing a graph G.X
will optimize the regularization
parameter psi.gx
. If this is not desired just set G.X
to
NULL
.
non-negativ affinity matrix for Y
, of dimensions
(q
x q
) where q
is the number of responses Y
.
Providing a graph G.Y
will optimize the regularization
parameter psi.gy
. If this is not desired just set G.Y
to
NULL
.
numerical
shrinkage parameter for LASSO. Per default
this parameter is set to NA_real_
which means that lambda
is going to be estimated
using cross-validation. If any numerical
value for lambda
is set, estimation of the optimal parameter will not be conducted.
numerical
shrinkage parameter for graph-regularization
of G.X
. Per default this parameter is set to
NA_real_
which means that psigx
is going to be estimated
in the cross-validation. If any numerical
value for psigx
is
set, estimation of the optimal parameter will not be conducted.
numerical
shrinkage parameter for graph-regularization
of G.Y
. Per default this parameter is
set to NA_real_
which means that psigy
is
going to be estimated
in the cross-validation. If any numerical
value for psigy
is
set, estimation of the optimal parameter will not be conducted.
numerical
threshold for the optimizer
maximum number of iterations for the optimizer
(integer
)
step size for Adam optimizer (numerical
)
family of response, e.g. gaussian or binomial
numerical
threshold criterion for the
optimization to stop. Usually 1e-3 is a good choice.
the maximum number of iterations for the optimization
(integer
). Usually 1e4 is a good choice.
range of lambda to use in CV grid.
range of psigx to use in CV grid.
range of psigy to use in CV grid.
the number of folds to be used - default is 10.
which cross-validation method to use.
where to store auxiliary files.
An object of class cv_edgenet
the estimated, optimal regularization parameters
optimal estimated value for regularization parameter lambda (or, if provided as argument, the value of the parameter)
optimal estimated value for regularization parameter psigx (or, if provided as argument, the value of the parameter)
optimal estimated value for regularization parameter psigy (or, if provided as argument, the value of the parameter)
names of parameters that were estimated
family used for estimated
an edgenet
object fitted with the optimal, estimated
paramters
the call that produced the object
X <- matrix(rnorm(100 * 10), 100, 10)
b <- matrix(rnorm(100), 10)
G.X <- abs(rWishart(1, 10, diag(10))[, , 1])
G.Y <- abs(rWishart(1, 10, diag(10))[, , 1])
diag(G.X) <- diag(G.Y) <- 0
# estimate the parameters of a Gaussian model
Y <- X %*% b + matrix(rnorm(100 * 10), 100)
## dont use affinity matrices and estimate lambda
fit <- cv_edgenet(
X = X,
Y = Y,
family = gaussian,
maxit = 1,
lambda_range = c(0, 1)
)
#> Warning: executing %dopar% sequentially: no parallel backend registered
#> Loading required package: foreach
#> Loading required package: rngtools
## only provide one matrix and estimate lambda
fit <- cv_edgenet(
X = X,
Y = Y,
G.X = G.X,
psigx = 1,
family = gaussian,
maxit = 1,
lambda_range = c(0, 1)
)
## estimate only lambda with two matrices
fit <- cv_edgenet(
X = X,
Y = Y,
G.X = G.X,
G.Y,
psigx = 1,
psigy = 1,
family = gaussian,
maxit = 1,
lambda_range = c(0, 1)
)
## estimate only psigx
fit <- cv_edgenet(
X = X,
Y = Y,
G.X = G.X,
G.Y,
lambda = 1,
psigy = 1,
family = gaussian,
maxit = 1,
psigx_range = c(0, 1)
)
## estimate all parameters
fit <- cv_edgenet(
X = X,
Y = Y,
G.X = G.X,
G.Y,
family = gaussian,
maxit = 1,
lambda_range = c(0, 1),
psigx_range = c(0, 1),
psigy_range = c(0, 1)
)
## if Y is vectorial, we cannot use an affinity matrix for Y
fit <- cv_edgenet(
X = X,
Y = Y[, 1],
G.X = G.X,
family = gaussian,
maxit = 1,
lambda_range = c(0, 1),
psigx_range = c(0, 1),
)