Veri matrisi diyagonal olduğunda kement problemine kapalı form çözümü


13

Sorunumuz var:

minwRd(1ni=1n(w,xiyi)2+2λ||w||1),
şu varsayımla:
i=1nxixiT=diag(σ12,...,σd2).

Bu durumda kapalı bir çözüm var mı?

Ben var:

(XTX)1=diag(σ12,...,σd2),
ve bu yüzden cevap olduğunu düşünüyorum :
wj=yjmax{0,1λn|yj|},
için yj=i=1nyixijσi2 , ancak emin değilim.

Yanıtlar:


9

Ben burada , küçük değişiklikler ile XTX=I bulundu @ kapalı kardiyak kement çözüm @ cardinal türetmek geçeceğim .

Ben varsayarak olacağım herkes için . Bu bir haklı çünkü bir varsa, bu bize sütununun 0 olduğunu söyler ve böyle bir durumu hariç tutmanın makul olduğunu düşünüyorum. izin vereceğim . Bunun, tam sıralama olduğunu ve OLS çözümü benzersiz bir şekilde tanımlandığı anlamına geldiğini unutmayın .σi2>0iσi2=0iXXTX=DXβ^

Ayrıca gösterimi, atıfta bulunduğum yanıtta daha iyi eşleşecek şekilde değiştireceğim. Bu amaçla

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

Bu sorununuzla aynı, ancak isterseniz daha fazla ayrıntı ekleyebilirim.

@ Cardinal'in türevini takiben

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

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

OLS çözümünün , β^=(XTX)1XTY=D1XTY

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

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

Her bir ayrı ayrı optimize ediyoruz , böylece bu toplamın her bir terimini ayrı ayrı çözebiliriz. Bu, değerini en aza gerektiği anlamına gelir, burada βjLj

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

Bağlantılı yanıta tamamen benzer bir argümanın ardından,

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

Ayrıca, böylece β^=D1XTYβ^j=XjTYσj2

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

bu nedenle, öngörücüsünün , tasarım matrisinin yalnızca dikey değil, dikey olduğu zaman tam olarak sıfırlandığı ortaya çıkıyor . Bu nedenle, ile bu durumda , değişken seçiminin farklı olmadığını görebiliriz , ancak gerçek katsayılar öngörücü varyanslarına göre ölçeklendirilir.XjXTX=DIXTX=Iβ^λ

Son bir not olarak, bu çözümü kendinize benzeyen bir çözüm haline getireceğim, yani almak için bir şeyle . Eğer ise β^β^λ(β^λ)j0

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

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

çünkü .a|a|=sgn(a)

İfade eden tam (β^λ)j=0

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

alternatif olarak β^λ

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

Yani bu sahip olduğunuza çok yakın ama tam olarak aynı değil.

Mümkünse, bu tür türevleri mümkünse iyi bilinen kütüphanelere karşı kontrol etmek isterim, bu yüzden R'de bir örnek:

## 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)))
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.