Có, một phần chặn được bao gồm trong mô hình glmnet , nhưng nó không được chuẩn hóa (xem Đường dẫn chính quy cho các mô hình tuyến tính tổng quát thông qua tọa độ gốc , trang 13). Thông tin chi tiết về việc triển khai chắc chắn có thể thu được bằng cách xem xét kỹ mã (đối với họ gaussian, đó là elnet()
hàm được gọi bởi glmnet()
), nhưng nó nằm trong Fortran.
Bạn có thể thử gói bị phạt , cho phép loại bỏ chặn bằng cách chuyển unpenalized = ~0
đến penalized()
.
> x <- matrix(rnorm(100*20),100,20)
> y <- rnorm(100)
> fit1 <- penalized(y, penalized=x, unpenalized=~0,
standardize=TRUE)
> fit2 <- lm(y ~ 0+x)
> plot((coef(fit1) + coef(fit2))/2, coef(fit2)-coef(fit1))
Để có được sự chính quy hóa của Lasso, bạn có thể thử một cái gì đó như
> fit1b <- penalized(y, penalized=x, unpenalized=~0,
standardize=TRUE, lambda1=1, steps=20)
> show(fit1b)
> plotpath(fit1b)
Như có thể thấy trong hình tiếp theo, có rất ít sự khác biệt giữa các tham số hồi quy được tính toán bằng cả hai phương thức (bên trái) và bạn có thể vẽ giải pháp đường dẫn Lasso rất dễ dàng (phải).