Fitting
MultilayerFitting(model_fit,device_fit,train_loader_fit, test_loader_fit,epochs_fit, criterion_fit, optimizer_fit, terminate_fit=100, print_fit=100,printchoice=True)
Description: The procedure for estimation and inference.
Parameters:
model_fit : chosen network structure (see module “Structure”)
device_fit : char, device to use, “cpu” or “cuda”
train_loader_fit : dataloader, training data
test_loader_fit : dataloader, testing data
epochs_fit : int, maximum epoch number
criterion_fit : chosen criterion
optimizer_fit : chosen optimizer
terminate_fit : int, terminate parameter, terminate if the loss has no significant improvement over T consecutive epochs, default=100
print_fit : int, print parameter for outputting results, print the results after every T epochs, default=100
printchoice : bool, choice of print or not, default=True
Methods:
fitting(train_x,train_y,test_x,test_y)The procedure for model training and testing.- Parameters:
train_x, test_x : DataFrame, predictors
train_y, test_y : Series, responses
- Returns:
trainloss : list, trainning loss
testloss : list, testing loss
prediction : list, model prediction for testing data
Bootstrap(time_boot,bootbase,train_x,train_y,test_x,test_y, batch,init_weights)95% Bootstrap confidence band.- Parameters:
time_boot : int, Boostrap times
bootbase : list, the original prediction for testing data (see returns of module “fitting”)
train_x, test_x : DataFrame, predictors
train_y, test_y : Series, responses
batch : int, batch size
init_weights : function, initialization method
- Returns:
length : float, interval length
coverage : %, 95% coverage probability
HomoConformalBand(train_x,train_y,test_x,test_y,calibration_x,calibration_y)95% Conformal confidence band- Parameters:
train_x, test_x, calibration_x : DataFrame, predictors
train_y, test_y, calibration_y : Series, responses
- Returns:
length : float, interval length
coverage : %, 95% coverage probability
- References:
[1] Lei, Jing, et al. “Distribution-free predictive inference for regression.” Journal of the American Statistical Association 113.523 (2018): 1094-1111.
HeteConformalBand(loss,train_x,train_y,test_x,test_y,calibration_x,calibration_y)Our proposed 95% MLKM conformal confidence band.- Parameters:
loss : list, training loss (used for RSS)
train_x, test_x, calibration_x : DataFrame, predictors
train_y, test_y, calibration_y : Series, responses
- Returns:
length : float, interval length
coverage : %, 95% coverage probability
Example:
1from Multi_Layer_Kernel_Machine.Structure import KernelNet
2from Multi_Layer_Kernel_Machine.Fitting import MultilayerFitting
3def init_weights(m):
4 if type(m) == nn.Conv2d:
5 torch.nn.init.normal_(m.weight,mean=0,std=0.5)
6 if type(m) == nn.Linear:
7 torch.nn.init.uniform_(m.weight,a=0,b=1)
8 m.bias.data.fill_(0.01)
9device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
10net = KernelNet([90,32,8,1],["C","G"],[0.01,0.1],device)
11torch.manual_seed(1)
12net.apply(init_weights)
13criterion=nn.MSELoss()
14optimizer=optim.SGD(net.parameters(),lr=1e-3,momentum=0.9,weight_decay=1e-4)
15## Model Fitting
16mlmodel=MultilayerFitting(net,device,train_loader, test_loader, 2000, criterion, optimizer,100,100,printchoice=False)
17kernelnn_trainloss,kernelnn_testloss,kernelnn_bootbase=mlmodel.fitting(train_x,train_y,test_x,test_y)
18## Confidence Bands
19mlmodel.HomoConformalBand(train_x,train_y,test_x,test_y, calibration_x,calibration_y)
20mlmodel.HeteConformalBand(kernelnn_trainloss,train_x,train_y,test_x,test_y, calibration_x,calibration_y)