Tôi muốn so sánh các mô hình được lựa chọn với sườn, lasso và lưới đàn hồi. Hình dưới đây cho thấy các đường dẫn hệ số bằng cả 3 phương pháp: sườn (Hình A, alpha = 0), lasso (Hình B; alpha = 1) và lưới đàn hồi (Hình C; alpha = 0,5). Giải pháp tối ưu phụ thuộc vào giá trị được chọn của lambda, được chọn dựa trên xác nhận chéo.
Khi nhìn vào các ô này, tôi sẽ mong muốn lưới đàn hồi (Hình C) thể hiện hiệu ứng nhóm. Tuy nhiên nó không rõ ràng trong trường hợp được trình bày. Đường dẫn hệ số cho lasso và lưới đàn hồi rất giống nhau. Điều gì có thể là lý do cho điều này ? Có phải chỉ là một lỗi mã hóa? Tôi đã sử dụng đoạn mã sau trong R:
library(glmnet)
X<- as.matrix(mydata[,2:22])
Y<- mydata[,23]
par(mfrow=c(1,3))
ans1<-cv.glmnet(X, Y, alpha=0) # ridge
plot(ans1$glmnet.fit, "lambda", label=FALSE)
text (6, 0.4, "A", cex=1.8, font=1)
ans2<-cv.glmnet(X, Y, alpha=1) # lasso
plot(ans2$glmnet.fit, "lambda", label=FALSE)
text (-0.8, 0.48, "B", cex=1.8, font=1)
ans3<-cv.glmnet(X, Y, alpha=0.5) # elastic net
plot(ans3$glmnet.fit, "lambda", label=FALSE)
text (0, 0.62, "C", cex=1.8, font=1)
Mã được sử dụng để vẽ đường dẫn hệ số thuần đàn hồi hoàn toàn giống như đối với sườn và lasso. Sự khác biệt duy nhất là giá trị của alpha. Tham số Alpha cho hồi quy mạng đàn hồi được chọn dựa trên MSE thấp nhất (sai số bình phương trung bình) cho các giá trị lambda tương ứng.
Cảm ơn sự giúp đỡ của bạn !