Setup
Packages and options
library(NNbenchmark)
library(kableExtra)
options(scipen = 999)
Datasets to test
NNdataSummary(NNdatasets)
## Dataset n_rows n_inputs n_neurons n_parameters
## 1 mDette 500 3 5 26
## 2 mFriedman 500 5 5 36
## 3 mIshigami 500 3 10 51
## 4 mRef153 153 5 3 22
## 5 uDmod1 51 1 6 19
## 6 uDmod2 51 1 5 16
## 7 uDreyfus1 51 1 3 10
## 8 uDreyfus2 51 1 3 10
## 9 uGauss1 250 1 5 16
## 10 uGauss2 250 1 4 13
## 11 uGauss3 250 1 4 13
## 12 uNeuroOne 51 1 2 7
h2o trainPredict arguments - inputs dataxy, “y”
if(dir.exists("D:/GSoC2020/Results/2020run03/"))
{
odir <- "D:/GSoC2020/Results/2020run03/"
}else if(dir.exists("~/Documents/recherche-enseignement/code/R/NNbenchmark-project/NNtempresult/"))
{
odir <- "~/Documents/recherche-enseignement/code/R/NNbenchmark-project/NNtempresult/"
}else
odir <- "~"
nrep <- 10
maxit2ndorder <- 200
maxit1storderA <- 1000
maxit1storderB <- 10000
maxit1storderC <- 100000
#library(h2o)
h2o.method <- "first-order"
hyperParams.h2o <- function(optim_method, ...) {
hidden_activation = "Tanh"
iter <- maxit1storderB
rate <- 0.01
stopping_rounds <- 500
stopping_tolerance <- 1e-5
distribution <- "gaussian"
out <- list(hidden_activation = hidden_activation, iter = iter, rate=rate,
stopping_rounds=stopping_rounds, stopping_tolerance=stopping_tolerance,
distribution=distribution)
return (out)
}
NNtrain.h2o <- function(x, y, dataxy, formula, hidden_neur, optim_method, hyperParams, ...) {
hyper_params <- do.call(hyperParams, list(optim_method, ...))
hidden_activation <- hyper_params$hidden_activation
iter <- hyper_params$iter
rate <- hyper_params$rate
stopping_rounds <- hyper_params$stopping_rounds
stopping_tolerance <- hyper_params$stopping_tolerance
distribution <- hyper_params$distribution
if(class(dataxy) != "H2OFrame")
dataxy <- h2o::as.h2o(dataxy)
NNreg <- h2o::h2o.deeplearning(y = "y",
training_frame = dataxy,
overwrite_with_best_model = TRUE,
standardize = FALSE,
activation = hidden_activation,
adaptive_rate = FALSE,
rate = rate,
hidden = hidden_neur,
epochs = iter,
train_samples_per_iteration = -1,
initial_weight_distribution = "Normal",
initial_weight_scale = 0.1,
loss = "Quadratic",
distribution = distribution,
stopping_rounds = stopping_rounds,
stopping_metric = "RMSE",
stopping_tolerance = stopping_tolerance,
seed = as.integer(runif(1)*10000000),
verbose = FALSE
)
return (NNreg)
}
NNpredict.h2o <- function(object, x, ...)
{
predictions <- h2o::h2o.predict(object, newdata=h2o::as.h2o(x))
as.data.frame(predictions)$predict
}
NNclose.h2o <- function()
{
h2o::h2o.shutdown(FALSE)
if("package:h2o" %in% search())
detach("package:h2o", unload=TRUE)
}
NNstart.h2o <- function()
{
require("h2o", character.only = TRUE)
h2o::h2o.init()
h2o::h2o.no_progress()
}
h2o.prepareZZ <- list(xdmv = "m", ydmv = "v", zdm = "d", scale = TRUE)
if(FALSE)
res <- train_and_predict_1data(1, h2o.method, "NNtrain.h2o", "hyperParams.h2o", "NNpredict.h2o",
NNsummary, "NNclose.h2o", "NNstart.h2o", h2o.prepareZZ, nrep=5, echo=TRUE, doplot=FALSE,
pkgname="h2o", pkgfun="deeplearning", rdafile=TRUE, odir=odir)
Launch package’s trainPredict
res <- trainPredict_1pkg(1:12, pkgname = "h2o", pkgfun = "h2o.deeplearning", h2o.method,
prepareZZ.arg = h2o.prepareZZ, nrep = nrep, doplot = TRUE,
csvfile = TRUE, rdafile = TRUE, odir = odir, echo = FALSE)
Results
#print(res)
kable(t(apply(res, c(1,4), min)))%>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed"))
|
RMSE
|
MSE
|
MAE
|
WAE
|
time
|
mDette
|
0.3682
|
0.1356
|
0.2827
|
1.2149
|
5.19
|
mFriedman
|
0.0211
|
0.0004
|
0.0168
|
0.0600
|
5.28
|
mIshigami
|
0.7277
|
0.5296
|
0.5553
|
3.1493
|
6.20
|
mRef153
|
3.2462
|
10.5381
|
2.2536
|
12.5985
|
4.17
|
uDmod1
|
0.0482
|
0.0023
|
0.0388
|
0.1118
|
3.08
|
uDmod2
|
0.0456
|
0.0021
|
0.0369
|
0.1105
|
3.05
|
uDreyfus1
|
0.0134
|
0.0002
|
0.0105
|
0.0390
|
3.05
|
uDreyfus2
|
0.0926
|
0.0086
|
0.0735
|
0.2153
|
3.16
|
uGauss1
|
2.2705
|
5.1554
|
1.7811
|
7.1793
|
4.14
|
uGauss2
|
2.7889
|
7.7778
|
2.2366
|
8.3271
|
4.09
|
uGauss3
|
2.5616
|
6.5616
|
2.0372
|
7.7885
|
4.17
|
uNeuroOne
|
0.2832
|
0.0802
|
0.2311
|
0.5413
|
3.03
|
kable(t(apply(res, c(1,4), median)))%>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed"))
|
RMSE
|
MSE
|
MAE
|
WAE
|
time
|
mDette
|
0.37185
|
0.13830
|
0.28670
|
1.40545
|
5.255
|
mFriedman
|
0.02580
|
0.00065
|
0.02080
|
0.07940
|
6.280
|
mIshigami
|
0.83195
|
0.69215
|
0.61720
|
3.60065
|
6.270
|
mRef153
|
3.27115
|
10.70060
|
2.28890
|
14.69335
|
4.205
|
uDmod1
|
0.05250
|
0.00275
|
0.04370
|
0.12190
|
3.155
|
uDmod2
|
0.04880
|
0.00240
|
0.03980
|
0.12145
|
3.180
|
uDreyfus1
|
0.01405
|
0.00020
|
0.01085
|
0.04145
|
3.150
|
uDreyfus2
|
0.09300
|
0.00865
|
0.07385
|
0.23490
|
3.170
|
uGauss1
|
2.62940
|
7.01545
|
2.06270
|
8.02490
|
4.190
|
uGauss2
|
3.53880
|
12.52345
|
2.84660
|
10.73650
|
4.190
|
uGauss3
|
3.29380
|
10.84900
|
2.58870
|
10.12505
|
4.220
|
uNeuroOne
|
0.28360
|
0.08045
|
0.23350
|
0.54860
|
3.175
|