पंक्ति वृद्धि का उपयोग करके रिज ने GLM को दंडित किया?


12

मैंने पढ़ा है कि रिज प्रतिगमन को मूल डेटा मैट्रिक्स में डेटा की पंक्तियों को जोड़कर प्राप्त किया जा सकता है, जहां प्रत्येक चर का निर्माण निर्भर चर के लिए 0 और स्वतंत्र चर के लिए k या शून्य के वर्गमूल का उपयोग करके किया जाता है । एक अतिरिक्त पंक्ति तब प्रत्येक स्वतंत्र चर के लिए जोड़ी जाती है।

मैं सोच रहा था कि क्या लॉजिस्टिक रिग्रेशन या अन्य GLM सहित सभी मामलों के लिए एक प्रमाण प्राप्त करना संभव है।


नहीं, मैंने इसे ncss.com/wp-content/themes/ncss/pdf/Procedures/NCSS/… से प्राप्त किया है और यह पृष्ठ 335-4 पर संक्षिप्त रूप से उल्लेख किया गया है
स्नोफ्लेक

1
वहाँ आप पर टिप्पणी को हटाने के बारे में क्षमा करें। मैंने तय किया कि आपका उत्तर देखने से पहले मुझे गलती हो गई और मैंने उसे हटा दिया।
Glen_b -Reinstate मोनिका

2
इस समस्या का एक मामूली सामान्यीकरण पूछा गया है और उस पर जवाब दिया गया है । क्योंकि यह इस प्रश्न के लॉजिस्टिक प्रतिगमन भाग को संबोधित नहीं करता है, मैं दो थ्रेड्स को मर्ज करने के लिए मतदान नहीं कर रहा हूं।
whuber

GLMs iteratively पुन: लोड किए गए कम से कम वर्गों का उपयोग करके फिट होते हैं, जैसा कि bwlewis.github.io/GLM में है , और इसलिए प्रत्येक पुनरावृत्ति के भीतर एक रिज दंडित GLM प्राप्त करने के लिए एक कठोर दंडित भारित कम से कम वर्गों के साथ नियमित रूप से कम से कम वर्गों के चरण को कम कर सकते हैं। वास्तव में, अनुकूली रिज दंड के साथ संयोजन में यह L0 दंडित GLMs को फिट करने के लिए उपयोग किया जाता है, जैसा कि l0ara पैकेज में है, biodatamining.biomedcentral.com/articles/10.1186/… और पत्रिकाओं को
टॉम वेन्सलेर्स

जवाबों:


14

i=1n(yixiTβ)2+λj=1pβj2

βp

p(p+1)

(yn+jxn+jTβ)2=λβj2,j=1,,p

yn+j=0xn+j,j=λxn+j,k=0xn+j,0=0

फिर

(yn+j[xn+j,0β0+xn+j,1β1+xn+j,2β2+...+xn+j,pβp])2=λβj2

यह रैखिक प्रतिगमन के लिए काम करता है। यह लॉजिस्टिक रिग्रेशन के लिए काम नहीं करता है, क्योंकि साधारण लॉजिस्टिक रिग्रेशन स्क्वायड रेजिड्यूल्स की राशि को कम नहीं करता है।

[रिज प्रतिगमन केवल ऐसी चीज नहीं है जो इस तरह के छद्म अवलोकन चाल के माध्यम से किया जा सकता है - वे कई अन्य संदर्भों में आते हैं]


धन्यवाद, मैं पहले से ही लॉजिस्टिक प्रतिगमन से सब कुछ फिर से लिखने के साथ संघर्ष कर रहा था, लेकिन मैं बस फ़ॉनी डेटा पद्धति को लागू नहीं कर सका। और मैं अपनी खुद की क्षमताओं पर पर्याप्त रूप से भरोसा नहीं कर सकता कि यह कहना असंभव है कि यह असंभव है।
स्नोफ्लेक

कम से कम मुझे नहीं लगता कि यह है। मैं संभावना फ़ंक्शन पर एक और नज़र डालूंगा।
Glen_b -Reinstate मोनिका

3
+1 अतिरिक्त संबंधित रिग्रेशन ट्रिक का उत्तर आँकड़े.स्टैकएक्सचेंज . com / a / 32753 और सांख्यिकी.स्टैकएक्सचेंज . com / a / 26187 , इंटर आलिया पर दिया जाता है
whuber

