आप जो अंतर देख रहे हैं, वह अवलोकनों की संख्या द्वारा N के अतिरिक्त विभाजन के कारण है, जो GLMNET अपने उद्देश्य फ़ंक्शन में उपयोग करता है और इसके नमूने मानक विचलन द्वारा Y के निहित मानकीकरण का उपयोग नीचे दिखाए गए अनुसार करता है।
12 एन∥∥∥yरोंy- एक्सβ∥∥∥22+ Λ ∥ बीटा∥22/ २
जहां हम का उपयोग के स्थान पर के लिए ,
1 / ( n - 1 ) रों y रों y = Σ मैं ( y मैं - ˉ y ) 21 / एन1 / ( एन - 1 )रोंy
रोंy= ∑मैं( yमैं- y¯)2n
बीटा के संबंध में विभेद करके, समीकरण को शून्य पर सेट करें,
एक्सटीएक्सβ- एक्सटीyरोंy+ एनλ β= 0
और बीटा के लिए हल करना, हम अनुमान प्राप्त करते हैं,
β~जी एल एमएनएटी= ( एक्स)टीएक्स+ एनλ मैंपी)- 1एक्सटीyरोंy
Y के मूल मीट्रिक पर अनुमानों (और उनके अनुरूप दंड) को पुनर्प्राप्त करने के लिए, GLMNET ने द्वारा दोनों अनुमानों और लंबों को गुणा किया और इन परिणामों को उपयोगकर्ता को लौटाता है,रोंy
β^जी एल एमएनएटी= एसyβ~जी एल एमएनएटी= ( एक्स)टीएक्स+ एनλ मैंपी)- 1एक्सटीy
λयू एन एस टी डी।= एसyλ
रिज के प्रतिगमन के मानक व्युत्पन्न के साथ इस समाधान की तुलना करें।
β^= ( एक्स)टीएक्स+ λ मैंपी)- 1एक्सटीy
ध्यान दें कि को एक अतिरिक्त कारक द्वारा स्केल किया जाता है। इसके अतिरिक्त, जब हम या फ़ंक्शन का उपयोग करते हैं, तो जुर्माना द्वारा रूप से बढ़ाया जा रहा है । यह कहना है, जब हम इन कार्यों का उपयोग कुछ लिए गुणांक अनुमान प्राप्त करने के लिए करते हैं, तो हम प्रभावी रूप से लिए अनुमान प्राप्त कर रहे हैं ।λpredict()
coef()
1 / एसyλ*λ = λ*/ एसy
इन अवलोकनों के आधार पर, GLMNET में उपयोग किए जाने वाले जुर्माने को एक कारक द्वारा बढ़ाया जाना चाहिए ।रोंy/ एन
set.seed(123)
n <- 1000
p <- 100
X <- matrix(rnorm(n*p,0,1),n,p)
beta <- rnorm(p,0,1)
Y <- X%*%beta+rnorm(n,0,0.5)
sd_y <- sqrt(var(Y)*(n-1)/n)[1,1]
beta1 <- solve(t(X)%*%X+10*diag(p),t(X)%*%(Y))[,1]
fit_glmnet <- glmnet(X,Y, alpha=0, standardize = F, intercept = FALSE, thresh = 1e-20)
beta2 <- as.vector(coef(fit_glmnet, s = sd_y*10/n, exact = TRUE))[-1]
cbind(beta1[1:10], beta2[1:10])
[,1] [,2]
[1,] 0.23793862 0.23793862
[2,] 1.81859695 1.81859695
[3,] -0.06000195 -0.06000195
[4,] -0.04958695 -0.04958695
[5,] 0.41870613 0.41870613
[6,] 1.30244151 1.30244151
[7,] 0.06566168 0.06566168
[8,] 0.44634038 0.44634038
[9,] 0.86477108 0.86477108
[10,] -2.47535340 -2.47535340
परिणाम एक अवरोधन और मानकीकृत एक्स चर के समावेश के लिए सामान्यीकृत होते हैं। हम एक मानकीकृत X मैट्रिक्स को संशोधित करते हैं, जिनमें से एक स्तंभ और विकर्ण मैट्रिक्स को शामिल करने के लिए एक अतिरिक्त शून्य प्रविष्टि है [1,1] स्थिति में (अर्थात अवरोधन को दंडित न करें)। फिर आप उनके संबंधित नमूना मानक विचलन द्वारा अनुमानों को अस्थिर कर सकते हैं (फिर से सुनिश्चित करें कि आप मानक विचलन की गणना करते समय 1 / n का उपयोग कर रहे हैं)।
β^j= βj~रोंएक्सj
β^0= β0~- एक्स¯टीβ^
mean_x <- colMeans(X)
sd_x <- sqrt(apply(X,2,var)*(n-1)/n)
X_scaled <- matrix(NA, nrow = n, ncol = p)
for(i in 1:p){
X_scaled[,i] <- (X[,i] - mean_x[i])/sd_x[i]
}
X_scaled_ones <- cbind(rep(1,n), X_scaled)
beta3 <- solve(t(X_scaled_ones)%*%X_scaled_ones+1000*diag(x = c(0, rep(1,p))),t(X_scaled_ones)%*%(Y))[,1]
beta3 <- c(beta3[1] - crossprod(mean_x,beta3[-1]/sd_x), beta3[-1]/sd_x)
fit_glmnet2 <- glmnet(X,Y, alpha=0, thresh = 1e-20)
beta4 <- as.vector(coef(fit_glmnet2, s = sd_y*1000/n, exact = TRUE))
cbind(beta3[1:10], beta4[1:10])
[,1] [,2]
[1,] 0.24534485 0.24534485
[2,] 0.17661130 0.17661130
[3,] 0.86993230 0.86993230
[4,] -0.12449217 -0.12449217
[5,] -0.06410361 -0.06410361
[6,] 0.17568987 0.17568987
[7,] 0.59773230 0.59773230
[8,] 0.06594704 0.06594704
[9,] 0.22860655 0.22860655
[10,] 0.33254206 0.33254206
बिना किसी अवरोधक के मानकीकृत X दिखाने के लिए जोड़ा गया कोड:
set.seed(123)
n <- 1000
p <- 100
X <- matrix(rnorm(n*p,0,1),n,p)
beta <- rnorm(p,0,1)
Y <- X%*%beta+rnorm(n,0,0.5)
sd_y <- sqrt(var(Y)*(n-1)/n)[1,1]
mean_x <- colMeans(X)
sd_x <- sqrt(apply(X,2,var)*(n-1)/n)
X_scaled <- matrix(NA, nrow = n, ncol = p)
for(i in 1:p){
X_scaled[,i] <- (X[,i] - mean_x[i])/sd_x[i]
}
beta1 <- solve(t(X_scaled)%*%X_scaled+10*diag(p),t(X_scaled)%*%(Y))[,1]
fit_glmnet <- glmnet(X_scaled,Y, alpha=0, standardize = F, intercept =
FALSE, thresh = 1e-20)
beta2 <- as.vector(coef(fit_glmnet, s = sd_y*10/n, exact = TRUE))[-1]
cbind(beta1[1:10], beta2[1:10])
[,1] [,2]
[1,] 0.23560948 0.23560948
[2,] 1.83469846 1.83469846
[3,] -0.05827086 -0.05827086
[4,] -0.04927314 -0.04927314
[5,] 0.41871870 0.41871870
[6,] 1.28969361 1.28969361
[7,] 0.06552927 0.06552927
[8,] 0.44576008 0.44576008
[9,] 0.90156795 0.90156795
[10,] -2.43163420 -2.43163420