Giải pháp dạng đóng cho vấn đề Lasso khi ma trận dữ liệu là đường chéo


13

Chúng tôi có vấn đề: với giả định rằng: \ sum_ {i = 1} ^ nx_ix_i ^ T = \ diag (\ sigma_1 ^ 2, ..., \ sigma_d ^ 2).

minwRd(1ni=1n(w,xiyi)2+2λ||w||1),
i=1nxixiT=diag(σ12,...,σd2).

Có một giải pháp dạng đóng trong trường hợp này?

Tôi có điều đó:

(XTX)-1= =(σ1-2,...,σd-2),
và vì vậy tôi nghĩ rằng câu trả lời là :
wj= =yjtối đa{0,1-λn|yj|},
cho yj= =ΣTôi= =1nyTôixTôijσTôi2 , nhưng tôi không chắc.

Câu trả lời:


9

Tôi sẽ đi qua dẫn xuất của @ cardinal về giải pháp lasso dạng đóng khi XTX=I , được tìm thấy ở đây , với những sửa đổi nhỏ.

Tôi sẽ giả sử rằng σi2>0 cho tất cả i . Điều này là hợp lý bởi vì nếu chúng ta có σi2=0 thì điều này cho chúng ta biết rằng cột thứ i của X là 0 và tôi nghĩ việc loại trừ trường hợp đó là hợp lý. Tôi sẽ cho XTX=D . Lưu ý rằng điều này cũng có nghĩa là X là thứ hạng đầy đủ và giải pháp OLS β^ được xác định duy nhất.

Tôi cũng sẽ sửa đổi ký hiệu của bạn để phù hợp hơn với câu trả lời mà tôi đang tham khảo. Cuối cùng, tôi sẽ giải quyết

β^λ=argminβRp12||YXβ||22+λ||β||1.

Điều này giống hệt với vấn đề của bạn nhưng tôi có thể thêm chi tiết ở đây nếu bạn muốn.

Theo dẫn xuất của @ cardinal, chúng ta cần giải quyết

β^λ=argmin 12(YTY2YTXβ+βTXTXβ)+λ||β||1

=argmin YTXβ+12βTDβ+λ||β||1.

Lưu ý rằng giải pháp OLS là , chúng tôi có β bước sóng=argmin  - β TDβ+1β^=(XTX)1XTY=D1XTY

β^λ=argmin β^TDβ+12βTDβ+λ||β||1

=argmin j=1pβ^jβjσj2+σj22βj2+λ|βj|.

Chúng tôi đang tối ưu hóa riêng biệt cho từng , vì vậy chúng tôi có thể giải quyết riêng từng điều khoản của khoản tiền này. Điều này có nghĩa là chúng ta cần giảm thiểu trong đó βjLj

Lj=β^jβjσj2+σj22βj2+λ|βj|.

Theo một đối số hoàn toàn không phù hợp với câu trả lời được liên kết, chúng tôi thấy rằng

(β^λ)j=sgn(β^j)(|β^j|λσj2)+.

Hơn nữa, vì vậy chúng tôi có β^=D1XTYβ^j=XjTYσj2

(|β^j|-λσj2)+= =1σj2(|XjTY|-λ)+

Vì vậy, nó chỉ ra rằng một dự đoánXj sẽ bị loại bỏ chính xác khi nào nếu ma trận thiết kế là trực giao, không chỉ trực giao. Vì vậy, chúng ta có thể thấy rằng trong trường hợp này với , lựa chọn biến không khác so với nếu , nhưng các hệ số thực tế được chia tỷ lệ theo phương sai dự đoán.XTX= =DTôiXTX= =Tôiβ^λ

Như một lưu ý cuối cùng, tôi sẽ biến giải pháp này thành một giải pháp tương tự như của bạn, điều đó có nghĩa là chúng ta cần nhân với thứ gì đó để có đượcβ^β^λ . Nếu thì chúng ta có (β^λ)j0

(β^λ)j= =sgn(β^j)(|β^j|-λσj2)= =β^j-sgn(β^j)λσj2

= =β^j(1-λσj2|β^j|)

kể từ .một|một|= =sgn(một)

Ghi chú điều đó (β^λ)j= =0 chính xác khi

|β^j|-λσj20|β^j|λσj21λσj2|β^j|1-λσj2|β^j|0,

chúng tôi thấy rằng chúng tôi có thể thay thế biểu hiệnβ^λ

(β^λ)j= =β^j(1-λσj2|β^j|)+.

Vì vậy, điều này rất gần với những gì bạn đã có nhưng không hoàn toàn giống nhau.

Tôi luôn muốn kiểm tra các dẫn xuất như thế này đối với các thư viện nổi tiếng nếu có thể, vì vậy đây là một ví dụ trong R:

## generating `x`
set.seed(1)
n = 1000
p = 5
sigma2s = 1:p
x = svd(matrix(rnorm(n * p), n, p))$u %*% diag(sqrt(sigma2s))

## check this
# t(x) %*% x

## generating `y`
betas = 1:p
y = x %*% betas + rnorm(nrow(x), 0, .5)

lambda = 2

## using a well-known library to fit lasso
library(penalized)
penalized(y, x, lambda1 = lambda)@penalized


## using closed form solution
betahat = lm(y ~ x - 1)$coef
ifelse(betahat > 0, 1, -1) * sapply(abs(betahat) - lambda / sigma2s, function(v) max(c(0, v)))
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.