sieve.sgd.solver {Sieve} | R Documentation |
Fit sieve-SGD estimators, using progressive validation for hyperparameter tuning.
Description
Fit sieve-SGD estimators, using progressive validation for hyperparameter tuning.
Usage
sieve.sgd.solver(sieve.model, X, Y, cv_weight_rate = 1)
Arguments
sieve.model |
a list initiated using sieve.sgd.preprocess. Check the documentation of sieve.sgd.preprocess for more information. |
X |
a data frame containing prediction features/ independent variables. |
Y |
training outcome. |
cv_weight_rate |
this governs the divergence rate of rolling validation statistics. Default is set to be 1 and in general does not need to be changed. |
Value
A list. It contains the fitted regression coefficients and progressive validation statistics for each hyperparameter combination.
s.size.sofar |
a number. Number of samples has been processed so far. |
type |
a string. The type of basis funtion. |
hyper.para.list |
a list of hyperparameters. |
index.matrix |
a matrix. Identifies the multivariate basis functions used in fitting. |
index.row.prod |
the index product for each basis function. It is used in calculating basis function - specific learning rates. |
inf.list |
a list storing the fitted results. It has a length of "number of unique combinations of the hyperparameters". The component of inf.list is itself a list, it has a hyper.para.index domain to specify its corresponding hyperparameters (need to be used together with hyper.para.list). Its rolling.cv domain is the progressive validation statistics for hyperparameter tuning; beta.f is the regression coefficients for the first length(beta.f) basis functions, the rest of the basis have 0 coefficients. |
norm_para |
a matrix. It records how each dimension of the feature/predictor is rescaled, which is useful when rescaling the testing sample's predictors. |
Examples
frho.para <- xdim <- 1 ##predictor dimension
frho <- 'additive' ###truth is a sum of absolute functions
type <- 'cosine' ###use cosine functions as the basis functions
#generate training data
TrainData <- GenSamples(s.size = 1e3, xdim = xdim,
frho.para = frho.para,
frho = frho, noise.para = 0.1)
#preprocess the model
sieve.model <- sieve.sgd.preprocess(X = TrainData[,2:(xdim+1)],
type = type,
s = c(1,2),
r0 = c(0.5, 2, 4),
J = c(1, 4, 8))
##train the model
sieve.model <- sieve.sgd.solver(sieve.model = sieve.model,
X = TrainData[,2:(xdim+1)],
Y = TrainData[,1])
##sieve-SGD can do multiple passes over the data, just like other SGD methods.
##usually a second pass can still improve the prediction accuracy
##watch out overfitting when performing multiple passes!
sieve.model <- sieve.sgd.solver(sieve.model = sieve.model,
X = TrainData[,2:(xdim+1)],
Y = TrainData[,1])