The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

The supervised s2net

s2net can be used as a supervised method (without unlabeled data) and it is equivalent to elastic net.

Data

The auto_mpg dataset is available when s2net is installed.

library(s2net)
data("auto_mpg")

# Preprocess the data using the s2Data function
train = s2Data(auto_mpg$P1$xL, auto_mpg$P1$yL, preprocess = TRUE)

Ordinary least squares

To fit an OLS model, we will use the lm function (without intercept).

lm.fit = lm( y~ 0 + ., data = data.frame(train$xL, y = train$yL))

To obtain the estimations from s2net we use

obj = s2netR(train, s2Params(0))
# We set all the hyper-parameters to 0

We can compare the training objectives of both algorithms, as well as the estimations.

library(Metrics)
# Training error
ypred = predict.lm(lm.fit, data.frame(train$xL))
print("OLS error:")
mse(ypred, train$yL)

ypred = predict(obj, train$xL)
print("s2net error:")
mse(ypred, train$yL)

#Estimations
data.frame(mle = lm.fit$coefficients, s2net = obj$beta)
  [1] "OLS error:"
  [1] 11.14708
  [1] "s2net error:"
  [1] 11.14754
                      mle        s2net
  cylinders.L   0.3548161  0.285474997
  cylinders.Q  -0.9132173 -0.935717172
  cylinders.C   0.3835068  0.330481968
  cylinders.4          NA -0.008096223
  displacement -1.0056651 -0.945328949
  horsepower    0.1307953  0.124370552
  weight       -2.8561218 -2.901267109
  acceleration  1.1041176  1.115766617
  year          3.7855521  3.782110411

Lasso

library(glmnet)

lasso.fit = glmnet(train$xL, train$yL, family = "gaussian", 
                           alpha = 1, lambda = 0.01, intercept = F)
ypred = predict(lasso.fit, train$xL)
print("Lasso error:")
mse(ypred, train$yL)

obj = s2netR(train, s2Params(lambda1 = 0.01))
ypred = predict(obj, train$xL)
print("s2net error")
mse(ypred, train$yL)

print("Coefficients")
data.frame(lasso = as.numeric(lasso.fit$beta), s2net = obj$beta)
  [1] "Lasso error:"
  [1] 11.1477
  [1] "s2net error"
  [1] 11.1495
  [1] "Coefficients"
          lasso       s2net
  1  0.00000000  0.04400422
  2 -1.12939790 -1.06249932
  3  0.03454994  0.11384660
  4 -0.06378002 -0.04329510
  5 -0.97177003 -0.88722825
  6  0.11854687  0.10780812
  7 -2.87208217 -2.93069375
  8  1.10283623  1.11822773
  9  3.77265557  3.76858994

Elastic net

enet.fit = glmnet(train$xL, train$yL, family = "gaussian", 
                          alpha = 0.3333, lambda = 0.03, intercept = F)
ypred = predict(enet.fit, train$xL)
print("glmnet error")
mse(ypred, train$yL)

obj = s2netR(train, s2Params(lambda1 = 0.01, lambda2 = 0.01))
ypred = predict(obj, train$xL)
print("s2net error")
mse(ypred, train$yL)

print("Coefficients")
data.frame(enet = as.matrix(enet.fit$beta), s2net = obj$beta)
  [1] "glmnet error"
  [1] 11.14839
  [1] "s2net error"
  [1] 11.16189
  [1] "Coefficients"
                        s0       s2net
  cylinders.L   0.00000000  0.02176857
  cylinders.Q  -1.12966519 -1.11081728
  cylinders.C   0.03962925  0.08926029
  cylinders^4  -0.06613103 -0.07240406
  displacement -0.98765401 -1.05183911
  horsepower    0.11712469  0.10903802
  weight       -2.84667192 -2.72983278
  acceleration  1.09711179  1.07104828
  year          3.76243231  3.70533071

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.