seq_cat_model: The sequential logistic regression model for...

Description Usage Arguments Details Value References See Also Examples

View source: R/seq_cat_model.R

Description

seq_cat_model chooses the subjects sequentially by the logistic regression model for the categorical case.

Usage

1
2
seq_cat_model(labeled_ids, unlabeled_ids, splitted, newY, train, data,
  d = 0.8, adaptive = "random")

Arguments

labeled_ids

A numeric vector for the unique identification of the labeled dataset.

unlabeled_ids

A numeric vector for the unique identification of the unlabeled dataset.

splitted

A list containing the datasets which we will use in the categorical case. Note that the element of the splitted is the collections of samples from Classes 0 and Classes k.

newY

A numeric number denotes the value of the labels from 0 to K which is the number of categories.

train

A matrix for the labeled samples. Note that the indices of the samples in the train dataset is the same as the labeled_ids.

data

A matrix denotes all the data including the labeled samples and the unlabeled samples. Note that the first column of the dataset is the response variable, that's the labels and the rest is the explanatory variables.

d

A numeric number specifying the length of the fixed size confidence set for our model. The default value is 0.8.

adaptive

A character string that determines the sample selection criterion to be used, matching one of 'random' or 'A_optimal The default value is 'random'.

Details

seq_cat_model is a multinomial logistic regression model that estimate the coefficient of the explanatory variables and determines the samples sequentially from original training data set given the fixed size confidence set under the categorical case. Note that there are two methods to select the samples. One sampling method is random sampling while another is the A-optimality criterion which seeks to minimize the trace of the inverse of the information matrix. In addition, we will use the special model: the individualized binary logistic regression. We will use the specific model to only fit two subgroups of the all dataset and get the estimated coefficient and decide whether to stop sampling. If it shows that we need to continue, we will use one of the samepling method above to pick the sample. Note that if the method is A-optimality, we will pick the most informative subjects.

Value

a list containing the following components

d

the length of the fixed size confidence set that we specify

n

the current sample size when the stopping criterion is satisfied

is_stopped

the label of sequential iterations stop or not. When the value of is_stopped is TRUE, it means the iteration stops

beta_est

the estimated coeffificent when the criterion is safisfied

cov

the covariance matrix between the estimated parameters

adaptive

the sample selection criterion we used

References

Li, J., Chen, Z., Wang, Z., & Chang, Y. I. (2020). Active learning in multiple-class classification problems via individualized binary models. Computational Statistics & Data Analysis, 145, 106911. doi:10.1016/j.csda.2020.106911

See Also

seq_GEE_model for generalized estimating equations case

seq_bin_model for binary classification case

seq_ord_model for ordinal case.

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
# generate the toy example
beta <- matrix(c(1,2,1,-1,1,2), ncol=2)
res <-  gen_multi_data(beta, N = 10000, type = 'cat', test_ratio = 0.3)
train_id <- res$train_id
train <- res$train
test <- res$test
res <- init_multi_data(train_id, train, init_N = 300, type = 'cat')
splitted <- res$splitted
train <- res$train
newY <- res$newY
labeled_ids <- res$labeled_ids
unlabeled_ids <- res$unlabeled_ids
data <- res$data

# use seq_cat_model to multi-classification problem under the categorical case.
# You can remove '#' to run the command.
# start_time <- Sys.time()
# logitA_cat <- seq_cat_model(labeled_ids, unlabeled_ids, splitted, newY,
#                             train, data, d = 0.5, adaptive = "A_optimal")
# logitA_cat$time <- as.numeric(Sys.time() - start_time, units = "mins")
# print(logitA_cat)

seqest documentation built on July 2, 2020, 2:28 a.m.

Related to seq_cat_model in seqest...