2013-11-13 3 views
0

Я просто пытаюсь понять лассо, реализованное в R пакете glmnet. Я подбираю данные, но решение, которое я получаю для лямбда по моему выбору, - , не сводя к минимуму критерии лассо, например, если я перемещаю решение одним способом. Я могу получить меньшую стоимость.Lasso in R package glmnet: решение не оптимальное?

Что я понимаю неправильно?

library(lattice) 
library(Matrix) 
library(glmnet) 
# Target vector 
Target <- c(1.3906275E7, -1.8241672E7, 8181847.0, 1.6927098E7, -6547966.5, -1363836.375) 


# Observation vector 
Obs <- matrix(c(-0.944, 0.869 ,-0.795,-0.996, 0.617, 0.886, 
       -0.472 , 0.936 , 0.063 ,-0.080,-0.751 ,-0.834, 
       -0.107 , 0.343 , 0.261 , 0.327,-0.255,0.705, 
       -1.803,-0.781,0.168,0.211,-0.349, -0.040),6,4) 


#fitting 
fits <-glmnet(Obs,Target) 

# arbitrary choice of lambda 
lambda <- 221800 
coef = predict(fits,s = lambda ,type="coefficients") 
res = c(coef[2,1],coef[3,1],coef[4,1],coef[5,1]) 


# Computing the lasso criteria 
newbookrisklassor = Target-Obs%*%res 
cost = sum(abs(res)) 
newRisklassor = t(newbookrisklassor) %*% newbookrisklassor+lambda*cost 



# Moving solution slightly in 1 way and computing the lasso criteria 
epsilon = 500000 
resP = res + c(0,epsilon,0,0) 
costP = sum(abs(resP)) 
newbookrisklassorP = Target-Obs%*%resP 
newRisklassorP = t(newbookrisklassorP) %*% newbookrisklassorP+lambda*costP 


# Error it seems that the resP solution is better 
newRisklassor-newRisklassorP 

ответ

1

Вы должны добавить перехватывать в примерочной newbookrisklassor = Target-Obs% *% res- перехватывать ...

Смежные вопросы