0.2 Datasets to Test

0.3 Main Loop

for (dset in names(NNdatasets)) {

    ## =============================================
    ## EXTRACT INFORMATION FROM THE SELECTED DATASET
    ## =============================================
    ds     <- NNdatasets[[dset]]$ds
    Z      <- NNdatasets[[dset]]$Z
    neur   <- NNdatasets[[dset]]$neur
    nparNN <- NNdatasets[[dset]]$nparNN
    fmlaNN <- NNdatasets[[dset]]$fmlaNN
    donotremove  <- c("dset", "dsets", "ds", "Z", "neur", "TF", "nrep", "timer",
                      "donotremove", "donotremove2")
    donotremove2 <- c("dset", "dsets") 

    ## ===================================================
    ## SELECT THE FORMAT REQUIRED BY THE PACKAGE/ALGORITHM
    ## d = data.frame, m = matrix, v = vector/numeric
    ## ATTACH THE OBJECTS CREATED (x, y, Zxy, ... )
    ## ===================================================
    ZZ <- prepareZZ(Z, zdm = "d", scale = T)
    attach(ZZ)

    ## =============================================
    ## SELECT THE PACKAGE USED FOR TRAINING
    ## nrep => SELECT THE NUMBER OF INDEPENDANT RUNS
    ## iter => SELECT THE MAX NUMBER OF ITERATIONS
    ## TF   => PLOT THE RESULTS
    ## =============================================

    
    nrep   <- 10
    TF     <- TRUE
    iter   <- 150

    descr  <- paste(dset, "tsensembler::bm_ffnn", sep = "_")

    ## AUTO
    Ypred  <- list()
    Rmse   <- numeric(length = nrep)
    Mae    <- numeric(length = nrep)
    
    for(i in 1:nrep){
        event      <- paste0(descr, sprintf("_%.2d", i))
        timer$start(event)
        #### ADJUST THE FOLLOWING LINES TO THE PACKAGE::ALGORITHM
        NNreg   <- tryCatch(
                            tsensembler::bm_ffnn(fmla, Zxy, list(size = neur, maxit = iter, decay = 0)),
                            error = function(y) {lm(y ~ 0, data = Zxy)}
                          )     
        y_pred  <- tryCatch(
                            ym0 + ysd0*predict(NNreg$nnet_s_30_d_0.01_m_750, x),
                            error = ym0
                          )     
        ####
        Ypred[[i]] <- y_pred
        Rmse[i]    <- funRMSE(y_pred, y0)
        Mae[i]     <- funMAE(y_pred, y0)
        timer$stop(event, RMSE = Rmse[i], MAE = Mae[i], params = iter, printmsg = FALSE)
        }
    best <- which(Rmse == min(Rmse, na.rm = TRUE))[1]
    best ; Rmse[[best]]        
        
        
    ## ================================================
    ## PLOT ALL MODELS AND THE MODEL WITH THE BEST RMSE
    ## par OPTIONS CAN BE IMPROVED FOR A BETTER DISPLAY
    ## ================================================
    op <- par(mfcol = c(1,2))
    plotNN(xory, y0, uni, TF, main = descr)
    for (i in 1:nrep) lipoNN(xory, Ypred[[i]], uni, TF, col = i, lwd = 1)
        
    plotNN(xory, y0, uni, TF, main = descr)
    lipoNN(xory, Ypred[[best]], uni, TF, col = 4, lwd = 4)
    par(op)

        

## ===========================
## DETACH ZZ - END OF THE LOOP
## ===========================
    detach(ZZ)
}
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750

## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750

## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750

## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750

## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750

## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750

## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750

## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750

## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750

## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750

## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750

## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750 
## nnet_s_30_d_0.01_m_750

0.4 Results

0.5 Best Results

dataset method minRMSE meanRMSE meanTime
mDette ffnn 0.1712 0.17472 2.882
mFriedman 0.0039 0.00409 3.363
mIshigami 0.2298 0.27188 3.508
mRef153 2.4511 2.52707 1.013
uDmod1 0.1146 0.11472 0.192
uDmod2 0.0734 0.07343 0.194
uDreyfus1 0.1266 0.12685 0.189
uDreyfus2 0.1530 0.15380 0.165
uGauss1 2.7081 2.71458 1.076
uGauss2 2.3788 2.38173 1.165
uGauss3 2.6347 2.63512 1.115
uNeuroOne 0.2866 0.28663 0.139