मैं निम्नलिखित कोड के साथ R में पैकेज 'लार्स' का उपयोग कर रहा हूं:
> library(lars)
> set.seed(3)
> n <- 1000
> x1 <- rnorm(n)
> x2 <- x1+rnorm(n)*0.5
> x3 <- rnorm(n)
> x4 <- rnorm(n)
> x5 <- rexp(n)
> y <- 5*x1 + 4*x2 + 2*x3 + 7*x4 + rnorm(n)
> x <- cbind(x1,x2,x3,x4,x5)
> cor(cbind(y,x))
y x1 x2 x3 x4 x5
y 1.00000000 0.74678534 0.743536093 0.210757777 0.59218321 0.03943133
x1 0.74678534 1.00000000 0.892113559 0.015302566 -0.03040464 0.04952222
x2 0.74353609 0.89211356 1.000000000 -0.003146131 -0.02172854 0.05703270
x3 0.21075778 0.01530257 -0.003146131 1.000000000 0.05437726 0.01449142
x4 0.59218321 -0.03040464 -0.021728535 0.054377256 1.00000000 -0.02166716
x5 0.03943133 0.04952222 0.057032700 0.014491422 -0.02166716 1.00000000
> m <- lars(x,y,"step",trace=T)
Forward Stepwise sequence
Computing X'X .....
LARS Step 1 : Variable 1 added
LARS Step 2 : Variable 4 added
LARS Step 3 : Variable 3 added
LARS Step 4 : Variable 2 added
LARS Step 5 : Variable 5 added
Computing residuals, RSS etc .....
मुझे 5 निरंतर चर के साथ एक डाटासेट मिला है और मैं एक एकल (निर्भर) चर y के लिए एक मॉडल फिट करने की कोशिश कर रहा हूं। मेरे दो भविष्यवक्ता एक-दूसरे (X1, x2) के साथ अत्यधिक सहसंबद्ध हैं।
जैसा कि आप ऊपर के उदाहरण में देख सकते हैं कि 'स्टेप वाइज' विकल्प के साथ लार्स फ़ंक्शन पहले उस चर को चुनता है जो y के साथ सबसे अधिक सहसंबद्ध है। मॉडल में प्रवेश करने के लिए अगला चर वह है जो अवशिष्ट के साथ सबसे अधिक सहसंबद्ध है। वास्तव में, यह x4 है:
> round((cor(cbind(resid(lm(y~x1)),x))[1,3:6]),4)
x2 x3 x4 x5
0.1163 0.2997 0.9246 0.0037
अब, अगर मैं 'लैस्सो' विकल्प करता हूं:
> m <- lars(x,y,"lasso",trace=T)
LASSO sequence
Computing X'X ....
LARS Step 1 : Variable 1 added
LARS Step 2 : Variable 2 added
LARS Step 3 : Variable 4 added
LARS Step 4 : Variable 3 added
LARS Step 5 : Variable 5 added
यह पहले दो चरणों में मॉडल के सहसंबंधित चर को जोड़ता है। कई पत्र-पत्रिकाओं में मैंने जो पढ़ा है, उसके विपरीत है। तब अधिकांश का कहना है कि यदि चर का एक समूह है, जिसके बीच सहसंबंध बहुत अधिक हैं, तो 'लास्सो' समूह से केवल एक चर का चयन यादृच्छिक रूप से करता है।
क्या कोई इस व्यवहार का उदाहरण दे सकता है? या समझाएं, मेरे चर X1, x2 को एक के बाद एक (एक साथ) मॉडल में क्यों जोड़ा जाता है?
R
कॉल को देखते हैं जिसे ओपी बना रहा है और संबंधित आउटपुट वह प्रदान करता है, तो आप देखेंगे कि वह वास्तव में, लासो का उपयोग कर रहा है। जैसा कि मुझे यकीन है कि आप जानते हैं, लार्स एल्गोरिथ्म का एक छोटा सा गला लसो के नियमितीकरण पथ को जन्म देता है।