nhỏ nhất cung cấp thành phần 0 trong lasso là gì?


14

Xác định ước tính lasso nơi i ^ {th} hàng x_i \ in \ mathbb {R} ^ p của thiết kế ma trận X \ in \ mathbb {R} ^ {n \ times p} là một vector của hiệp phương sai để giải thích đáp ứng ngẫu nhiên y_i (cho i = 1, \ dot n ).

β^λ=argminβRp12nyXβ22+λβ1,
ithxiRpXRn×pyii=1,n

Chúng tôi biết rằng với λ1nXTy , ước tính lasso β^λ=0 . (Xem, ví dụ, phạm vi tham số điều chỉnh Lasso và Ridge .) Trong ký hiệu khác, điều này thể hiện rằng λmax=1nXTy . Lưu ý rằng λmax=supβ^λ0λ.Chúng ta có thể thấy điều này một cách trực quan với hình ảnh sau đây hiển thị đường dẫn giải pháp Lasso:

con đường giải pháp Lasso

Chú ý rằng trên xa phía bên tay phải của cốt truyện, tất cả các hệ số bằng không. Điều này xảy ra tại điểm λmax được mô tả ở trên.

Từ cốt truyện này, chúng tôi cũng thông báo rằng trên xa bên trái, tất cả các hệ số là khác không: giá trị của những gì là mà bất kỳ thành phần của là ban đầu không? Đó là, bằng, như một hàm của và ? Tôi quan tâm đến một giải pháp dạng kín. Cụ thể, tôi không quan tâm đến một giải pháp thuật toán, chẳng hạn như, gợi ý rằng LARS có thể tìm thấy nút thắt thông qua tính toán.beta bước sóng bước sóng phút = phút jλβ^λXy

λmin=minjs.t.β^j=0λ
Xy

Bất chấp sở thích của tôi, có vẻ như có thể không có sẵn ở dạng đóng, vì nếu không, các gói tính toán của Lasso có thể sẽ tận dụng lợi thế của nó khi xác định độ sâu tham số điều chỉnh trong quá trình xác thực chéo. Về vấn đề này, tôi quan tâm đến bất kỳ điều gì có thể được hiển thị trên lý thuyết về và (vẫn) đặc biệt quan tâm đến một hình thức đóng. λ m i nλminλmin


Điều này được nêu và chứng minh trong bài báo glmnet
Matthew Drury

@MatthewDrury Cảm ơn bạn đã chia sẻ điều này! Tuy nhiên, bài viết này dường như không chia sẻ những gì bạn dường như đề nghị họ làm. Cụ thể, lưu ý rằng là . λ phútλtối đaλtối thiểu
dùng795305

Bạn có chắc chắn chúng tôi cần thẻ [điều chỉnh tham số]?
amip nói phục hồi Monica

1
bạn có quyền, một hình thức đóng cho giải pháp Lasso nói chung không tồn tại (xem stats.stackexchange.com/questions/174003/ trên ). tuy nhiên, lars ít nhất cho bạn biết những gì đang xảy ra và trong điều kiện chính xác / tại thời điểm nào bạn có thể thêm / xóa một biến. Tôi nghĩ rằng một cái gì đó như thế này là tốt nhất bạn có thể nhận được.
chRrr

1
@chRrr Tôi không chắc điều đó hoàn toàn công bằng khi nói: chúng tôi biết rằng cho . Đó là, trong trường hợp cực đoan của giải pháp là 0, chúng ta có một dạng đóng. Tôi đang hỏi liệu điều tương tự có đúng trong trường hợp cực đoan của ước tính Lasso là dày đặc (tức là không có số không). Thật vậy, tôi thậm chí không quan tâm đến các mục chính xác của --- chỉ là chúng có bằng không hay không. bước sóng1β^λ=0 beta bước sóngλ1nXtyβ^λ
dùng795305

Câu trả lời:


15

Ước tính lasso được mô tả trong câu hỏi là hệ số nhân tương đương với vấn đề tối ưu hóa sau:

minimize f(β) subject to g(β)t

f(β)=12n||yXβ||22g(β)=||β||1

