lassoの勉強として

間違って解釈している場合はあると思うが、公開してしまう。

目的など

library(glmnet)
#library(pls)のgasolneを呼び出す
gasoline <- pls::gasoline

#cv.glmnet()をつかって最適なλを計算する
lasso.model.cv <- cv.glmnet(x = gasoline$NIR, y = gasoline$octane, family = "gaussian", alpha = 1)
plot(lasso.model.cv)

lasso.model.cv$lambda.min
## [1] 0.01371035
lasso.model <- glmnet(x = gasoline$NIR, y = gasoline$octane, family = "gaussian", alpha = 1, lambda = lasso.model.cv$lambda.min)

#model評価
est.Y <- predict(lasso.model, newx = gasoline$NIR, s = lasso.model.cv$lambda.min, type = 'response')
mse <- sum((gasoline$octane - est.Y)^2) / length(est.Y)
mse
## [1] 0.02757686
plot(gasoline$octane, est.Y)