Jawaban:
Saya akan melalui turunan @ cardinal dari solusi laso bentuk tertutup ketika , ditemukan di sini , dengan sedikit modifikasi.
Saya akan mengasumsikan bahwa untuk semua . Hal ini dibenarkan karena jika kita memiliki maka ini memberitahu kita bahwa th kolom adalah semua 0, dan saya pikir itu masuk akal untuk mengecualikan kasus seperti itu. Aku akan membiarkan . Perhatikan bahwa ini juga berarti bahwa adalah peringkat penuh dan solusi OLS didefinisikan secara unik.
Saya juga akan memodifikasi notasi Anda agar lebih cocok dengan yang ada di jawaban yang saya referensikan. Untuk itu, saya akan menyelesaikan
Ini identik dengan masalah Anda, tetapi saya dapat menambahkan detail lebih lanjut di sini jika Anda mau.
Mengikuti derivasi @ cardinal, kita harus menyelesaikan
Memperhatikan bahwa solusi OLS adalah , kami memiliki β λ=argmin - β TDβ+1
Kami mengoptimalkan setiap secara terpisah, sehingga kami dapat menyelesaikan setiap istilah dari jumlah ini secara terpisah. Ini berarti kita perlu meminimalkan mana L j L j = - β j β j σ 2 j + σ 2 j
Mengikuti argumen yang sepenuhnya analog dengan jawaban yang ditautkan, kami menemukan bahwa
Lebih lanjut, jadi kita memiliki (| ß j|-λ
sehingga ternyata prediktor akan memusatkan perhatian tepat ketika akan jika matriks desain ortonormal, bukan hanya ortogonal. Jadi kita dapat melihat bahwa dalam kasus ini dengan , pemilihan variabel tidak berbeda dari jika , tetapi koefisien aktual diskalakan sesuai dengan varian prediktor.X T X = D ≠ I X T X = I ß λ
Sebagai catatan terakhir, saya akan mengubah solusi ini menjadi yang menyerupai milik Anda yang berarti kita perlu mengalikan dengan sesuatu untuk mendapatkan . Jika maka kita memilikinya
karena .
Memperhatikan itu tepat kapan
kita melihat bahwa kita dapat secara alternatif mengekspresikan sebagai
Jadi ini sangat dekat dengan apa yang Anda miliki tetapi tidak persis sama.
Saya selalu ingin memeriksa derivasi seperti ini terhadap perpustakaan terkenal jika memungkinkan, jadi inilah contoh dalam 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)))