Mathematical-Statistics
數據矩陣為對角線時 lasso 問題的閉式解
我們有問題:
假設: 在這種情況下是否有封閉形式的解決方案?
我有這個:
所以我認為答案是:為了,但我不確定。
我將通過@cardinal 推導封閉形式套索解決方案時,在這裡找到,稍作修改。
我會假設對所有人. 這是合理的,因為如果我們有一個那麼這告訴我們第 列都是0,我認為排除這種情況是合理的。我會讓. 請注意,這也意味著是滿秩和 OLS 解是唯一定義的。
我還將修改您的符號以更好地匹配我引用的答案。為此,我將解決
這與您的問題相同,但如果您願意,我可以在此處添加更多詳細信息。
根據@cardinal 的推導,我們有需要解決的問題
注意到 OLS 解決方案是, 我們有
我們正在優化每個分開,所以我們可以分開解決這個總和的每一項。這意味著我們需要最小化在哪裡
在對鏈接答案進行完全類似的論證之後,我們發現
此外,所以我們有
所以事實證明,一個預測器如果設計矩陣是正交的,而不僅僅是正交的,那麼它會在什麼時候被清零。所以我們可以看到在這種情況下, 變量選擇與 if 沒有什麼不同, 但實際係數根據預測變量進行縮放。
最後一點,我將把這個解決方案變成一個類似於你的解決方案,這意味著我們需要乘以通過某事得到. 如果那麼我們就有了
自從.
注意到究竟是什麼時候
我們看到我們可以替代地表達作為
因此,這與您所擁有的非常接近,但並不完全相同。
如果可能的話,我總是喜歡根據知名庫檢查這樣的派生,所以這是 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)))