GLMs पुनरावृत्त कम से कम वर्गों का उपयोग करते हुए फिट होते हैं, हालांकि, bwlewis.github.io/GLM के रूप में , और इसलिए प्रत्येक पुनरावृत्ति के भीतर एक रिजित दंडित GLM प्राप्त करने के लिए एक कठोर दंडित कम से कम वर्गों के साथ नियमित रूप से कम से कम वर्गों के चरण को कम कर सकते हैं। वास्तव में, अनुकूली रिज दंड के साथ संयोजन में यह L0 दंडित GLMs को फिट करने के लिए उपयोग किया जाता है, जैसा कि l0ara पैकेज में है, biodatamining.biomedcentral.com/articles/10.1186/… और पत्रिकाओं को
टॉम वेन्सलेर्स

@TomWenseleers धन्यवाद, हाँ, यह पूरी समझ में आता है
Glen_b -Reinstate Monica

0

जीएलएम के लिए वास्तव में यह नुस्खा मुश्किल नहीं है क्योंकि जीएलएम आमतौर पर पुनरावृत्त कम से कम वर्गों का उपयोग करके फिट होते हैं । इसलिए, प्रत्येक पुनरावृत्ति के भीतर, एक रिज दंडित GLM प्राप्त करने के लिए एक रिज दंडित भारित कम से कम वर्ग कदम के साथ नियमित रूप से कम से कम वर्गों के कदम को कम कर सकते हैं। वास्तव में, अनुकूली रिज दंड के साथ संयोजन में यह नुस्खा L0 दंडित GLMs (उर्फ सबसे अच्छा सबसेट, यानी GLMs, जहां गैर-अभिमानी गुणांक की कुल संख्या दंडित की जाती है) को फिट करने के लिए उपयोग किया जाता है। इस उदाहरण के लिए लागू किया गया है l0ara पैकेज , देखने के इस पत्र और यह एक जानकारी के लिए।

यह भी ध्यान देने योग्य है कि एक नियमित रिज प्रतिगमन को हल करने का सबसे तेज़ बंद-रूप तरीका उपयोग कर रहा है

lmridge_solve = function (X, y, lambda, intercept = TRUE) {
  if (intercept) {
    lambdas = c(0, rep(lambda, ncol(X)))
    X = cbind(1, X)
  } else { lambdas = rep(lambda, ncol(X)) }
  solve(crossprod(X) + diag(lambdas), crossprod(X, y))[, 1]
}

मामले के लिए जहां n>=p, या का उपयोग कर

lmridge_solve_largep = function (X, Y, lambda) (t(X) %*% solve(tcrossprod(X)+lambda*diag(nrow(X)), Y))[,1]

जब p>nऔर बिना अवरोधन के एक मॉडल के लिए।

यह पंक्ति वृद्धि नुस्खा का उपयोग करने की तुलना में तेज़ है , अर्थात कर रहा है

lmridge_rbind = function (X, y, lambda, intercept = TRUE) {
  if (intercept) {
    lambdas = c(0, rep(lambda, ncol(X)))
    X = cbind(1, X)
  } else { lambdas = rep(lambda, ncol(X)) }
  qr.solve(rbind(X, diag(sqrt(lambdas))), c(y, rep(0, ncol(X))))
}

यदि आप अपने फिट किए गए गुणांक पर nonnegativity बाधाओं की जरूरत होती है तो आप बस कर सकते हैं

library(nnls)

nnlmridge_solve = function (X, y, lambda, intercept = TRUE) {
  if (intercept) {
    lambdas = c(0, rep(lambda, ncol(X)))
    X = cbind(1, X)
  } else { lambdas = rep(lambda, ncol(X)) }
  nnls(A=crossprod(X)+diag(lambdas), b=crossprod(X,Y))$x
}

जो तब की तुलना में थोड़ा अधिक सटीक परिणाम देता है

nnlmridge_rbind = function (X, y, lambda, intercept = TRUE) {
  if (intercept) {
    lambdas = c(0, rep(lambda, ncol(X)))
    X = cbind(1, X)
  } else { lambdas = rep(lambda, ncol(X)) }
  nnls(A=rbind(X,diag(sqrt(lambdas))), b=c(Y,rep(0,ncol(X))))$x 
}

(और कड़ाई से केवल समाधान ही nnls(A=crossprod(X)+diag(lambdas), b=crossprod(X,Y))$x सही है तब बोलना )।

मुझे अभी तक यह पता नहीं चला है कि नॉनएग्नेस्टी कॉन्स्ट्रेन्ड केस को मामले के लिए और कैसे अनुकूलित किया जा सकता है p > n- मुझे बताएं कि क्या किसी को पता होगा कि यह कैसे करना है ... [ lmridge_nnls_largep = function (X, Y, lambda) t(X) %*% nnls(A=tcrossprod(X)+lambda*diag(nrow(X)), b=Y)$xकाम नहीं करता]

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