Title: | Nonparametric Trace Regression via Sign Series Representation |
---|---|
Description: | Efficient method for fitting nonparametric matrix trace regression model. The detailed description can be found in C. Lee, L. Li, H. Zhang, and M. Wang (2021). Nonparametric Trace Regression via Sign Series Representation. <arXiv:2105.01783>. The method employs the aggregation of structured sign series for trace regression (ASSIST) algorithm. |
Authors: | Chanwoo Lee <[email protected]>, Lexin Li <[email protected]>, Hao Helen Zhang <[email protected]>, Miaoyan Wang <[email protected]> |
Maintainer: | Chanwoo Lee <[email protected]> |
License: | GPL (>= 2) |
Version: | 0.1.0 |
Built: | 2024-11-29 08:53:46 UTC |
Source: | CRAN |
Implement an ADMM algorithm to optimize the weigthed classificiation loss.
ADMM(X,ybar,Weight,Covariate=NULL,r,srow,scol,lambda=0,rho.ini=1)
ADMM(X,ybar,Weight,Covariate=NULL,r,srow,scol,lambda=0,rho.ini=1)
X |
A list of matrix-valued predictors. |
ybar |
A vector of shifted response variables. |
Weight |
Classification weight. |
Covariate |
Additional covariates including intercept. |
r |
The rank of coefficient matrix to be fitted. |
srow |
The number of zero rows in coefficient matrix. |
scol |
The number of zero columns in coefficient matrix. |
lambda |
Lagrangian multiplier. Default is zero. |
rho.ini |
Initial step size. Default is 1. |
The returned object is a list of components.
intercept
- The estimated intercept of the classifier.
P_row
- The left-singular vectors of the coefficient matrix.
P_col
- The right-singular vectors of the coefficient matrix.
obj
- Trajectory of weighted classification loss values over iterations.
iter
- The number of iterations.
fitted
- A vector of fitted reponse from estimated classifier.
B
- The estimated coefficient matrix of the classifier.
Lee, C., Li, L., Zhang, H., and Wang, M. (2021). Nonparametric Trace Regression via Sign Series Representation. arXiv preprint arXiv:2105.01783.
#### Generate matrix predictors ########## X = list() for(i in 1:10){ X[[i]] = matrix(runif(4,-1,1),nrow = 2,ncol = 2) } #### Generate coefficient matrix ######### B = runif(2,-1,1)%*%t(runif(2,-1,1)) #### Generate response variables ######### y = NULL for(i in 1:10){ y = c(y,sign(sum(X[[i]]*B)+rnorm(1,sd = 0.1))) } #### classification with equal weights ######### res = ADMM(X,y,rep(1,10),r = 1,srow = 0,scol = 0) ### Misclassification rate on training data ###### mean(sign(res$fitted)-y)
#### Generate matrix predictors ########## X = list() for(i in 1:10){ X[[i]] = matrix(runif(4,-1,1),nrow = 2,ncol = 2) } #### Generate coefficient matrix ######### B = runif(2,-1,1)%*%t(runif(2,-1,1)) #### Generate response variables ######### y = NULL for(i in 1:10){ y = c(y,sign(sum(X[[i]]*B)+rnorm(1,sd = 0.1))) } #### classification with equal weights ######### res = ADMM(X,y,rep(1,10),r = 1,srow = 0,scol = 0) ### Misclassification rate on training data ###### mean(sign(res$fitted)-y)
Implement a CNN with two hidden layers and ReLU activation.
CNN(X,y,X_new,plot.figure = FALSE)
CNN(X,y,X_new,plot.figure = FALSE)
X |
A list of matrix-valued predictors. |
y |
Binary response variable. |
X_new |
A list of new matrices in the test data. |
plot.figure |
Option for plotting trajectory of accuracy over epochs. |
The returned object is a list of components.
prob
- The predicted probabilities for the test data.
class
- The estimated binary response for the test data.
history
- The trajectory of classification accuracy over epochs.
acc
- The classification accuracy on test data.
Fit a logistic probability model based on Lasso penalty
Lasso(xvec,y,xnew,lambda)
Lasso(xvec,y,xnew,lambda)
xvec |
An input matrix. Each row is a vectorized predictor. |
y |
Binary response variable. |
xnew |
New predictors in the test data. Organized as a matrix with each row being a data point. |
lambda |
The regularization penalty. |
The returned object is a list of components.
B_est
- The estimated coefficient vector of linear predictor.
prob
- The predicted probabilities for the test data.
Main function for fitting the nonparametric trace regression. The algorithm uses a learning reduction approach to estimate the nonparametric trace regression via ASSIST.
TraceAssist(X,y,X_new=NULL,r,sparse_r,sparse_c,H=10,lambda=0,rho.ini=0.1,min,max)
TraceAssist(X,y,X_new=NULL,r,sparse_r,sparse_c,H=10,lambda=0,rho.ini=0.1,min,max)
X |
A list of matrix-valued predictors. |
y |
A vector of response variables. |
X_new |
A list of new matrices in the test data. |
r |
The rank of sign representable function to be fitted. |
sparse_r |
The number of zero rows in coefficient matrix. |
sparse_c |
The number of zero columns in coefficient matrix. |
H |
Resoution parameter that controls the number of classifiers to aggregate. |
lambda |
Lagrangian multiplier. |
rho.ini |
Initial step size. |
min |
Minimum value of the response variables |
max |
Maximum value of the response variables. |
The returned object is a list of components.
B_est
- An array that collects a series of coefficient matrices for the classifiers used in the algorithm.
fitted
- The predicted responses in the test data.
sign_fitted
- A matrix that collects a series of predicted signs for the classifiers used in the algorithm.
Lee, C., Li, L., Zhang, H., and Wang, M. (2021). Nonparametric Trace Regression via Sign Series Representation. arXiv preprint arXiv:2105.01783.
######### Generate matrices in the training data ################ X = list() for(i in 1:10){ X[[i]] = matrix(runif(4,-1,1),nrow = 2,ncol = 2) } ######### Generate coefficient matrix ########################### B = runif(2,-1,1)%*%t(runif(2,-1,1)) ######### Generate response variables ########################### y = NULL;signal = NULL for(i in 1:10){ signal = c(signal,sum(X[[i]]*B)) y = c(y,sum(X[[i]]*B)+rnorm(1,sd = 0.1)) } ######### Run ASSIST ############################################ res =TraceAssist(X,y,r = 1,sparse_r = 0,sparse_c = 0,min = min(y),max = max(y)) mean(abs(res$fitted-signal)) ######### Generate new matrices in the test data ################ X_new = list() for(i in 1:10){ X_new[[i]] = matrix(runif(4,-1,1),nrow = 2,ncol = 2) } ######### Generate response variables from X_new ################ y_new = NULL for(i in 1:10){ y_new = c(y_new,sum(X_new[[i]]*B)) } ######### Run ASSIST ############################################# res =TraceAssist(X,y,X_new,r = 1,sparse_r = 0,sparse_c = 0,min = min(y),max = max(y)) mean(abs(res$fitted-y_new))
######### Generate matrices in the training data ################ X = list() for(i in 1:10){ X[[i]] = matrix(runif(4,-1,1),nrow = 2,ncol = 2) } ######### Generate coefficient matrix ########################### B = runif(2,-1,1)%*%t(runif(2,-1,1)) ######### Generate response variables ########################### y = NULL;signal = NULL for(i in 1:10){ signal = c(signal,sum(X[[i]]*B)) y = c(y,sum(X[[i]]*B)+rnorm(1,sd = 0.1)) } ######### Run ASSIST ############################################ res =TraceAssist(X,y,r = 1,sparse_r = 0,sparse_c = 0,min = min(y),max = max(y)) mean(abs(res$fitted-signal)) ######### Generate new matrices in the test data ################ X_new = list() for(i in 1:10){ X_new[[i]] = matrix(runif(4,-1,1),nrow = 2,ncol = 2) } ######### Generate response variables from X_new ################ y_new = NULL for(i in 1:10){ y_new = c(y_new,sum(X_new[[i]]*B)) } ######### Run ASSIST ############################################# res =TraceAssist(X,y,X_new,r = 1,sparse_r = 0,sparse_c = 0,min = min(y),max = max(y)) mean(abs(res$fitted-y_new))