49 lines
1.4 KiB
R
49 lines
1.4 KiB
R
library(MAVE)
|
|
library(CVarE)
|
|
library(NNSDR)
|
|
|
|
set.seed(797)
|
|
|
|
dataset <- function(n = 100, p = 10, sd = 0.5) {
|
|
X <- matrix(rnorm(n * (p - 1)), n, p - 1)
|
|
X <- cbind(-0.5 * (X[, 1] + X[, 2]) + 0.001 * rnorm(n), X)
|
|
B <- diag(p)[, 4, drop = FALSE]
|
|
Y <- as.matrix(X[, 4]^2 + rnorm(n, 0, sd))
|
|
return(list(X = X, Y = Y, B = B))
|
|
}
|
|
|
|
nn <- nnsdr$new(
|
|
input_shapes = list(x = 10L),
|
|
d = 1L,
|
|
hidden_units = 512L,
|
|
activation = 'relu',
|
|
trainable_reduction = TRUE
|
|
)
|
|
|
|
sim <- data.frame(mave = rep(NA, 10), cve = NA, nn.opg = NA, nn.ref = NA)
|
|
for (i in 1:10) {
|
|
cat(i, "/ 10\n")
|
|
with(dataset(), {
|
|
dr <- mave.compute(X, Y, method = 'meanMAVE', max.dim = 1)
|
|
sim[i, 'mave'] <<- dist.subspace(B, coef(dr, 1), normalize = TRUE)
|
|
|
|
dr <- cve.call(X, Y, k = 1)
|
|
sim[i, 'cve'] <<- dist.subspace(B, coef(dr, 1), normalize = TRUE)
|
|
|
|
nn$fit(X, Y, epochs = c(200L, 400L), batch_size = 32L, initializer = 'fromOPG')
|
|
sim[i, 'nn.opg'] <<- dist.subspace(B, coef(nn, 'OPG'), normalize = TRUE)
|
|
sim[i, 'nn.ref'] <<- dist.subspace(B, coef(nn), normalize = TRUE)
|
|
})
|
|
nn$reset()
|
|
}
|
|
round(t(data.frame(
|
|
mean = colMeans(sim),
|
|
median = apply(sim, 2, median),
|
|
sd = apply(sim, 2, sd)
|
|
)), 3)
|
|
|
|
# &$\mave$& $\cve$&$\nn_{512}$ \\
|
|
# mean & 0.917 & 0.164 & 0.101 \\
|
|
# median & 0.999 & 0.162 & 0.096 \\
|
|
# sd & 0.256 & 0.057 & 0.032 \\
|