s2nets2net can be used as a supervised method (without
unlabeled data) and it is equivalent to elastic net.
The auto_mpg dataset is available when
s2net is installed.
To fit an OLS model, we will use the lm function
(without intercept).
To obtain the estimations from s2net we use
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.782110411library(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.76858994enet.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