Optimizazion này có một biểu diễn hình học của việc tìm điểm tiếp xúc giữa một hình cầu đa chiều và một đa giác (được kéo dài bởi các vectơ của X). Bề mặt của đa giác thể hiện . Bình phương bán kính của hình cầu đại diện cho hàm và được thu nhỏ khi các bề mặt tiếp xúc.g(β)f(β)

Các hình ảnh dưới đây cung cấp một lời giải thích đồ họa. Các hình ảnh đã sử dụng bài toán đơn giản sau đây với các vectơ có độ dài 3 (để đơn giản để có thể tạo một bản vẽ):

[y1y2y3]=[1.41.840.32]=β1[0.80.60]+β2[00.60.8]+β3[0.60.640.48]+[ϵ1ϵ2ϵ3]
và chúng tôi thu nhỏ với ràng buộcϵ12+ϵ22+ϵ32abs(β1)+abs(β2)+abs(β3)t

Những hình ảnh cho thấy:

  • Bề mặt màu đỏ mô tả các ràng buộc, một đa giác được kéo dài bởi X.
  • Và bề mặt màu xanh lá cây mô tả bề mặt tối giản, một hình cầu.
  • Đường màu xanh hiển thị đường dẫn Lasso, các giải pháp mà chúng tôi tìm thấy khi chúng tôi thay đổi hoặc .tλ
  • Vectơ màu xanh lá cây hiển thị giải pháp OLS (được chọn là hoặc .y^β1=β2=β3=1 y =x1+x2+x3y^=x1+x2+x3
  • Ba vectơ màu đen là , và .x1=(0.8,0.6,0)x2=(0,0.6,0.8)x3=(0.6,0.64,0.48)

Chúng tôi hiển thị ba hình ảnh:

  1. Trong hình ảnh đầu tiên chỉ có một điểm của đa giác chạm vào hình cầu . Hình ảnh này thể hiện rất rõ lý do tại sao giải pháp Lasso không chỉ là bội số của giải pháp OLS. Hướng của giải pháp OLS thêm mạnh hơn vào tổng . Trong trường hợp này, chỉ có một khác không.|β|1βi
  2. Trong hình ảnh thứ hai, một sườn núi đa giác chạm vào hình cầu (ở các chiều cao hơn, chúng ta có các phép tương tự chiều cao hơn). Trong trường hợp này, nhiều khác không.βi
  3. Trong hình ảnh thứ ba, một khía cạnh của hình đa giác đang chạm vào hình cầu . Trong trường hợp này, tất cả các đều khácβi .

Phạm vi của hoặc mà chúng ta có trường hợp thứ nhất và thứ ba có thể dễ dàng tính được do biểu diễn hình học đơn giản của chúng.tλ

Trường hợp 1: Chỉ một khác khôngβi

Giá trị khác không là giá trị mà vectơ liên kết có giá trị tuyệt đối cao nhất của hiệp phương sai với (đây là điểm của parrallelotope gần nhất với giải pháp OLS). Chúng tôi có thể tính hệ số nhân Lagrange bên dưới mà chúng tôi có ít nhất một giá trị khác không bằng cách lấy đạo hàm với (dấu hiệu tùy thuộc vào việc chúng tôi tăng theo hướng tiêu cực hay tích cực):βixiy^λmaxβ±βiβi

(12n||yXβ||22λ||β||1)±βi=0

dẫn đến

λmax=(12n(||yXβ||22±βi)(||β||1)±βi)=±(12n||yXβ||22βi=±1nxiy

bằng với được đề cập trong các bình luận.||XTy||

trong đó chúng ta nên chú ý rằng điều này chỉ đúng với trường hợp đặc biệt trong đó đầu của đa giác chạm vào hình cầu ( vì vậy đây không phải là một giải pháp chung , mặc dù việc khái quát hóa rất đơn giản).

Trường hợp 3: Tất cả đều khác không.βi

Trong trường hợp này, một khía cạnh của đa giác đang chạm vào quả cầu. Sau đó, hướng thay đổi của đường dẫn Lasso là bình thường đối với bề mặt của khía cạnh cụ thể.

Đa giác có nhiều khía cạnh, với sự đóng góp tích cực và tiêu cực của . Trong trường hợp của bước Lasso cuối cùng, khi giải pháp Lasso gần với giải pháp ols, thì các đóng góp của phải được xác định bằng dấu hiệu của giải pháp OLS. Bình thường của khía cạnh có thể được xác định bằng cách lấy độ dốc của hàm , giá trị của tổng beta tại điểm , đó là:xixi||β(r)||1r

n=r(||β(r)||1)=r(sign(β^)(XTX)1XTr)=sign(β^)(XTX)1XT

và sự thay đổi tương đương của beta cho hướng này là:

βlast=(XTX)1Xn=(XTX)1XT[sign(β^)(XTX)1XT]

mà sau khi một số thủ thuật đại số với chuyển dịch transposes ( ) và phân phối các dấu ngoặc trở thànhATBT=[BA]T

βlast=(XTX)1sign(β^)

chúng tôi bình thường hóa hướng này:

βlast,normalized=βlastβlastsign(β^)

Để tìm bên dưới, tất cả các hệ số đều khác không. Chúng ta chỉ phải tính toán lại từ giải pháp OLS trở lại điểm mà một trong các hệ số bằng 0,λmin

d=min(β^βlast,normalized)with the condition that β^βlast,normalized>0

và tại thời điểm này, chúng tôi đánh giá đạo hàm (như trước đây khi chúng tôi tính toán ). Chúng tôi sử dụng điều đó cho một hàm bậc hai, chúng tôi có :λmaxq(x)=2q(1)x

λmin=dn||Xβlast,normalized||22

Hình ảnh

một điểm của đa giác chạm vào hình cầu, một khác không:βi

bước đầu tiên của con đường Lasso

một sườn núi (hoặc khác nhau về nhiều chiều) của đa giác đang chạm vào hình cầu, nhiều khác không:βi

giữa con đường Lasso

một khía cạnh của đa giác đang chạm vào hình cầu, tất cả đều khác không:βi

bước cuối cùng của con đường Lasso

Mã ví dụ:

library(lars)    
data(diabetes)
y <- diabetes$y - mean(diabetes$y)
x <- diabetes$x

# models
lmc <- coef(lm(y~0+x))
modl <- lars(diabetes$x, diabetes$y, type="lasso")

# matrix equation
d_x <- matrix(rep(x[,1],9),length(x[,1])) %*% diag(sign(lmc[-c(1)]/lmc[1]))
x_c = x[,-1]-d_x
y_c = -x[,1]

# solving equation
cof <- coefficients(lm(y_c~0+x_c))
cof <- c(1-sum(cof*sign(lmc[-c(1)]/lmc[1])),cof)

# alternatively the last direction of change in coefficients is found by:
solve(t(x) %*% x) %*% sign(lmc)

# solution by lars package
cof_m <-(coefficients(modl)[13,]-coefficients(modl)[12,])

# last step
dist <- x %*% (cof/sum(cof*sign(lmc[])))
#dist_m <- x %*% (cof_m/sum(cof_m*sign(lmc[]))) #for comparison

# calculate back to zero
shrinking_set <- which(-lmc[]/cof>0)  #only the positive values
step_last <- min((-lmc/cof)[shrinking_set])

d_err_d_beta <- step_last*sum(dist^2)

# compare
modl[4] #all computed lambda
d_err_d_beta  # lambda last change
max(t(x) %*% y) # lambda first change
enter code here

lưu ý: ba dòng cuối cùng là quan trọng nhất

> modl[4]            # all computed lambda by algorithm
$lambda
 [1] 949.435260 889.315991 452.900969 316.074053 130.130851  88.782430  68.965221  19.981255   5.477473   5.089179
[11]   2.182250   1.310435

> d_err_d_beta       # lambda last change by calculating only last step
    xhdl 
1.310435 
> max(t(x) %*% y)    # lambda first change by max(x^T y)
[1] 949.4353

Được viết bởi StackExchangeStrike


λtối đaTôi= =

xTôiy^

βTôiy-Xβ22

β= =0βTôi||y-Xβ||22
= =||y-Xβ||2βTôi2||y-Xβ||2
= =||y-SxTôi||2S2||y-Xβ||2
= =2cor(xTôi,y)||xTôi||2||y||2
= =2xTôiy
SxTôiyy-SxTôi

β= =0λtối đa
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.