डेटा मैट्रिक्स के विकर्ण होने पर लैस्सो समस्या के लिए बंद फॉर्म समाधान


13

हमें समस्या है: इस धारणा के साथ: \ sum_ {i = 1} ^ nx_ix_i ^ टी = \ निदान (\ sigma_1 ^ 2, ..., \ sigma_d ^ 2)।

minwRd(1ni=1n(w,xiyi)2+2λ||w||1),
i=1nxixiT=diag(σ12,...,σd2).

क्या इस मामले में एक बंद-रूप समाधान है?

मेरे पास वह है:

(XTX)1=diag(σ12,...,σd2),
और इसलिए मुझे लगता है कि उत्तर है :
wj=yjmax{0,1λn|yj|},
के लिए yj=i=1nyixijσi2 , लेकिन मुझे यकीन नहीं है।

जवाबों:


9

जब XTX=I , यहां पाया गया तो मामूली संशोधनों के साथ, बंद फॉर्म लैस्सो समाधान के कार्डिनल व्युत्पन्न के माध्यम से जाने जा रहा हूं ।

मुझे लगता है कि यह सोचते हो जाएगा सभी के लिए । यह उचित है क्योंकि अगर हमारे पास एक तो यह हमें बताता है कि का th कॉलम सभी 0 है, और मुझे लगता है कि इस तरह के मामले को बाहर करना उचित है। मैं दूँगा । ध्यान दें कि इसका मतलब यह भी है कि पूर्ण रैंक है और OLS solution विशिष्ट रूप से परिभाषित है।σi2>0iσi2=0iXXTX=DXβ^

मैं आपके नोटेशन को बेहतर मिलान के लिए संशोधित करने जा रहा हूं कि मैं जिस उत्तर का संदर्भ दे रहा हूं। उस अंत तक, मैं

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

यह आपकी समस्या के समान है, लेकिन यदि आप चाहें तो मैं यहां और विवरण जोड़ सकता हूं।

@ कार्डिनल की व्युत्पत्ति के बाद, हमारे पास यह है कि हमें को हल करना होगा

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

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

यह देखते हुए कि OLS समाधान , हमारे पास वह β^=(XTX)1XTY=D1XTY

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

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

हम प्रत्येक अलग से अनुकूलन कर रहे हैं , इसलिए हम इस राशि के प्रत्येक शब्द को अलग-अलग हल कर सकते हैं। इसका मतलब है कि हमें को छोटा करने की आवश्यकता है जहां βjLj

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

लिंक किए गए उत्तर के लिए एक पूरी तरह से विनम्र तर्क के बाद, हम पाते हैं कि

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

इसके अलावा, इसलिए हमारे पास वह β^=D1XTYβ^j=XjTYσj2

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

इसलिए यह पता चला है कि एक भविष्यवक्ता बिल्कुल हो जाता है जब यह होगा कि डिजाइन मैट्रिक्स असामान्य था, न कि केवल ऑर्थोगोनल। तो हम देख सकते हैं कि इस मामले में , चर चयन से भिन्न नहीं है , लेकिन वास्तविक गुणांक की भविष्यवाणी अनुसार की जाती है।XjXTX=DIXTX=Iβ^λ

अंतिम नोट के रूप में, मैं इस समाधान को एक में बदल दूंगा, जो आपका जैसा दिखता है, जिसका अर्थ है कि हमें को पाने के लिए कुछ करके को गुणा करना होगा । यदि तो हमारे पास β^β^λ(β^λ)j0

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

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

चूँकि ।a|a|=sgn(a)

यह देखते हुए कि ठीक उसी समय जब (β^λ)j=0

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

हम देखते हैं कि हम वैकल्पिक रूप से रूप में व्यक्त कर सकते हैंβ^λ

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

तो यह आपके पास बहुत करीब है, लेकिन बिल्कुल समान नहीं था।

मैं हमेशा अच्छी तरह से ज्ञात पुस्तकालयों के खिलाफ इस तरह से व्युत्पन्न की जांच करना पसंद करता हूं, इसलिए यहां आर में एक उदाहरण है:

## 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)))
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.