Ướ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(β)g(β)=12n||y−Xβ||22=||β||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.64−0.48⎤⎦⎥+⎡⎣⎢ϵ1ϵ2ϵ3⎤⎦⎥
và chúng tôi thu nhỏ với ràng buộcϵ21+ϵ22+ϵ23abs(β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:
- 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
- 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
- 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||y−Xβ||22−λ||β||1)±∂βi=0
dẫn đến
λmax=(12n∂(||y−Xβ||22±∂βi)(||β||1)±∂βi)=±∂(12n||y−Xβ||22∂βi=±1nxi⋅y
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∑β⃗ last⋅sign(β^)
Để 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
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
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
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