s2net
s2net
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.782110411
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
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