Skip to contents

The following arguments can be used to adjust the GIST optimization. See Gong, P., Zhang, C., Lu, Z., Huang, J., & Ye, J. (2013). A General Iterative Shrinkage and Thresholding Algorithm for Non-convex Regularized Optimization Problems. Proceedings of the 30th International Conference on Machine Learning, 28(2)(2), 37–45. for more details.

Usage

controlGIST(
  forceCpptsem = FALSE,
  stepSize = 1,
  sig = 10^(-5),
  maxIter_out = 100,
  maxIter_in = 1000,
  break_outer = c(fitChange = 10^(-5)),
  eta = 2,
  stepsizeMin = 1/(10^30),
  stepsizeMax = 10^30,
  GISTLinesearchCriterion = "monotone",
  GISTNonMonotoneNBack = 5,
  approxFirst = TRUE,
  numStart = 0,
  nMultistart = 5,
  controlApproxOptimizer = controlRsolnp(nudgeVariancesLambda = 0.2, nudgeVariancesTarget
    = log(0.4), control = list(outer.iter = 50, trace = 0))
)

Arguments

forceCpptsem

should cpptsem be enforced even if results differ from ctsem? Sometimes differences between cpptsem and ctsem can result from problems with numerical precision which will lead to the matrix exponential of RcppArmadillo differing from the OpenMx matrix exponential. If you want to ensure the faster optimization, set to TRUE. See vignette("MatrixExponential", package = "regCtsem") for more details

stepSize

initial step size of the outer iteration

sig

sigma value in Gong et al. (2013). Sigma controls the inner stopping criterion and must be in (0,1). Generally, a larger sigma enforce a steeper decrease in the regularized likelihood while a smaller sigma will result in faster acceptance of the inner iteration.

maxIter_out

Maximal number of outer iterations

maxIter_in

Maximal number of inner iterations

break_outer

Stopping criterion for outer iterations; has to be a named value. By default the change in fit is used, with c("fitChange" = 1e-5) meaning that this change should be smaller than 1e-5. Additionally, a relative change in parameters is used as breaking criterion c("parameterChange" = .00001). Alternatively (name: gradient), a relative first-order condition is checked, where the maximum absolute value of the gradients is compared to break_outer (see https://de.mathworks.com/help/optim/ug/first-order-optimality-measure.html). Example: c("gradient" = "max(max(abs(startingValues))*.001, .001)") . Alternatively, an absolute tolerance can be passed to the function (e.g., break_outer = c("gradient" = .0001)).

eta

if the current step size fails, eta will decrease the step size. Must be > 1

stepsizeMin

Minimal acceptable step size. Must be > 0. A larger number corresponds to a smaller step from one to the next iteration. All step sizes will be computed as described by Gong et al. (2013)

stepsizeMax

Maximal acceptable step size. Must be > stepsizeMin. A larger number corresponds to a smaller step from one to the next iteration. All step sizes will be computed as described by Gong et al. (2013)

GISTLinesearchCriterion

criterion for accepting a step. Possible are 'monotone' which enforces a monotone decrease in the objective function or 'non-monotone' which also accepts some increase.

GISTNonMonotoneNBack

in case of non-monotone line search: Number of preceding regM2LL values to consider

approxFirst

Should approximate optimization be used first to obtain start values for exact optimization?

numStart

Used if approxFirst = 3. regCtsem will try numStart+2 starting values (+2 because it will always try the current best and the parameters provided in sparseParameters)

nMultistart

controls how many different starting values are tried when estimating lambda_max

controlApproxOptimizer

settings passed to the optimizer in approximate optimization. Currently, Rsolnp and optimx are supported. See ?controlOptimx and ?controlSolnp for details on the lists passed to controlApprox